|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.core.common.R; | 
|---|
|  |  |  | import com.core.common.SnowflakeIdWorker; | 
|---|
|  |  |  | import com.core.exception.CoolException; | 
|---|
|  |  |  | import com.zy.asrs.constant.AsrsConstants; | 
|---|
|  |  |  | import com.zy.asrs.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.MesBuyPakinReportParam; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.MesOrderReportParam; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.MesPakinReportParam; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.MesPakoutReportParam; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.service.AgvCommonService; | 
|---|
|  |  |  | import lombok.Synchronized; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class AgvWrkMastHandler extends AbstractHandler<String> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //入库类型数组 | 
|---|
|  |  |  | private static final List<Integer> IN_TYPE_LIST = new ArrayList<Integer>() {{ | 
|---|
|  |  |  | add(1); | 
|---|
|  |  |  | }}; | 
|---|
|  |  |  | //private static final int[] IN_TYPE_ARRAY = {1}; | 
|---|
|  |  |  | //出库类型数组 | 
|---|
|  |  |  | private static final List<Integer> OUT_TYPE_List = new ArrayList<Integer>() {{ | 
|---|
|  |  |  | //        add(101); | 
|---|
|  |  |  | }}; | 
|---|
|  |  |  | //private static final int[] OUT_TYPE_ARRAY = {101}; | 
|---|
|  |  |  | //移库类型数组 | 
|---|
|  |  |  | private static final List<Integer> MOVE_TYPE_List = new ArrayList<Integer>() {{ | 
|---|
|  |  |  | add(11); | 
|---|
|  |  |  | add(12); | 
|---|
|  |  |  | add(53); | 
|---|
|  |  |  | add(101); | 
|---|
|  |  |  | add(103); | 
|---|
|  |  |  | add(108); | 
|---|
|  |  |  | add(111); | 
|---|
|  |  |  | add(112); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }}; | 
|---|
|  |  |  | //private static final int[] MOVE_TYPE_ARRAY = {11,12}; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${agvBasDev.maxWorkNum}") | 
|---|
|  |  |  | private int maxWrokNum; | 
|---|
|  |  |  | @Value("${mes.report}") | 
|---|
|  |  |  | private Boolean flag; | 
|---|
|  |  |  | @Value("${mes.url}") | 
|---|
|  |  |  | private String url; | 
|---|
|  |  |  | @Value("${mes.getTokenUrl}") | 
|---|
|  |  |  | private String getTokenUrl; | 
|---|
|  |  |  | @Value("${mes.orderReportPath}") | 
|---|
|  |  |  | private String orderReportPath; | 
|---|
|  |  |  | @Value("${mes.pakinReportPath}") | 
|---|
|  |  |  | private String pakinReportPath; | 
|---|
|  |  |  | @Value("${mes.buyPakinReportPath}") | 
|---|
|  |  |  | private String buyPakinReportPath; | 
|---|
|  |  |  | @Value("${mes.pakoutReportPath}") | 
|---|
|  |  |  | private String pakoutReportPath; | 
|---|
|  |  |  | @Value("${mes.getTokenPath}") | 
|---|
|  |  |  | private String getTokenPath; | 
|---|
|  |  |  | @Value("${mes.appKey}") | 
|---|
|  |  |  | private String appKey; | 
|---|
|  |  |  | @Value("${mes.appSecret}") | 
|---|
|  |  |  | private String appSecret; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AgvWrkMastService agvWrkMastService; | 
|---|
|  |  |  | 
|---|
|  |  |  | private AgvBasDevpService agvBasDevpService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AgvWorkService agvWorkService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DocTypeService docTypeService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SnowflakeIdWorker snowflakeIdWorker; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private FlowLogService flowLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ReportDataService reportDataService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AgvCommonService agvCommonService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | //用于上报mes的工作档明细 | 
|---|
|  |  |  | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | long flowId = snowflakeIdWorker.nextId(); | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | int wrkNo = agvWrkMast.getWrkNo(); | 
|---|
|  |  |  | String barcode = agvWrkMast.getBarcode(); | 
|---|
|  |  |  | String orderNo = getOrderNoByWrkNo(wrkNo); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Integer pltType = agvWrkMast.getPltType(); | 
|---|
|  |  |  | if (Cools.isEmpty(pltType)) { | 
|---|
|  |  |  | AgvLocMast agvLocMast; | 
|---|
|  |  |  | if (!Cools.isEmpty(agvWrkMast.getLocNo())) { | 
|---|
|  |  |  | agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | if (agvLocMast != null) { | 
|---|
|  |  |  | pltType = agvLocMast.getPltType(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!Cools.isEmpty(agvWrkMast.getSourceLocNo())) { | 
|---|
|  |  |  | agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (agvLocMast != null) { | 
|---|
|  |  |  | pltType = agvLocMast.getPltType(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pltType != null) { | 
|---|
|  |  |  | agvWrkMast.setPltType(pltType); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //log.info("工作号--{},仓库编码:{}", agvWrkMast.getWrkNo(), agvWrkMast.getPltType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | agvWrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | //修改工作档状态为207.库存更新完成 | 
|---|
|  |  |  | agvWrkMast.setWrkSts(207L); | 
|---|
|  |  |  | agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | 
|---|
|  |  |  | agvWrkDetlLogService.save(wrkNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | switch (agvWrkMast.getIoType()){ | 
|---|
|  |  |  | switch (agvWrkMast.getIoType()) { | 
|---|
|  |  |  | case 1: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue(), agvWrkMast.getCtnNo()); | 
|---|
|  |  |  | //更新目标库位明细 | 
|---|
|  |  |  | log.info("更新目标库位明细 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo); | 
|---|
|  |  |  | agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo); | 
|---|
|  |  |  | agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(), wrkNo); | 
|---|
|  |  |  | //生成入库通知历史档 | 
|---|
|  |  |  | boolean save = agvWaitPakinLogService.save(barcode); | 
|---|
|  |  |  | //删除入库通知档 | 
|---|
|  |  |  | log.info("删除入库通知档 supp_code: " + barcode); | 
|---|
|  |  |  | agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode)); | 
|---|
|  |  |  | agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code", barcode)); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 10: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | AgvBasDevp byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (byDevNo != null) { | 
|---|
|  |  |  | if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 11: | 
|---|
|  |  |  | case 12: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | AgvLocDetl agvLocDetl1 = agvLocDetlService.selectByLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (agvLocDetl1 == null) { | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //更新库存明细 | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo(),null); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null, ""); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 53: | 
|---|
|  |  |  | //修改工作党明细 | 
|---|
|  |  |  | 
|---|
|  |  |  | AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); | 
|---|
|  |  |  | if (!Cools.isEmpty(agvLocDetl)) { | 
|---|
|  |  |  | double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme(); | 
|---|
|  |  |  | agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); | 
|---|
|  |  |  | //                            OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode()); | 
|---|
|  |  |  | //                            FlowLog flowLog = new FlowLog(); | 
|---|
|  |  |  | //                            flowLog.setFid(String.valueOf(flowId)); | 
|---|
|  |  |  | //                            flowLog.setSpare2(String.valueOf(agvWrkMast.getWrkNo())); | 
|---|
|  |  |  | //                            flowLog.setLocNo(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | //                            flowLog.setSpare1(agvWrkDetl.getSuppCode()); | 
|---|
|  |  |  | //                            flowLog.setOpType(53L); | 
|---|
|  |  |  | //                            flowLog.setOrderNo(agvWrkDetl.getOrderNo()); | 
|---|
|  |  |  | //                            flowLog.setThreeCode(agvWrkDetl.getThreeCode()); | 
|---|
|  |  |  | //                            flowLog.setMatnr(agvWrkDetl.getMatnr()); | 
|---|
|  |  |  | //                            flowLog.setMaktx(agvWrkDetl.getMaktx()); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            flowLog.setOrderPrevious(orderDetl.getAnfme()); | 
|---|
|  |  |  | //                            flowLog.setOrderCurrent(orderDetl.getAnfme()); | 
|---|
|  |  |  | //                            flowLog.setOrderChanged(0.0); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            flowLog.setQtyPrevious(orderDetl.getQty()); | 
|---|
|  |  |  | //                            flowLog.setQtyCurrent(updateAnfme); | 
|---|
|  |  |  | //                            flowLog.setQtyChanged(agvWrkDetl.getAnfme()); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            flowLog.setLocPrevious(agvLocDetl.getAnfme()); | 
|---|
|  |  |  | //                            flowLog.setLocCurrent(updateAnfme); | 
|---|
|  |  |  | //                            flowLog.setLocChanged(agvWrkDetl.getAnfme()); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                            flowLog.setAppeTime(now); | 
|---|
|  |  |  | //                            if (!flowLogService.insert(flowLog)) { | 
|---|
|  |  |  | //                                throw new CoolException("同步半成品调拨单流水记录失败"); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | log.info("53添加库存日志:{},{}", updateAnfme, JSON.toJSON(agvLocDetl)); | 
|---|
|  |  |  | agvLocDetlService.updateAnfme(updateAnfme, agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (byDevNo != null) { | 
|---|
|  |  |  | if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 57: | 
|---|
|  |  |  | // 更新库存明细 | 
|---|
|  |  |  | List<AgvWrkDetl> wrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); | 
|---|
|  |  |  | wrkDetlList.forEach(agvWrkDetl -> { | 
|---|
|  |  |  | AgvLocDetl agvLocDetl = new AgvLocDetl(); | 
|---|
|  |  |  | agvLocDetl.setLocNo(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | agvLocDetl.sync(agvWrkDetl); | 
|---|
|  |  |  | agvLocDetl.setModiTime(now); | 
|---|
|  |  |  | agvLocDetl.setAppeTime(now); | 
|---|
|  |  |  | log.info("57添加库存日志:{}", JSON.toJSON(agvLocDetl)); | 
|---|
|  |  |  | if (!agvLocDetlService.insert(agvLocDetl)) { | 
|---|
|  |  |  | throw new CoolException("保存工作明细失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 更新站点 + 库位状态     源库位是站点 | 
|---|
|  |  |  | byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (byDevNo != null) { | 
|---|
|  |  |  | if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue(), agvWrkMast.getCtnNo()); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 58: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 108: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //更新库存明细 | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); | 
|---|
|  |  |  | case 114: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //                    //更新库存明细 | 
|---|
|  |  |  | //                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); | 
|---|
|  |  |  | //                    //修改源库位状态为O | 
|---|
|  |  |  | //                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 109: | 
|---|
|  |  |  | // 库位 -- 接驳位 / 库位 | 
|---|
|  |  |  | if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | // 接驳位 -- 库位 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 接驳位 -- 库位 | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); | 
|---|
|  |  |  | // 库位 -- 接驳位 / 库位 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); | 
|---|
|  |  |  | //agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 111: | 
|---|
|  |  |  | // 库位 -- 接驳位 / 库位 | 
|---|
|  |  |  | if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | // 接驳位 -- 库位 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 接驳位 -- 库位 | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); | 
|---|
|  |  |  | // 库位 -- 接驳位 / 库位 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | //更新目标库位明细 101.出库 删除源库位库存明细 | 
|---|
|  |  |  | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); | 
|---|
|  |  |  | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 112: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); | 
|---|
|  |  |  | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { | 
|---|
|  |  |  | AgvLocDetl locDetl = new AgvLocDetl(); | 
|---|
|  |  |  | locDetl.setLocNo(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | locDetl.sync(agvWrkDetl); | 
|---|
|  |  |  | locDetl.setModiTime(new Date()); | 
|---|
|  |  |  | log.info("112添加库存日志:{}", JSON.toJSON(locDetl)); | 
|---|
|  |  |  | agvLocDetlService.insert(locDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 接驳位 -- 库位 | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F","",agvWrkMast.getWhsType().shortValue(),"",(short)0); | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); | 
|---|
|  |  |  | // 库位 -- 接驳位 / 库位 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 113: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | // 接驳位 -- 库位 | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); | 
|---|
|  |  |  | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 121: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //更新库存明细 | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo(),agvWrkMast.getAppeUser()); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | 
|---|
|  |  |  | //删除AGV工作档 | 
|---|
|  |  |  | agvWrkMastService.deleteById(wrkNo); | 
|---|
|  |  |  | //删除AGV工作明细档 | 
|---|
|  |  |  | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); | 
|---|
|  |  |  | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //            else { | 
|---|
|  |  |  | //                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //                if (!agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { | 
|---|
|  |  |  | //                    agvWrkMast.setSourceLocNo(""); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //                agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(!isJSON(orderNo)){ | 
|---|
|  |  |  | if (!isJSON(orderNo)) { | 
|---|
|  |  |  | //检查订单是否已完成 | 
|---|
|  |  |  | orderService.checkComplete(orderNo); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | orderService.checkComplete(orderNo, pltType); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | List<Map> maps = JSONArray.parseArray(orderNo, Map.class); | 
|---|
|  |  |  | Integer finalPltType = pltType; | 
|---|
|  |  |  | maps.forEach(map -> { | 
|---|
|  |  |  | String o = map.get("orderNo").toString(); | 
|---|
|  |  |  | orderService.checkComplete(o); | 
|---|
|  |  |  | orderService.checkComplete(o, finalPltType); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error(""+e.getMessage()); | 
|---|
|  |  |  | //上报mes | 
|---|
|  |  |  | //            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); | 
|---|
|  |  |  | //            if(!Cools.isEmpty(param)){ | 
|---|
|  |  |  | //                doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //return SUCCESS; | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return FAIL; | 
|---|
|  |  |  | //TODO | 
|---|
|  |  |  | //暂时加上trycatch | 
|---|
|  |  |  | reportMes(agvWrkMast, agvWrkDetlListOld); | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //用于上报mes的工作档明细 | 
|---|
|  |  |  | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | int wrkNo = agvWrkMast.getWrkNo(); | 
|---|
|  |  |  | String orderNo = getOrderNoByWrkNo(wrkNo); | 
|---|
|  |  |  | //修改工作档状态为207.库存更新完成 | 
|---|
|  |  |  | agvWrkMast.setWrkSts(207L); | 
|---|
|  |  |  | agvWrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); | 
|---|
|  |  |  | if(agvWrkMast.getIoType() == 101){ | 
|---|
|  |  |  | if (agvWrkMast.getIoType() == 110) { | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (agvWrkMast.getIoType() == 101) { | 
|---|
|  |  |  | //更新目标库位明细 101.出库 删除源库位库存明细 | 
|---|
|  |  |  | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); | 
|---|
|  |  |  | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); | 
|---|
|  |  |  | //生成空板入库任务 | 
|---|
|  |  |  | Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true); | 
|---|
|  |  |  | //                    agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true); | 
|---|
|  |  |  | AgvWrkMast wrkMast = new AgvWrkMast(); | 
|---|
|  |  |  | //工作状态 | 
|---|
|  |  |  | wrkMast.setWrkSts(201L); | 
|---|
|  |  |  | //入出库类型 | 
|---|
|  |  |  | wrkMast.setIoType(10); | 
|---|
|  |  |  | wrkMast.setIoTime(new Date()); | 
|---|
|  |  |  | wrkMast.setIoTime(now); | 
|---|
|  |  |  | //优先级 | 
|---|
|  |  |  | wrkMast.setIoPri(300.0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //源站点 | 
|---|
|  |  |  | wrkMast.setSourceLocNo(agvWrkMast.getLocNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //目标站点 | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (agvWrkMast.getLocNo().startsWith("QO") && agvWrkMast.getLocNo().endsWith("F4") && Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)) == 30) { | 
|---|
|  |  |  | if (!agvWrkMast.getSourceLocNo().endsWith("02F1")) { | 
|---|
|  |  |  | AgvLocMast locByFloor = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | locByFloor = agvCommonService.getLocByLocRule(3, 1, AsrsConstants.ERCHANG, true); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (locByFloor != null && locByFloor.getLocNo().endsWith("02F1")) { | 
|---|
|  |  |  | AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | agvLocMast.setLocSts("O"); | 
|---|
|  |  |  | agvLocMast.setModiTime(now); | 
|---|
|  |  |  | agvLocMast.setBarcode(""); | 
|---|
|  |  |  | agvLocMastService.updateById(agvLocMast); | 
|---|
|  |  |  | wrkMast.setLocNo(locByFloor.getLocNo()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //货架编码 | 
|---|
|  |  |  | wrkMast.setBarcode(agvWrkMast.getBarcode()); | 
|---|
|  |  |  | //货架类型 | 
|---|
|  |  |  | wrkMast.setWhsType(Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2))); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wrkMast.setAppeUser(9527L); | 
|---|
|  |  |  | wrkMast.setAppeTime(new Date()); | 
|---|
|  |  |  | wrkMast.setAppeUser(agvWrkMast.getAppeUser()); | 
|---|
|  |  |  | wrkMast.setAppeTime(now); | 
|---|
|  |  |  | wrkMast.setModiUser(9527L); | 
|---|
|  |  |  | wrkMast.setModiTime(new Date()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wrkMast.setModiTime(now); | 
|---|
|  |  |  | wrkMast.setPltType(agvWrkMast.getPltType()); | 
|---|
|  |  |  | wrkMast.setLogErrMemo("completedCarryWrk"); | 
|---|
|  |  |  | if (!agvWrkMastService.insertByIncrease(wrkMast)) { | 
|---|
|  |  |  | throw new CoolException("保存工作档失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AgvLocMast agvLocMast = agvLocMastService.selectById(wrkMast.getLocNo()); | 
|---|
|  |  |  | agvLocMast.setLocSts("S"); | 
|---|
|  |  |  | agvLocMast.setModiTime(now); | 
|---|
|  |  |  | agvLocMastService.updateById(agvLocMast); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | agvBasDevp.setLocSts("R"); | 
|---|
|  |  |  | agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2))); | 
|---|
|  |  |  | agvBasDevpService.updateById(agvBasDevp); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | log.error(e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | //删除AGV工作档 | 
|---|
|  |  |  | agvWrkMastService.deleteById(wrkNo); | 
|---|
|  |  |  | //删除AGV工作明细档 | 
|---|
|  |  |  | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); | 
|---|
|  |  |  | if(!isJSON(orderNo)){ | 
|---|
|  |  |  | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); | 
|---|
|  |  |  | if (!isJSON(orderNo)) { | 
|---|
|  |  |  | //检查订单是否已完成 | 
|---|
|  |  |  | orderService.checkComplete(orderNo); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); | 
|---|
|  |  |  | } 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.getPltType()); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error(""+e.getMessage()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //上报mes | 
|---|
|  |  |  | //            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); | 
|---|
|  |  |  | //            if(!Cools.isEmpty(param)){ | 
|---|
|  |  |  | //                doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return FAIL; | 
|---|
|  |  |  | reportMes(agvWrkMast, agvWrkDetlListOld); | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) { | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | //用于上报mes的工作档明细 | 
|---|
|  |  |  | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | int wrkNo = agvWrkMast.getWrkNo(); | 
|---|
|  |  |  | String orderNo = getOrderNoByWrkNo(wrkNo); | 
|---|
|  |  |  | String agvBasDevp = ""; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //修改工作档状态为207.库存更新完成 | 
|---|
|  |  |  | agvWrkMast.setWrkSts(207L); | 
|---|
|  |  |  | agvWrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); | 
|---|
|  |  |  | if(agvWrkMast.getIoType() == 101){ | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); | 
|---|
|  |  |  | if (agvWrkMast.getIoType() == 101) { | 
|---|
|  |  |  | //更新目标库位明细 101.出库 删除源库位库存明细 | 
|---|
|  |  |  | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); | 
|---|
|  |  |  | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //生成AGV工作历史档 | 
|---|
|  |  |  | 
|---|
|  |  |  | //删除AGV工作档 | 
|---|
|  |  |  | agvWrkMastService.deleteById(wrkNo); | 
|---|
|  |  |  | //删除AGV工作明细档 | 
|---|
|  |  |  | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); | 
|---|
|  |  |  | if(!isJSON(orderNo)){ | 
|---|
|  |  |  | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); | 
|---|
|  |  |  | if (!isJSON(orderNo)) { | 
|---|
|  |  |  | //检查订单是否已完成 | 
|---|
|  |  |  | orderService.checkComplete(orderNo); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); | 
|---|
|  |  |  | } 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.getPltType()); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error(""+e.getMessage()); | 
|---|
|  |  |  | //上报mes | 
|---|
|  |  |  | //            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); | 
|---|
|  |  |  | //            if(!Cools.isEmpty(param)){ | 
|---|
|  |  |  | //                doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //            reportMes(agvWrkMast,agvWrkDetlListOld); | 
|---|
|  |  |  | //            return SUCCESS; | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return FAIL; | 
|---|
|  |  |  | //TODO 张超 | 
|---|
|  |  |  | reportMes(agvWrkMast, agvWrkDetlListOld); | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | @Synchronized | 
|---|
|  |  |  | public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //下发任务 | 
|---|
|  |  |  | int startWrkCode = agvWrkMastService.startWrk(agvWrkMast); | 
|---|
|  |  |  | if(startWrkCode != 0){ | 
|---|
|  |  |  | if (startWrkCode != 0) { | 
|---|
|  |  |  | throw new CoolException("任务下发失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | agvWrkMast.setWrkSts(202L); | 
|---|
|  |  |  | agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | if(agvWrkMast.getIoType() == 1){ | 
|---|
|  |  |  | //agvWrkMast.setWrkSts(202L); | 
|---|
|  |  |  | //agvWrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | //boolean b = agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | boolean b = agvWrkMastService.updateWrkStsByWrkNo(Math.abs(agvWrkMast.getWrkNo()), 202L); | 
|---|
|  |  |  | if (!b) { | 
|---|
|  |  |  | log.info("更新任务状态失败,{}", agvWrkMast.getWrkNo()); | 
|---|
|  |  |  | throw new CoolException("更新任务状态失败"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.info("更新任务状态成功,{}", agvWrkMast.getWrkNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (agvWrkMast.getIoType() == 1) { | 
|---|
|  |  |  | //修改AGV入库通知档状态入出状态为Y | 
|---|
|  |  |  | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); | 
|---|
|  |  |  | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(), "Y"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("修改AGV入库通知档状态入出状态为Y"+e.getMessage()); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | //TODO | 
|---|
|  |  |  | //log.error("修改AGV入库通知档状态入出状态为Y,{}", e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return FAIL; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | @Synchronized | 
|---|
|  |  |  | public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //下发任务 | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); | 
|---|
|  |  |  | if(startWrkCode != 0){ | 
|---|
|  |  |  | if (startWrkCode != 0) { | 
|---|
|  |  |  | throw new CoolException("任务下发失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("任务下发失败"+e.getMessage()); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("任务下发失败" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return FAIL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | //取第一个暂存位,并查询其次数与配置的次数做比较 | 
|---|
|  |  |  | Map<String, Object> devNoMap = devNoMaps.get(0); | 
|---|
|  |  |  | if((int)devNoMap.get("num") < maxWrokNum){ | 
|---|
|  |  |  | if ((int) devNoMap.get("num") < maxWrokNum) { | 
|---|
|  |  |  | agvWrkMast.setLocNo(devNoMap.get("dev_no").toString()); | 
|---|
|  |  |  | agvWrkMast.setModiTime(new Date()); | 
|---|
|  |  |  | agvWrkMastService.updateById(agvWrkMast); | 
|---|
|  |  |  | log.info("after:" + devNoMap.toString()  +  ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); | 
|---|
|  |  |  | log.info("after:" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L); | 
|---|
|  |  |  | agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(), 0, 9527L); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String getOrderNoByWrkNo(int wrkNo){ | 
|---|
|  |  |  | private String getOrderNoByWrkNo(int wrkNo) { | 
|---|
|  |  |  | AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); | 
|---|
|  |  |  | if(Cools.isEmpty(agvWrkDetl)){ | 
|---|
|  |  |  | if (Cools.isEmpty(agvWrkDetl)) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return agvWrkDetl.getOrderNo(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){ | 
|---|
|  |  |  | private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList) { | 
|---|
|  |  |  | return agvWrkMastList.stream().filter(agvWrkMast -> { | 
|---|
|  |  |  | AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo())); | 
|---|
|  |  |  | if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){ | 
|---|
|  |  |  | if (!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts() <= 202) { | 
|---|
|  |  |  | System.out.println("source_loc_no > 1"); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 生成工作档 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){ | 
|---|
|  |  |  | private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor) { | 
|---|
|  |  |  | AgvWrkMast wrkMast = new AgvWrkMast(); | 
|---|
|  |  |  | //工作状态 | 
|---|
|  |  |  | wrkMast.setWrkSts(wrkSts); | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new CoolException("保存工作档失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false)); | 
|---|
|  |  |  | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo).eq("barcode", barcode).orderBy("modi_time", false)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return wrkMast; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (Cools.isEmpty(agvWrkDetls)) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<AgvWrkDetl> data = new ArrayList<>(); | 
|---|
|  |  |  | //区分不同任务类型的上报方式 | 
|---|
|  |  |  | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { | 
|---|
|  |  |  | if (agvWrkDetl.getMatnr().compareTo("39") <= 0) { | 
|---|
|  |  |  | data.add(agvWrkDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!data.isEmpty()) { | 
|---|
|  |  |  | if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) { | 
|---|
|  |  |  | reportMesPakinOrder(agvWrkMast, data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //            if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) { | 
|---|
|  |  |  | //                reportMesPakoutOrder(agvWrkMast, data); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //            if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) { | 
|---|
|  |  |  | //                generateMesParam(agvWrkMast, data); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { | 
|---|
|  |  |  | //判断是否采购入库 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String orderNo = agvWrkDetl.getOrderNo(); | 
|---|
|  |  |  | Order order = orderService.selectByNo(orderNo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DocType docType = docTypeService.selectById(order.getDocType()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (docType.getDocName().contains("采购")) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(orderNo, agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MesBuyPakinReportParam mesBuyPakinReportParam = new MesBuyPakinReportParam(); | 
|---|
|  |  |  | List<MesBuyPakinReportParam.Iteam> iteams = new ArrayList<>(); | 
|---|
|  |  |  | MesBuyPakinReportParam.Iteam iteam = new MesBuyPakinReportParam.Iteam(); | 
|---|
|  |  |  | iteam.setMaterialCode(agvWrkDetl.getMatnr()); | 
|---|
|  |  |  | iteam.setBatchNo(agvWrkDetl.getBatch()); | 
|---|
|  |  |  | iteam.setAmount(agvWrkDetl.getAnfme()); | 
|---|
|  |  |  | iteam.setStorageLocationCode(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | iteam.setLineNo(orderDetl.getItemNum()); | 
|---|
|  |  |  | iteam.setSupplierCode(order.getSalesman()); | 
|---|
|  |  |  | iteam.setUnit(agvWrkDetl.getUnit()); | 
|---|
|  |  |  | iteam.setRemark(agvWrkDetl.getThreeCode()); | 
|---|
|  |  |  | iteams.add(iteam); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | mesBuyPakinReportParam.setCode(orderNo); | 
|---|
|  |  |  | mesBuyPakinReportParam.setIteam(iteams); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | doHttpRequest(mesBuyPakinReportParam, getMesTokenInfo(), "上报mes采购入库信息", url, buyPakinReportPath, null, "127.0.0.1"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | MesPakinReportParam mesPakinReportParam = new MesPakinReportParam(); | 
|---|
|  |  |  | //mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo()); | 
|---|
|  |  |  | mesPakinReportParam.setBizType("0"); | 
|---|
|  |  |  | mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(null, agvWrkDetl.getMatnr(), agvWrkMast.getLocNo())); | 
|---|
|  |  |  | mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | doHttpRequest(mesPakinReportParam, getMesTokenInfo(), "上报mes入库信息", url, pakinReportPath, null, "127.0.0.1"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { | 
|---|
|  |  |  | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { | 
|---|
|  |  |  | MesPakoutReportParam mesPakoutReportParam = new MesPakoutReportParam(); | 
|---|
|  |  |  | mesPakoutReportParam.setStorageCode(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString()); | 
|---|
|  |  |  | mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr()); | 
|---|
|  |  |  | mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getThreeCode().trim())); | 
|---|
|  |  |  | mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | doHttpRequest(mesPakoutReportParam, getMesTokenInfo(), "上报mes出库信息", url, pakoutReportPath, null, "127.0.0.1"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (agvWrkMast.getIoType() == 53) { | 
|---|
|  |  |  | String locNo = agvWrkMast.getLocNo(); | 
|---|
|  |  |  | agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | agvWrkMast.setSourceLocNo(locNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MesOrderReportParam param = new MesOrderReportParam(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customFields = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MesOrderReportParam.RecordCustomFieldBaseCO recordCustomFieldBaseCO = new MesOrderReportParam.RecordCustomFieldBaseCO(); | 
|---|
|  |  |  | //recordCustomFieldBaseCO.setCustomFields(customFields); | 
|---|
|  |  |  | param.setRecordCustomFieldBaseCO(recordCustomFieldBaseCO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //添加transferOrderItem属性 | 
|---|
|  |  |  | MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem(); | 
|---|
|  |  |  | transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo()); | 
|---|
|  |  |  | //调拨 | 
|---|
|  |  |  | if (agvWrkMast.getLocNo().contains("YZ")) { | 
|---|
|  |  |  | transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //出库默认仓位 | 
|---|
|  |  |  | String floor = agvWrkMast.getLocNo().split("F")[1]; | 
|---|
|  |  |  | transferOrderItem.setTargetLocationCode(getTargetLocationByFloor(floor)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | transferOrderItems.add(transferOrderItem); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | param.setTransferOrderItems(transferOrderItems); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { | 
|---|
|  |  |  | List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>(); | 
|---|
|  |  |  | MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail(); | 
|---|
|  |  |  | //添加amount属性 | 
|---|
|  |  |  | MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null); | 
|---|
|  |  |  | inventoryDetail.setAmount(amount); | 
|---|
|  |  |  | //添加bizKey属性 | 
|---|
|  |  |  | MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(Cools.isEmpty(agvWrkDetl.getBatch()) ? "" : agvWrkDetl.getBatch().trim()); | 
|---|
|  |  |  | inventoryDetail.setBizKey(bizKey); | 
|---|
|  |  |  | //添加inventoryDetail属性 | 
|---|
|  |  |  | inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | inventoryDetail.setMaterialCode(agvWrkDetl.getMatnr()); | 
|---|
|  |  |  | inventoryDetail.setQcStatus(1); | 
|---|
|  |  |  | inventoryDetail.setStorageStatus(1); | 
|---|
|  |  |  | inventoryDetails.add(inventoryDetail); | 
|---|
|  |  |  | transferOrderItem.setInventoryDetails(inventoryDetails); | 
|---|
|  |  |  | //添加销售订单号 | 
|---|
|  |  |  | MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customField = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField("workOrderCode__c", agvWrkDetl.getThreeCode().trim()); | 
|---|
|  |  |  | //customFields.add(customField); | 
|---|
|  |  |  | recordCustomFieldBaseCO.setCustomFields(customField); | 
|---|
|  |  |  | doHttpRequest(param, getMesTokenInfo(), "上报mes调拨信息", url, orderReportPath, null, "127.0.0.1"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取mes token信息 | 
|---|
|  |  |  | private Map<String, Object> getMesTokenInfo() { | 
|---|
|  |  |  | //        Map<String, String> param = new HashMap<>(); | 
|---|
|  |  |  | //        param.put("appKey", appKey); | 
|---|
|  |  |  | //        param.put("appSecret", appSecret); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        JSONObject jsonObject = doHttpRequest(param, null, "获取MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1"); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        Map<String, Object> headParam = new HashMap<>(); | 
|---|
|  |  |  | //        headParam.put("X-AUTH", JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //       return headParam; | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //根据楼层默认出库仓位 | 
|---|
|  |  |  | private String getTargetLocationByFloor(String f) { | 
|---|
|  |  |  | int floor = Integer.parseInt(f); | 
|---|
|  |  |  | if (floor == 1) { | 
|---|
|  |  |  | return "WH-000"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (floor == 2) { | 
|---|
|  |  |  | return "WH-000"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (floor == 3) { | 
|---|
|  |  |  | return "WH-000"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) { | 
|---|
|  |  |  | //保证上报表 | 
|---|
|  |  |  | ReportData reportData = new ReportData(); | 
|---|
|  |  |  | reportData.setReportJson(JSONObject.toJSONString(requestParam)); | 
|---|
|  |  |  | reportData.setMemo(namespace); | 
|---|
|  |  |  | reportData.setCreateTime(new Date()); | 
|---|
|  |  |  | reportData.setReportType("MES"); | 
|---|
|  |  |  | reportDataService.insert(reportData); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        String response = ""; | 
|---|
|  |  |  | //        boolean success = false; | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        try { | 
|---|
|  |  |  | //            response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost(); | 
|---|
|  |  |  | //            JSONObject jsonObject = JSON.parseObject(response); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) { | 
|---|
|  |  |  | //                log.info("mes接口调用失败,返回信息:" + jsonObject); | 
|---|
|  |  |  | //                //TODO 张超 | 
|---|
|  |  |  | //                throw new CoolException("mes接口调用失败,返回信息:" + jsonObject); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //            success = true; | 
|---|
|  |  |  | //            return jsonObject; | 
|---|
|  |  |  | // | 
|---|
|  |  |  | ////            String succeed = jsonObject.get("succeed").toString(); | 
|---|
|  |  |  | //// | 
|---|
|  |  |  | ////            int code = Cools.eq("0",succeed) ? 0 : 1; | 
|---|
|  |  |  | ////            if(code != 200){ | 
|---|
|  |  |  | ////                throw new CoolException(jsonObject.get("dsc").toString()); | 
|---|
|  |  |  | ////            } | 
|---|
|  |  |  | ////            success = true; | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        } catch (Exception e) { | 
|---|
|  |  |  | //            log.error(e.getMessage()); | 
|---|
|  |  |  | //            throw new CoolException(e.getMessage()); | 
|---|
|  |  |  | //        } finally { | 
|---|
|  |  |  | //            apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|