自动化立体仓库 - WMS系统
ZY
2024-10-11 173c2665d9d53534489a5374abe855dad19b86a6
入库:添加仓库编码逻辑
9个文件已修改
145 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/AgvLocMast.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/Order.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/AgvLocMast.java
@@ -41,7 +41,7 @@
    @TableField("whs_type")
    private Long whsType;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value= "erp仓库编码")
    @TableField("plt_type")
    private Integer pltType;
src/main/java/com/zy/asrs/entity/Order.java
@@ -261,6 +261,10 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    @ApiModelProperty(value= "erp仓库编码")
    @TableField("plt_type")
    private Integer pltType;
    public Order() {}
    public Order(String uuid,String orderNo,String orderTime,Long docType,Long itemId,String itemName,Long allotItemId,String defNumber,String number,Long cstmr,String cstmrName,String tel,String operMemb,Double totalFee,Double discount,Double discountFee,Double otherFee,Double actFee,Integer payType,String salesman,Integer accountDay,Integer postFeeType,Double postFee,Date payTime,Date sendTime,String shipName,String shipCode,Long settle,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
src/main/java/com/zy/asrs/service/OrderService.java
@@ -1,10 +1,7 @@
package com.zy.asrs.service;
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.*;
import com.zy.common.model.OrderMergeVo;
import java.util.List;
@@ -17,7 +14,7 @@
    boolean updateSettle(Long orderId, Long settle, Long userId);
    void checkComplete(String orderNo);
    void checkComplete(String orderNo, String locNo);
    boolean saveHandlerOrder(Boolean pakin, WrkMast wrkMast, List<WrkDetl> wrkDetls);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -526,7 +526,7 @@
        //删除入库通知档
        waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet));
        orderService.checkComplete(waitPakinList.get(0).getOrderNo());
        orderService.checkComplete(waitPakinList.get(0).getOrderNo(),locNo);
    }
@@ -596,7 +596,7 @@
        manLocDetlService.update(manLocDetl,manLocDetlWrapper);
        //检测订单是否完成
        orderService.checkComplete(param.getOrderNo());
        orderService.checkComplete(param.getOrderNo(),param.getLocNo());
    }
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -11,9 +11,11 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.entity.param.ReportErpParam;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.task.handler.OrderSyncHandler;
import com.zy.common.model.DetlDto;
import com.zy.common.model.OrderDto;
import com.zy.common.model.OrderMergeVo;
@@ -25,7 +27,8 @@
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service("orderService")
@@ -58,6 +61,12 @@
    @Autowired
    private ManPakOutService manPakOutService;
    @Autowired
    private OrderSyncHandler orderSyncHandler;
    @Autowired
    private AgvLocMastService agvLocMastService;
    @Value("${u8.url}")
    private String url;
@@ -84,9 +93,9 @@
    }
    @Override
    public void checkComplete(String orderNo) {
    public void checkComplete(String orderNo, String locNo) {
        Order order = this.selectByNo(orderNo);
        if(Cools.isEmpty(order)){
        if (Cools.isEmpty(order)) {
            return;
        }
        if (order.getSettle() >= 4L) {
@@ -101,20 +110,27 @@
                break;
            }
        }
        //仓库编码
        if (Cools.isEmpty(order.getPltType())) {
            AgvLocMast locNo1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
            order.setPltType(locNo1.getPltType());
            super.updateById(order);
        }
        // 如果 作业数量等于单据总数量 && 工作明细档中无该单据的数据 && AGV工作明细档中无该单据的数据
        int count = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo));
        boolean wrkDeltExist = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) < 1;
        boolean agvWrkDetlExist = agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().like("order_no",orderNo)) < 1;
        boolean waitPakinExist = agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().like("order_no",orderNo)) < 1;
        boolean agvWrkDetlExist = agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().like("order_no", orderNo)) < 1;
        boolean waitPakinExist = agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().like("order_no", orderNo)) < 1;
        ManPakOut manPakOut = manPakOutService.selectByOrderWithName(orderNo);
        boolean manPakoutExist = Cools.isEmpty(manPakOut) ||  (manPakOut.getPayment() != null && manPakOut.getPayment() == 1);
        boolean manPakoutExist = Cools.isEmpty(manPakOut) || (manPakOut.getPayment() != null && manPakOut.getPayment() == 1);
        if (complete && wrkDeltExist && agvWrkDetlExist && waitPakinExist && manPakoutExist) {
            if (!this.updateSettle(order.getId(), 4L, null)) {
                throw new CoolException("修改订单【orderNo = " + order.getOrderNo() + "】状态为已完成失败");
            }
        }
    }
@@ -153,7 +169,7 @@
            }
            for (DetlDto detlDto : detlDtos) {
                // 修改订单明细数量
                if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme(),detlDto.getCsocode(),detlDto.getIsoseq())) {
                if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme(), detlDto.getCsocode(), detlDto.getIsoseq())) {
                    throw new CoolException("修改单据明细数量失败");
                }
            }
@@ -179,26 +195,30 @@
    public void report(Long orderId, String username) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Order order = this.selectById(orderId);
        Map<String, Object> param = new HashMap<>();
        param.put("id",order.getOrderNo());
        param.put("dDate",sdf.format(new Date()));
        param.put("cHandler",username);
        List<Map<String,Object>> orderDetlsParam = new ArrayList<>();
        param.put("orderDetails",orderDetlsParam);
//        Map<String, Object> param = new HashMap<>();
//        param.put("id",order.getOrderNo());
//        param.put("dDate",sdf.format(new Date()));
//        param.put("cHandler",username);
//
//        List<Map<String,Object>> orderDetlsParam = new ArrayList<>();
//        param.put("orderDetails",orderDetlsParam);
        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(orderId);
        for (OrderDetl orderDetl : orderDetls){
            Map<String, Object> odMap = new HashMap<>();
            odMap.put("autoid",orderDetl.getItemNum());
            odMap.put("iQuantity",orderDetl.getQty());
            orderDetlsParam.add(odMap);
        }
        ReportErpParam reportErpParam = new ReportErpParam();
        orderSyncHandler.mappingParam(order, reportErpParam);
        orderSyncHandler.mappingParamChildren(orderDetls, reportErpParam);
        int code = doHttpRequest(param, "单据审核", url, orderReportPath, null, "127.0.0.1");
//        for (OrderDetl orderDetl : orderDetls){
//            Map<String, Object> odMap = new HashMap<>();
//            odMap.put("autoid",orderDetl.getItemNum());
//            odMap.put("iQuantity",orderDetl.getQty());
//            orderDetlsParam.add(odMap);
//        }
        int code = doHttpRequest(reportErpParam, "单据审核", url, orderReportPath, null, "127.0.0.1");
        //int code = doHttpRequest(param, "单据审核", "localhost:8080", "/test/report", null, "127.0.0.1");
        if(code == 0){
        if (code == 0) {
            order.setSettle(6L);
            this.updateById(order);
        }
@@ -219,7 +239,7 @@
            for (OrderDetl orderDetl : orderDetls) {
                Double leave = orderDetl.getAnfme() - orderDetl.getQty();
                OrderMergeVo vo = new OrderMergeVo(orderDetl.getMatnr(), orderDetl.getBatch(), leave);
                OrderDto orderDto = new OrderDto(orderDetl.getOrderNo(), null,null, leave);
                OrderDto orderDto = new OrderDto(orderDetl.getOrderNo(), null, null, leave);
                if (OrderMergeVo.has(result, vo)) {
                    OrderMergeVo exist = OrderMergeVo.find(result, vo.getMatnr(), vo.getBatch());
                    assert exist != null;
@@ -240,6 +260,7 @@
        }
        return result;
    }
    @Override
    public List<Order> selectorderNoL(String orderNo) {
        return this.baseMapper.selectorderNoL(orderNo);
@@ -247,12 +268,12 @@
    @Override
    public List<Order> selectToBeHistoryOrder() {
        return this.selectList(new EntityWrapper<Order>().eq("status",1).ge("settle",6));
        return this.selectList(new EntityWrapper<Order>().eq("status", 1).ge("settle", 6));
        //return this.baseMapper.selectToBeHistoryOrder();
    }
    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip) {
        String response = "";
        boolean success = false;
@@ -265,20 +286,20 @@
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            if(Cools.isEmpty(jsonObject.get("errCode"))){
            if (Cools.isEmpty(jsonObject.get("errCode"))) {
                throw new CoolException(jsonObject.get("Message").toString());
            }
            int code = (int) jsonObject.get("errCode");
            if(code != 0){
            if (code != 0) {
                throw new CoolException(jsonObject.get("errMsg").toString());
            }
            success = true;
            return code;
        }catch (Exception e){
        } catch (Exception e) {
            log.error(e.getMessage());
            throw new CoolException("调用接口响应错误");
        }finally {
        } finally {
            apiLogService.save(
                    namespace,
                    url + path,
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -88,7 +88,7 @@
    public void completeOrder() {
        List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 2));
        orderList.forEach(order -> {
            orderService.checkComplete(order.getOrderNo());
            orderService.checkComplete(order.getOrderNo(),null);
        });
    }
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -290,12 +290,12 @@
            if(!isJSON(orderNo)){
                //检查订单是否已完成
                orderService.checkComplete(orderNo);
                orderService.checkComplete(orderNo,agvWrkMast.getLocNo());
            }else{
                List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                maps.forEach(map -> {
                    String o = map.get("orderNo").toString();
                    orderService.checkComplete(o);
                    orderService.checkComplete(o,agvWrkMast.getLocNo());
                });
            }
@@ -391,12 +391,12 @@
            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
            if(!isJSON(orderNo)){
                //检查订单是否已完成
                orderService.checkComplete(orderNo);
                orderService.checkComplete(orderNo,agvWrkMast.getLocNo());
            }else{
                List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                maps.forEach(map -> {
                    String o = map.get("orderNo").toString();
                    orderService.checkComplete(o);
                    orderService.checkComplete(o,agvWrkMast.getLocNo());
                });
            }
@@ -448,12 +448,12 @@
            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
            if(!isJSON(orderNo)){
                //检查订单是否已完成
                orderService.checkComplete(orderNo);
                orderService.checkComplete(orderNo,agvWrkMast.getLocNo());
            }else{
                List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                maps.forEach(map -> {
                    String o = map.get("orderNo").toString();
                    orderService.checkComplete(o);
                    orderService.checkComplete(o,agvWrkMast.getLocNo());
                });
            }
            //上报mes
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -50,10 +50,10 @@
    @Transactional
    public ReturnT<String> start(Order order) {
        List<String> docNames = new ArrayList<>(Arrays.asList("银座采购入库单","银座委外材料出库单","银座委外入库单","银座生产材料出库单"));
        List<String> docNames = new ArrayList<>(Arrays.asList("银座采购入库单", "银座委外材料出库单", "银座委外入库单", "银座生产材料出库单"));
        DocType docType = docTypeService.selectById(order.getDocType());
        if(!docNames.contains(docType.getDocName())){
        if (!docNames.contains(docType.getDocName())) {
            order.setSettle(8L);
            orderService.updateById(order);
            return SUCCESS;
@@ -70,11 +70,11 @@
        List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
        ReportErpParam param = new ReportErpParam();
        mappingParam(order,param);
        mappingParamChildren(orderDetlList,param);
        mappingParam(order, param);
        mappingParamChildren(orderDetlList, param);
        int code = doHttpRequest(param, "单据审核", url, orderReportPath, null, "127.0.0.1");
        if(code == 0){
        if (code == 0) {
            order.setSettle(6L);
            orderService.updateById(order);
        }
@@ -82,12 +82,12 @@
        return SUCCESS;
    }
    private void mappingParam(Order order, ReportErpParam param){
    public void mappingParam(Order order, ReportErpParam param) {
        param.set操作系统号(order.getDefNumber());
        param.set操作单据(order.getDocType$());
        param.set操作类型("add");
        param.setDdate(order.getOrderTime());
        param.setCWhCode("");
        param.setCWhCode(Cools.isEmpty(order.getPltType()) ? "" : order.getPltType() + "");
        param.setCDepCode("YZ");
        param.setCOrderCode(order.getOrderNo());
        param.setCMaker("");
@@ -95,10 +95,10 @@
        param.setCDefine14(order.getOrderNo());
    }
    private void mappingParamChildren(List<OrderDetl> orderDetlList, ReportErpParam param){
    public void mappingParamChildren(List<OrderDetl> orderDetlList, ReportErpParam param) {
        List<ReportErpParam.ChildInfo> paramChild = new ArrayList<>();
        param.setChildren(paramChild);
        for (OrderDetl orderDetl : orderDetlList){
        for (OrderDetl orderDetl : orderDetlList) {
            ReportErpParam.ChildInfo childInfo = new ReportErpParam.ChildInfo();
            childInfo.setIrowno(orderDetl.getItemNum());
            childInfo.setCInvCode(orderDetl.getMatnr());
@@ -110,7 +110,6 @@
            childInfo.setIPOsID(orderDetl.getSku());
            childInfo.setCOrderCode(orderDetl.getOrderNo());
            childInfo.setIvouchrowno(orderDetl.getItemNum());
            childInfo.setCBatch("");
            childInfo.setDefine22(orderDetl.getThreeCode());
            paramChild.add(childInfo);
@@ -118,7 +117,7 @@
    }
    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip) {
        String response = "";
        boolean success = false;
@@ -131,22 +130,22 @@
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            if(Cools.isEmpty(jsonObject.get("succeed"))){
            if (Cools.isEmpty(jsonObject.get("succeed"))) {
                throw new CoolException(jsonObject.get("dsc").toString());
            }
            String succeed = jsonObject.get("succeed").toString();
            int code = Cools.eq("0",succeed) ? 0 : 1;
            if(code != 0){
            int code = Cools.eq("0", succeed) ? 0 : 1;
            if (code != 0) {
                throw new CoolException(jsonObject.get("dsc").toString());
            }
            success = true;
            return code;
        }catch (Exception e){
        } catch (Exception e) {
            log.error(e.getMessage());
            throw new CoolException("调用接口响应错误");
        }finally {
        } finally {
            apiLogService.save(
                    namespace,
                    url + path,
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -120,12 +120,12 @@
            // 修改订单状态 作业中 ===>> 已完成
            for (WrkDetl wrkDetl : wrkDetlsKeyOrder) {
                if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
                    orderService.checkComplete(wrkDetl.getOrderNo());
                    orderService.checkComplete(wrkDetl.getOrderNo(),wrkMast.getLocNo());
                } else {
                    // 订单合并出库
                    List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
                    for (OrderDto one : orderDtoList) {
                        orderService.checkComplete(one.getOrderNo());
                        orderService.checkComplete(one.getOrderNo(),wrkMast.getLocNo());
                    }
                }
            }