自动化立体仓库 - WMS系统
32a905fbf1daeac74cbd573e5b841709c44955c2..4d0d963bb19c7eb5860257eddd112e2592e983aa
2025-05-10 ZY
单据对接
4d0d96 对比 | 目录
2025-05-10 ZY
读取第二数据源
dc84bb 对比 | 目录
14个文件已修改
118 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/OrderDetl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/DetlDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/SendUtil.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/service/impl/NccScZkmxbWmsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/handler/BaseDataHandler.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccSaleXsfhmxWmsMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccScZkmxbWmsMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/docType/docType.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/docType/docType.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -353,6 +353,10 @@
    @TableField("box_type3")
    private String boxType3 = "1";
    @ApiModelProperty(value= "备注")
    @TableField("remark")
    private String remark;
    public OrderDetl() {}
    public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double manLength, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -266,6 +266,7 @@
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getBrand(), detail.getStandby1(), detail.getStandby2(), detail.getStandby3(), detail.getLineNumber(),
                    detail.getBoxType1(), detail.getBoxType2(), detail.getBoxType3(), detail.getAnfme());
            dto.setRemark(detail.getRemark());
            if (DetlDto.hasLineNumber(list, dto)) {
                DetlDto detlDto = DetlDto.findLineNumber(list, dto.getMatnr(), dto.getBatch(), dto.getBrand(), dto.getStandby1(), dto.getStandby2(), dto.getStandby3(), dto.getLineNumber(),
                        dto.getBoxType1(), dto.getBoxType2(), dto.getBoxType3());
@@ -298,6 +299,7 @@
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            orderDetl.setPakinPakoutStatus(2);
            orderDetl.setRemark(detlDto.getRemark());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -10,7 +10,9 @@
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.ReportToThirdService;
import com.zy.common.utils.Synchro;
import com.zy.nc.SendUtil;
import com.zy.nc.entity.NccSaleXsfhmxWms;
import com.zy.nc.util.NcResultMessage;
import com.zy.nc.vo.SaleOutBodyVO;
import com.zy.nc.vo.SaleOutHeadVO;
@@ -19,6 +21,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -49,23 +52,38 @@
        NcResultMessage response = null;
        try {
            switch (order.getDocType().toString()) {
                case "销售发货":
                case "35":
                    //组装对象数据
                    Map<String, Object> data = new HashMap<String, Object>();
                    SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO();
                    saleOutHeadVO.setPk_org("FYT");
                    saleOutHeadVO.setCwarehouseid("6101");
                    SaleOutBodyVO saleOutBodyVO = null;
                    List<SaleOutBodyVO> saleOutBodyVOList = new ArrayList<>();
                    for (OrderDetl orderDetl : orderDetls) {
                        saleOutBodyVO = new SaleOutBodyVO();
                        saleOutBodyVO.setCsourcebillhid("1001A1100000027XNSH2");
                        saleOutBodyVO.setCsourcebillbid("1001A1100000027YFC8U");
                        saleOutBodyVO.setCsourcetype("4331-01");
                        String remark = orderDetl.getRemark();
                        if (!Cools.isEmpty(remark)) {
                            NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                            Synchro.Copy(nccSaleXsfhmxWms, saleOutBodyVO);
                            saleOutBodyVO.setCsourcetype("4331-01");
                            saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                            saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                        }
                        saleOutBodyVO.setNnum(orderDetl.getQty());
                        saleOutBodyVOList.add(saleOutBodyVO);
                    }
                    data.put("saleOutHeadVO", saleOutHeadVO);
                    data.put("saleOutBodyVO", saleOutBodyVO);
                    saleOutHeadVO.setVdef2("");
                    saleOutHeadVO.setVdef3("");
                    saleOutHeadVO.setVdef4("");
                    saleOutHeadVO.setVdef7("");
                    saleOutHeadVO.setVdef8("");
                    saleOutHeadVO.setVdef13("");
                    saleOutHeadVO.setVdef14("");
                    data.put("SaleOutHeadVO", saleOutHeadVO);
                    data.put("SaleOutBodyVO", saleOutBodyVOList);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + port, saveRefDelivery, JSONObject.toJSONString(data));
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(data));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("response:{}", response);
                        http = true;
@@ -91,6 +109,7 @@
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new CoolException("调用接口报错,请联系管理员");
        } finally {
            reportApiLog(response, order.getDocType$(), nyncIp, saveRefDelivery);
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -104,9 +104,9 @@
    @Scheduled(cron = "0/30 * * * * ? ")
    @Async("orderThreadPool")
    public void completeAndReportOrderReport() {
        if (!ErpReportOld){
            return;
        }
//        if (!ErpReportOld){
//            return;
//        }
        String erpReport = Parameter.get().getErpReport();
        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
            List<Order> orders = orderService.selectComplete();
src/main/java/com/zy/common/model/DetlDto.java
@@ -19,6 +19,8 @@
    private String matnr;
    private String remark;
    private String batch = "";
    private String brand = "";
    private String standby1 = "";
src/main/java/com/zy/nc/SendUtil.java
@@ -63,7 +63,7 @@
    public static void main(String[] args) {
        try {
//            // 初始化数据
            init();
//            // 请求token
            if (token == null) {
                token = getToken();
@@ -92,7 +92,7 @@
        }
        // token转对象,获取api访问所用token和secret
        NcResultMessage returnData = JSONObject.parseObject(token, NcResultMessage.class);
        if (returnData.isSuccess()) {
        if (token != null && returnData.isSuccess()) {
            JSONObject data = JSONObject.parseObject(returnData.getData().toString());
            String access_token = (String) data.get("access_token");
            String security_key = (String) data.get("security_key");
@@ -105,7 +105,8 @@
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
                data = JSONObject.parseObject(token.getBytes(), NcResultMessage.class);
                returnData = JSONObject.parseObject(token, NcResultMessage.class);
                data = JSONObject.parseObject(returnData.getData().toString());
                access_token = (String) data.get("access_token");
                security_key = (String) data.get("security_key");
                refresh_token = (String) data.get("refresh_token");
@@ -147,6 +148,7 @@
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            System.out.println("【json】:" + json);
            System.out.println("【RESULT】:" + result);
            System.out.println("result解密:" + result2);
            return JSONObject.parseObject(result2, NcResultMessage.class);
@@ -161,6 +163,9 @@
     * @throws Exception
     */
    private static String getToken() throws Exception {
        if (grant_type == null) {
            init();
        }
        String token = null;
        if ("password".equals(grant_type)) {
            // 密码模式
@@ -392,7 +397,7 @@
            result = new String(temp.toString().getBytes("utf-8"), ecod);
            System.out.println(result);
        } catch (Exception e) {
            System.out.println(e);
            e.printStackTrace();
            throw e;
        } finally {
            if (null != bufferedReader) {
src/main/java/com/zy/nc/service/impl/NccScZkmxbWmsServiceImpl.java
@@ -20,6 +20,6 @@
    @Override
    public List<String> selectZk() {
        return Collections.emptyList();
        return this.baseMapper.selectZk();
    }
}
src/main/java/com/zy/nc/task/handler/BaseDataHandler.java
@@ -151,17 +151,26 @@
        Page<NccJcRyWms> wmsFlag = nccJcRyWmsService.selectPage(page, new EntityWrapper<NccJcRyWms>().ne("wms_flag", 1).eq("sszzmc", "浙江福莱新材料股份有限公司烟台分公司"));
        for (NccJcRyWms nccJcRyWms : wmsFlag.getRecords()) {
            User user = userService.selectOne(new EntityWrapper<User>().eq("username", nccJcRyWms.getRybm()));
            nccJcRyWms.setWmsFlag(1);
            if (user == null) {
                user = new User();
                user.setUsername(nccJcRyWms.getRybm());
                user.setNickname(nccJcRyWms.getRymc());
                user.setRoleId(12L);
                user.setStatus(1);
                user.setCreateTime(new Date());
                userService.insert(user);
            }else {
                user.setUsername(nccJcRyWms.getRybm());
                user.setNickname(nccJcRyWms.getRymc());
                user.setRoleId(12L);
                user.setStatus(1);
                userService.updateById(user);
            }
            nccJcRyWms.setWmsFlag(1);
            nccJcRyWmsService.updateById(nccJcRyWms);
            log.info("NccJcRyWms数据:{}", JSONObject.toJSON(nccJcRyWms));
        }
        nccJcRyWmsService.updateBatchById(wmsFlag.getRecords());
        return SUCCESS;
    }
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java
@@ -2,7 +2,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.service.OpenService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
@@ -39,8 +39,8 @@
    public ReturnT<String> start1() {
        List<String> Ids = nccSaleXsfhmxWmsService.selectXsfh();
        for (String id : Ids) {
            List<NccSaleXsfhmxWms> wmsFlag = nccSaleXsfhmxWmsService.selectList(new EntityWrapper<NccSaleXsfhmxWms>().eq("cdeliveryid", id).ne("wms_flag", 1).eq("fstatusflag", 2));
            OpenOrderPakinParam param = new OpenOrderPakinParam();
            List<NccSaleXsfhmxWms> wmsFlag = nccSaleXsfhmxWmsService.selectList(new EntityWrapper<NccSaleXsfhmxWms>().eq("vbillcode", id).ne("wms_flag", 1).eq("fstatusflag", 2));
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("销售发货");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
@@ -51,14 +51,16 @@
                    detlDto.setMatnr(nccSaleXsfhmxWms.getWlbm());
                    detlDto.setAnfme(nccSaleXsfhmxWms.getNastnum());
                    detlDto.setLineNumber(i);
                    nccSaleXsfhmxWms.setWmsFlag(1);
                    detlDto.setRemark(JSONObject.toJSONString(nccSaleXsfhmxWms));
                    orderDetails.add(detlDto);
                    log.info("NccSaleXsfhmxWms数据:{}", JSONObject.toJSON(nccSaleXsfhmxWms));
                    i++;
                }
                nccSaleXsfhmxWms.setWmsFlag(1);
            }
            param.setOrderNo(id);
            param.setOrderDetails(orderDetails);
            openService.pakinOrderCreate(param);
            openService.pakoutOrderCreate(param);
            nccSaleXsfhmxWmsService.updateBatchById(wmsFlag);
        }
        return SUCCESS;
@@ -72,12 +74,12 @@
    public ReturnT<String> start2() {
        List<String> strings = nccScZkmxbWmsService.selectZk();
        for (String string : strings) {
            OpenOrderPakinParam param = new OpenOrderPakinParam();
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("转库");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            List<NccScZkmxbWms> wmsFlag = nccScZkmxbWmsService.selectList(new EntityWrapper<NccScZkmxbWms>().eq("cdeliveryid", string).ne("wms_flag", 1));
            List<NccScZkmxbWms> wmsFlag = nccScZkmxbWmsService.selectList(new EntityWrapper<NccScZkmxbWms>().eq("vbillcode", string).ne("wms_flag", 1));
            for (NccScZkmxbWms nccScZkmxbWms : wmsFlag) {
                log.info("NccScZkmxbWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
                if (nccScZkmxbWms.getDjzt() == 2 && nccScZkmxbWms.getBdr() == 0 && nccScZkmxbWms.getDr() == 0) {
@@ -86,13 +88,14 @@
                    detlDto.setAnfme(nccScZkmxbWms.getYingzzsl());
                    detlDto.setBatch(nccScZkmxbWms.getVbatchcode());
                    detlDto.setLineNumber(i);
                    nccScZkmxbWms.setWmsFlag(1);
                    orderDetails.add(detlDto);
                    i++;
                }
                nccScZkmxbWms.setWmsFlag(1);
            }
            param.setOrderNo(string);
            param.setOrderDetails(orderDetails);
            openService.pakinOrderCreate(param);
            openService.pakoutOrderCreate(param);
            nccScZkmxbWmsService.updateBatchById(wmsFlag);
        }
        return SUCCESS;
src/main/resources/application.yml
@@ -79,8 +79,8 @@
# 用友NC对接
NYNC:
  ip:
  port:
  ip: http://192.168.5.200
  port: 1105
  pageSize: 500
  #1.销售出库单参照发货单新增
  saveRefDelivery: /nccloud/api/ic/saleout/saveRefDelivery
src/main/resources/mapper/nc/NccSaleXsfhmxWmsMapper.xml
@@ -101,8 +101,8 @@
    <select id="selectXsfh" resultType="java.lang.String">
        select distinct
            CDELIVERYID
        from ncc_sale_xsfhmx_wms where wms_flag != 1 and fstatusflag = 2 limit 100
        select distinct VBILLCODE
        from ncc_sale_xsfhmx_wms
        where wms_flag != 1 and fstatusflag = 2 limit 100
    </select>
</mapper>
src/main/resources/mapper/nc/NccScZkmxbWmsMapper.xml
@@ -76,8 +76,8 @@
    </sql>
    <select id="selectZk" resultType="java.lang.String">
        select distinct
            CDELIVERYID
        from ncc_sale_xsfhmx_wms where wms_flag != 1 and fstatusflag = 2 limit 100
        select distinct VBILLCODE
        from ncc_sale_xsfhmx_wms
        where wms_flag != 1 and fstatusflag = 2 limit 100
    </select>
</mapper>
src/main/webapp/static/js/docType/docType.js
@@ -16,8 +16,8 @@
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/docType/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        limit: 100,
        limits: [ 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
src/main/webapp/views/docType/docType.html
@@ -70,7 +70,7 @@
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/docType/docType.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/docType/docType.js?v=1" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">