diff --git a/nladmin-system/wms-server/src/main/java/org/nl/common/utils/ZplUtil.java b/nladmin-system/wms-server/src/main/java/org/nl/common/utils/ZplUtil.java index da53c17..473dd37 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/common/utils/ZplUtil.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/common/utils/ZplUtil.java @@ -12,7 +12,7 @@ import java.nio.charset.StandardCharsets; public class ZplUtil { - public static void print(String zpl){ + public static void print(String zpl) { String ip = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.PRINTER_IP).getValue(); String port = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.PRINTER_PORT).getValue(); @@ -25,20 +25,108 @@ public class ZplUtil { } } - public static String generatePurchaseLabel(String orderNo,String skuName, String skuCode, String qty, String batchNo, String itemNo) { + public static String generatePurchaseLabel(String orderNo, String skuName, String skuCode, String qty, String itemNo) { + + +// QRCode内容 + String qrCode = "LA," + orderNo + "#"+itemNo+"#" + skuCode + "#"+skuName+"##" + qty + "#"; + +// ====================== +// 拼接ZPL +// ====================== StringBuilder zpl = new StringBuilder(); - zpl.append("^XA\n"); - zpl.append("^CI28\n"); - zpl.append("^PW609\n"); - zpl.append("^LL406\n"); - zpl.append("^FO30,30^A0N,28,28^FD").append(escape(skuName)).append("^FS\n"); - zpl.append("^FO30,70^A0N,24,24^FD").append(escape(skuCode)).append("^FS\n"); - zpl.append("^FO30,115^A0N,32,32^FD").append(escape(qty)).append(escape(batchNo)).append("^FS\n"); - zpl.append("^FO350,20^BQN,2,5^FDQA,").append("#").append(escape(itemNo)).append("^FS\n"); - zpl.append("^XZ"); + + zpl.append("^XA\n") + .append("~TA000\n") + .append("~JSN\n") + .append("^LT0\n") + .append("^MNW\n") + .append("^MTT\n") + .append("^PON\n") + .append("^PMN\n") + .append("^LH0,0\n") + .append("^JMA\n") + .append("^PR6,6\n") + .append("~SD10\n") + .append("^JUS\n") + .append("^LRN\n") + .append("^CI27\n") + .append("^PA0,1,1,0\n") + .append("^XZ\n") + + .append("^XA\n") + .append("^MMT\n") + .append("^PW609\n") + .append("^LL406\n") + .append("^LS0\n") + + // ====================== + // 以下图片(GFA)保持不变 + // ====================== + .append("^FO24,363^GB562,0,4^FS\n") + .append("^FO21,54^GB562,0,4^FS\n") + .append("^FO230,14^GFA,329,544,16,:Z64:eJyd0TuOwyAQBuBBI8VVdi+wCtdIGvtKKVMgJ5KLvZalFLkGiMLlIq20YBl5MhiEUm0RaPgE/MMD4I12AcBpzGMJcFbQDOy2uA+Hxk6huiVColgticSr9xrApv1f2SJcUj4vS96JO0UxbL6lzcJTlLqHMk/jsiqp1RFaufnmvJJbvizn8ZHrB+i77A+v0DioPvxd0bJVV883WKOrO/ZEDmLxaVX4ww7ZOHMemVfHZOHavH72PS7GYTaOC+fxPGr2lUgnL+Sax7rVcrNWzS+5z+9sHTCiJSfFmp88YBCD4bRYzJ0vdITzO5/5f3sCiQWikw==:C454\n") + .append("^FO24,68^GFA,169,200,8,:Z64:eJxdzrENwkAQBMA9nYQTS6SO7FJohTIsmcCuwC09ooAvAZcA0TsALftvor9kdHsbHFBNe9CseJ2kRyQ6N3vOxYGBq9/lg3nvp0PlaVf/b9dPgRz4KXepfrrZFrK5j/FavHBP0ZYsI0w5SJylf4lG2jvCQ/1mPT91eVF/:2FFA\n") + + // 运单号 + .append("^FT132,88^A0N,20,25^FH\\^CI28^FD") + .append(orderNo) + .append("^FS^CI27\n") + + .append("^FO40,111^GFA,133,200,8,:Z64:eJxjYMAO2BkOgGn+/w/q/wBpeXsIbcPAUAHEDNUMDGC+8YEEMM3+/wNU/QcGZpB69ub//xsQtD17g40EA5gGq+dH0AY2EJoBTNs3MP6B0Axgmh9oIQ43IgMA/2EiTg==:5269\n") + + // 行号 + .append("^FT245,129^A0N,20,25^FH\\^CI28^FD") + .append(itemNo) + .append("^FS^CI27\n") + + .append("^FO31,201^GFA,177,200,8,:Z64:eJx1zjEKwlAMBuCUDo5ZnV6v4VDoWTyBqyD0UbzY6z0EcwLxkcEOkt/EipP+y0fgJwnR73BPx7Q6phaSd3tYiOrOoY3r/FER/cNVYURbxn2xDk/XwuFR0U1Scq7AGTLc9L2PL7qkZhLu1e81widxWbiGG+G5uG358+Y3LwGvUEY=:FEB3\n") + + // 物料编码 + .append("^FT167,217^A0N,20,25^FH\\^CI28^FD") + .append(skuCode) + .append("^FS^CI27\n") + + .append("^FO24,245^GFA,241,300,12,:Z64:eJyNz7ENwjAQBdCPKNKRBdBljRSRMgsT0EYC+aBiCyahMGINFDwBsuWCVP7YERUNXPWKf193wO+pOwyCAVU72wgmqxdA2w0T6ExroQxMC3pRV5zM8upE/cc3y1AykVK9DkqL7SMyrRQy5k76KcGgl9kpYY+eB/SvwOZIX/KqgTzRm+z+mXcbl+1Q3+MkC+c5ZndxKG7OFvXOZed7Smf42GRf7ZyR9R+Pf80bAEhuBg==:1147\n") + .append("^FO213,245^GFA,177,200,8,:Z64:eJxljrEJw0AMRQUq3BiygbVJZskmDlyRMiNkEEOi4CUCaTLBcXDtoR+dlVT+hR7/S3xEtNM49lkI4KROM34r1XPODBWo2fAoP7apKlGQ74fF90/gWoOS1HMpkl5+f5xvaIK1yQU21RUYev/Jezbm3IkS/s/5E/km1v27oS/nQ1kK:C268\n") + .append("^FO42,287^GFA,153,200,8,:Z64:eJxjYMAO5L43MB8A043NUPpxG5CW/97w/X8DA0P99wcQ+v+HdH6Q/P8P/O/A9APbNxB1tQ8YQOoaCkF03feGhxC6+fEHsHnNh3+A1T88/gdK7wPp+//xvXwDSN0HG5C5NocfVLDhcCMyAABuhDsZ:8118\n") + + // 物料名称 + .append("^FT167,307^A0N,20,25^FH\\^CI28^FD") + .append(skuName) + .append("^FS^CI27\n") + + .append("^FO42,334^GFA,157,200,8,:Z64:eJxjYMAAH2SAhPFzhv//gLT1f4YPckBa/j2EL92fAObb//8A5gNpBmYgzf/v8f//DUB1fx6A9Vv/fwCVf/D5HpCuf38Awn9+AMyXfQ7hyx9vAPP5vz9gPgOk2aHmyv/7wHwYaF6NRSLYXEIAAB6jPc4=:5C5A\n") + + // 箱数 + .append("^FT249,354^A0N,20,25^FH\\^CI28^FD") + .append(qty) + .append("^FS^CI27\n") + + .append("^FO23,319^GB352,0,4^FS\n") + .append("^FO21,277^GB352,0,4^FS\n") + .append("^FO21,233^GB352,0,4^FS\n") + .append("^FO21,188^GB352,0,4^FS\n") + .append("^FO21,100^GB352,0,4^FS\n") + .append("^FO372,58^GB0,308,4^FS\n") + + // 二维码 + .append("^FT380,333^BQN,2,7\n") + .append("^FH\\^FD") + .append(qrCode) + .append("^FS\n") + + .append("^FO112,58^GB0,308,4^FS\n") + .append("^FO21,145^GB352,0,4^FS\n") + .append("^FO19,156^GFA,237,300,12,:Z64:eJyFz0EKwjAQBdAJgXYjdOuqPYhgr+IRBDdCheYGvYFnGejCZY6QQi8QcZGA1e+0VbpRHLJ4hM9nhujHrBamDfmEciYtz1KAdh3ApJwJUOBaXIDRkDOlG90CGYZS/vNKnCJizoRItVkMv3FjhgH99JX75M/7w2XqCackX/ft7LGTb7LQcTe5gKESMVja0tuw0k+eJUMA3X2NTqwf0P0wW11txvHbnf/mBf1cd3Q=:6688\n") + .append("^FO228,158^GFA,101,200,8,:Z64:eJxjYCAOMDP8kG8A0vbMd4wPAGl+5nmVD0A0O4zug9L9zAcgNFg9Ep8RKl+Ioo95HoTPfCcZpM7+4Q/7BiLdhAwAiycaRQ==:67BF\n") + .append("^PQ1,0,1,Y\n") + .append("^XZ"); + return zpl.toString(); } - public static String generateVehicleLabel(VehicleLabelDto dto){ + + public static String generateVehicleLabel(VehicleLabelDto dto) { StringBuilder zpl = new StringBuilder(); zpl.append("^XA\n"); zpl.append("^CI28\n"); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToErpService.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToErpService.java index 4a1347b..b0e5b5e 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToErpService.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToErpService.java @@ -43,4 +43,6 @@ public interface WmsToErpService { * } */ JSONObject materialSync(JSONObject whereJson); + + void dealBus(JSONObject requestData); } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java index 2eca8ec..577bc55 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/MesToWmsServiceImpl.java @@ -11,11 +11,7 @@ import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.core.tasks.LineCallFullTask; import org.nl.wms.sch_manage.service.core.tasks.LineReturnEmptyTask; import org.nl.wms.sch_manage.service.dao.SchBasePoint; -import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; -import org.nl.wms.warehouse_manage.service.dao.GroupPlate; -import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService; -import org.nl.wms.welding_manage.service.work_order.IWorkOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,10 +27,7 @@ public class MesToWmsServiceImpl implements MesToWmsService { private IMdPbGroupplateService iMdPbGroupplateService; @Autowired private ISchBasePointService iSchBasePointService; - @Autowired - private IWorkOrderService iWorkOrderService; - @Autowired - private IPmStockReturnService iPmStockReturnService; + @Transactional @Override @@ -51,7 +44,7 @@ public class MesToWmsServiceImpl implements MesToWmsService { case "3"://返空 case "4"://托盘余料退回 //TODO - String[] empVehLocation = {"EB101101","EB101102"};//暂定空托对接位 + String[] empVehLocation = {"EB101101", "EB101102"};//暂定空托对接位 if (StrUtil.isEmptyIfStr(vehicleCode)) { throw new BadRequestException("请求失败,上料口没有绑定托盘"); } @@ -76,25 +69,23 @@ public class MesToWmsServiceImpl implements MesToWmsService { if (!StrUtil.isEmptyIfStr(vehicleCode) && Objects.equals(mesTaskParams.getRequestedCode(), "2")) { throw new BadRequestException("请求失败,上料口存在托盘占用"); } - //获取组盘信息 - List groupList = iMdPbGroupplateService.list(new LambdaQueryWrapper() - .eq(GroupPlate::getLoad_port, portPoint.getPoint_code()) - .eq(GroupPlate::getExt_code, mesTaskParams.getOrderCode()) - .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))); - if (groupList.isEmpty()) { + List matPoints = iSchBasePointService.list(new LambdaQueryWrapper() + .isNotNull(SchBasePoint::getVehicle_code) + .eq(SchBasePoint::getRegion_code, portPoint.getRegion_code()) + .eq(SchBasePoint::getPoint_type, "1")); + + if (matPoints.isEmpty()) { throw new BadRequestException("叫满任务失败,库存没有当前下料口的组盘物料"); } - GroupPlate groupPlate = groupList.get(0); - String storagevehicleCode = groupPlate.getStoragevehicle_code(); - //根据托盘获取当前起点 - SchBasePoint start_point = iSchBasePointService.getOne(new LambdaQueryWrapper() - .eq(SchBasePoint::getVehicle_code, storagevehicleCode)); + SchBasePoint start_point = matPoints.get(0); + String veh = start_point.getVehicle_code(); JSONObject taskFormCall = new JSONObject(); taskFormCall.put("config_code", "LineCallFullTask"); taskFormCall.put("point_code1", start_point.getPoint_code()); taskFormCall.put("point_code2", portPoint.getPoint_code()); - taskFormCall.put("vehicle_code", storagevehicleCode); + taskFormCall.put("vehicle_code", veh); taskFormCall.put("create_name", "MES"); + taskFormCall.put("workOrderCode", mesTaskParams.getOrderCode()); LineCallFullTask lineCallFullTask = SpringContextHolder.getBean("LineCallFullTask"); lineCallFullTask.create(taskFormCall); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/WmsToErpServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/WmsToErpServiceImpl.java index b48edaf..213555c 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/WmsToErpServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/WmsToErpServiceImpl.java @@ -5,12 +5,11 @@ import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; -import org.nl.wms.ext_manage.util.ErpUtil; -import org.nl.wms.system_manage.enums.SysParamConstant; -import org.nl.wms.system_manage.service.param.dao.Param; -import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl; import org.nl.wms.ext_manage.enums.EXTConstant; import org.nl.wms.ext_manage.service.WmsToErpService; +import org.nl.wms.ext_manage.util.ErpUtil; +import org.nl.wms.system_manage.enums.SysParamConstant; +import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -57,4 +56,9 @@ public class WmsToErpServiceImpl implements WmsToErpService { } return result; } + + @Override + public void dealBus(JSONObject requestData) { + ErpUtil.create().login().reqBus(requestData.toJSONString()); + } } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java index 5414432..0eeb373 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/ErpUtil.java @@ -18,6 +18,7 @@ public class ErpUtil { private String loginUrl; private String busUrl; + private String auditUrl; private String userName; private String password; private String slnName; @@ -33,6 +34,7 @@ public class ErpUtil { ErpUtil erpUtil = new ErpUtil(); erpUtil.setLoginUrl(SpringContextHolder.getProperties("erp.loginUrl")); erpUtil.setBusUrl(SpringContextHolder.getProperties("erp.busUrl")); + erpUtil.setAuditUrl(SpringContextHolder.getProperties("erp.auditUrl")); erpUtil.setUserName(SpringContextHolder.getProperties("erp.username")); erpUtil.setPassword(SpringContextHolder.getProperties("erp.password")); erpUtil.setSlnName(SpringContextHolder.getProperties("erp.slnName")); @@ -74,6 +76,29 @@ public class ErpUtil { * 审核接口请求 */ public void audit(String json){ + try { + call.clearOperation(); + call.setOperationName("dealTask"); + call.setTimeout(1000*60); + call.setMaintainSession(true); + call.setTargetEndpointAddress(auditUrl); + call.setReturnQName(new QName("", "dealTaskReturn")); + call.addHeader(new SOAPHeaderElement("http://login.webservice.bos.kingdee.com", "SessionId", sessionId)); + Object result = call.invoke(new Object[]{json}); + JSONObject resultJson = JSON.parseObject(result.toString()); + if (resultJson.getBoolean("status") == false){ + throw new BadRequestException("回传失败:" + resultJson.getString("message")); + } + log.error("Eas回传接口请求成功!"); + log.error("Eas回传接口invoke调用结果:" + result.toString()); + } catch (Exception e) { + throw new BadRequestException("erp审核接口请求失败:" + e.getMessage()); + } + } + /** + * 请求业务接口 + */ + public void reqBus(String json){ try { call.clearOperation(); call.setOperationName("dealTask"); @@ -87,10 +112,10 @@ public class ErpUtil { if (resultJson.getInteger("result") == 0){ throw new BadRequestException("回传失败:" + resultJson.getString("msg")); } - log.error("Eas回传接口请求成功!"); - log.error("Eas回传接口invoke调用结果:" + result.toString()); + log.error("Eas业务接口请求成功!"); + log.error("Eas业务接口invoke调用结果:" + result.toString()); } catch (Exception e) { - throw new BadRequestException("erp审核接口请求失败:" + e.getMessage()); + throw new BadRequestException("erp业务接口请求失败:" + e.getMessage()); } } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java index 7932e70..643062e 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/ios_manage/purchase/service/impl/InboundPdaServiceImpl.java @@ -186,6 +186,7 @@ public class InboundPdaServiceImpl implements InboundPdaService { .status(GROUP_PLATE_STATUS.code("组盘")) .ext_code(dto.getBill_id()) .ext_type(SourceBillTypeEnum.PM_PURCHASE.getBillType()) + .ext_dtl_code(item.getItem_no()) .create_id(SecurityUtils.getCurrentUserId()) .create_name(SecurityUtils.getCurrentNickName()) .create_time(DateUtil.now()) @@ -285,6 +286,7 @@ public class InboundPdaServiceImpl implements InboundPdaService { .status(GROUP_PLATE_STATUS.code("组盘")) .ext_code(usualInboundDto.getBill_id()) .ext_type(SourceBillTypeEnum.PM_PURCHASE.getBillType()) + .ext_dtl_code(item.getItem_no()) .create_id(SecurityUtils.getCurrentUserId()) .create_name(SecurityUtils.getCurrentNickName()) .create_time(DateUtil.now()) @@ -342,6 +344,7 @@ public class InboundPdaServiceImpl implements InboundPdaService { dtl.put("plan_qty", plateDao.getQty()); dtl.put("ext_code", plateDao.getExt_code()); dtl.put("ext_type", plateDao.getExt_type()); + dtl.put("source_billdtl_id", plateDao.getExt_dtl_code()); dtl.put("callback_strategy", "dealPurchaseRecBillCallback"); // 调用新增 tableData.add(dtl); @@ -450,6 +453,7 @@ public class InboundPdaServiceImpl implements InboundPdaService { dtl.put("plan_qty", plateDao.getQty()); dtl.put("ext_code", plateDao.getExt_code()); dtl.put("ext_type", plateDao.getExt_type()); + dtl.put("source_billdtl_id", plateDao.getExt_dtl_code()); dtl.put("callback_strategy", "dealPurchaseRecBillCallback"); // 调用新增入库单 tableData.add(dtl); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/purchase/service/impl/PurchaseServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/purchase/service/impl/PurchaseServiceImpl.java index 9cfbb23..cecf584 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/purchase/service/impl/PurchaseServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pm_manage/purchase/service/impl/PurchaseServiceImpl.java @@ -204,7 +204,7 @@ public class PurchaseServiceImpl extends ServiceImpl vehicleLoadPortMap = iMdPbGroupplateService.list( + Map vehicleLoadPortMap = iMdPbGroupplateService.list( new LambdaQueryWrapper() .in(GroupPlate::getStoragevehicle_code, validPoints.stream() .map(SchBasePoint::getVehicle_code) - .collect(Collectors.toSet())) - .select(GroupPlate::getStoragevehicle_code, GroupPlate::getLoad_port)).stream() + .collect(Collectors.toSet()))).stream() .collect(Collectors.toMap( GroupPlate::getStoragevehicle_code, - GroupPlate::getLoad_port + t -> t )); for (SchBasePoint validPoint : validPoints) { - final String loadPoint = vehicleLoadPortMap.get(validPoint.getVehicle_code()); - final SchBasePoint loadInfo = iSchBasePointService.selectByCode(loadPoint); + GroupPlate groupPlate = vehicleLoadPortMap.get(validPoint.getVehicle_code()); + final SchBasePoint loadInfo = iSchBasePointService.selectByCode(groupPlate.getLoad_port()); final List empPointCodes = empRegionPointMap.get(loadInfo.getRegion_code()); if (CollectionUtil.isNotEmpty(empPointCodes)){ //创建搬运任务 @@ -82,6 +81,7 @@ public class StructAreaDeliveryAutoTask { param.put("vehicle_code",validPoint.getVehicle_code()); param.put("config_code","Point2PointTask"); param.put("Priority","1"); + param.put("workOrderCode",groupPlate.getExt_code()); point2PointTask.create(param); } } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/LineCallFullTask.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/LineCallFullTask.java index a3372fd..cf098dc 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/LineCallFullTask.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/LineCallFullTask.java @@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.core.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -10,6 +11,7 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.ext_manage.util.ErpUtil; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; @@ -19,11 +21,19 @@ import org.nl.wms.sch_manage.service.core.TaskType; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_manage.service.dao.GroupPlate; +import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService; +import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; +import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum; +import org.nl.wms.welding_manage.service.work_order.IWorkOrderService; +import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderBomDao; +import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -; +;import java.util.List; /** * @Author: Liuxy @@ -45,6 +55,12 @@ public class LineCallFullTask extends AbstractTask { */ @Autowired private ISchBasePointService iSchBasePointService; + @Autowired + private IWorkOrderService iWorkOrderService; + @Autowired + private IPmStockReturnService iPmStockReturnService; + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; @Override @@ -57,6 +73,7 @@ public class LineCallFullTask extends AbstractTask { task.setPoint_code1(json.getString("point_code1")); task.setPoint_code2(json.getString("point_code2")); task.setVehicle_code(json.getString("vehicle_code")); + task.setExt_group_data(json.getString("workOrderCode")); task.setRequest_param(json.toString()); task.setPriority(json.getString("Priority")); task.setCreate_id(SecurityUtils.getCurrentUserId()); @@ -122,6 +139,7 @@ public class LineCallFullTask extends AbstractTask { } @Override + @Transactional public void forceFinish(String task_code) { SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { @@ -166,6 +184,64 @@ public class LineCallFullTask extends AbstractTask { taskObj.setRemark("已完成"); taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskService.updateById(taskObj); + //调用eas领料出库单 + //获取组盘信息 + String workOrderCode = taskObj.getExt_group_data(); + String vehicleCode = taskObj.getVehicle_code(); + List groupList = iMdPbGroupplateService.list(new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, vehicleCode) + .eq(GroupPlate::getExt_code, workOrderCode) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))); + //获取工单信息 + WorkOrderDao workOrder = iWorkOrderService.getWorkOrder(workOrderCode); + List orderBomItems = iWorkOrderService.getOrderBomItem(workOrderCode); + + // 创建最外层的JSONObject + JSONObject root = new JSONObject(); + root.put("method", "DealMaterailReqBill"); + root.put("type", "MES"); + // 创建data对象 + JSONObject data = new JSONObject(); + data.put("bizStatus", "02"); + data.put("mesNo", workOrder.getId()); + // 创建entrys数组 + JSONArray entrys = new JSONArray(); + for (GroupPlate plate : groupList) { + for (WorkOrderBomDao orderBomItem : orderBomItems) { + if (plate.getMaterial_code().equals(orderBomItem.getMaterial_code())){ + JSONObject entry = new JSONObject(); + entry.put("qty", plate.getQty()); + entry.put("sourceBillId", workOrder.getOrder_id()); + entry.put("sourceBillEntryId", orderBomItem.getItem_id()); + entry.put("sourceBillNo", workOrder.getOrder_code()); + // 将entry添加到数组中 + entrys.add(entry); + } + } + iMdPbGroupplateService.removeById(plate.getGroup_id()); + } + // 将entrys数组设置到data中 + data.put("entrys", entrys); + // 将data设置到根对象中 + root.put("data", data); +// ErpUtil.create().login().audit(root.toJSONString()); + //保存回传单 + PmStockReturn stockReturn = new PmStockReturn(); + stockReturn.setRequest_Id(workOrder.getOrder_id()); + stockReturn.setRequest_type(IOSEnum.BILL_TYPE.code("生产领料")); + stockReturn.setStatus(StockReturnStatusEnum.TODO.getCode()); // 0-处理中 + stockReturn.setCreate_time(DateUtil.now()); + stockReturn.setRequest_data(root.toJSONString()); + //调erp业务接口 + try { + ErpUtil.create().login().reqBus(root.toJSONString()); + stockReturn.setStatus(StockReturnStatusEnum.SUCESS.getCode()); + } catch (Exception e) { + stockReturn.setError_msg(e.getMessage()); + stockReturn.setStatus(StockReturnStatusEnum.FAIL.getCode()); + } + iPmStockReturnService.save(stockReturn); + } @Transactional diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/Point2PointTask.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/Point2PointTask.java index ae1e272..17ef5a3 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/Point2PointTask.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/tasks/Point2PointTask.java @@ -2,14 +2,16 @@ package org.nl.wms.sch_manage.service.core.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.service.IStructattrService; -import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.ext_manage.util.ErpUtil; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; @@ -19,10 +21,20 @@ import org.nl.wms.sch_manage.service.core.TaskType; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_manage.service.dao.GroupPlate; +import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService; +import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; +import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum; +import org.nl.wms.welding_manage.service.work_order.IWorkOrderService; +import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderBomDao; +import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * 点对点搬运任务 */ @@ -47,6 +59,12 @@ public class Point2PointTask extends AbstractTask { */ @Autowired private IStructattrService iStructattrService; + @Autowired + private IWorkOrderService iWorkOrderService; + @Autowired + private IPmStockReturnService iPmStockReturnService; + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; @Override public String create(JSONObject json) { @@ -60,6 +78,7 @@ public class Point2PointTask extends AbstractTask { task.setVehicle_code(json.getString("vehicle_code")); task.setRequest_param(json.toString()); task.setPriority(json.getString("Priority")); + task.setExt_group_data(json.getString("workOrderCode")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); @@ -108,6 +127,7 @@ public class Point2PointTask extends AbstractTask { } @Override + @Transactional public void forceFinish(String task_code) { SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { @@ -152,6 +172,65 @@ public class Point2PointTask extends AbstractTask { taskObj.setRemark("已完成"); taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskService.updateById(taskObj); + //获取组盘信息 + String workOrderCode = taskObj.getExt_group_data(); + String vehicleCode = taskObj.getVehicle_code(); + List groupList = iMdPbGroupplateService.list(new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, vehicleCode) + .eq(GroupPlate::getExt_code, workOrderCode) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))); + //获取工单信息 + WorkOrderDao workOrder = iWorkOrderService.getWorkOrder(workOrderCode); + List orderBomItems = iWorkOrderService.getOrderBomItem(workOrderCode); + + // 创建最外层的JSONObject + JSONObject root = new JSONObject(); + root.put("method", "DealLLDBBill"); + root.put("type", "MES"); + // 创建data对象 + JSONObject data = new JSONObject(); + data.put("billNo", taskObj.getTask_id()); + data.put("bizTypeNo", "331"); + data.put("issueStorageOrgUnitNo", workOrder.getOrg_code()); + data.put("receiptStorageOrgUnitNo", workOrder.getOrg_code()); + // 创建entrys数组 + JSONArray entrys = new JSONArray(); + for (GroupPlate plate : groupList) { + for (WorkOrderBomDao orderBomItem : orderBomItems) { + if (plate.getMaterial_code().equals(orderBomItem.getMaterial_code())){ + JSONObject entry = new JSONObject(); + entry.put("qty", plate.getQty()); + entry.put("materialNo", orderBomItem.getMaterial_code()); + entry.put("unitNo", "PCS"); + entry.put("receiptWarehouseNo", workOrder.getDefault_warehouse_code()); + entry.put("issueWarehouseNo", orderBomItem.getWarehouse_code()); + // 将entry添加到数组中 + entrys.add(entry); + } + } + iMdPbGroupplateService.removeById(plate.getGroup_id()); + } + // 将entrys数组设置到data中 + data.put("entrys", entrys); + // 将data设置到根对象中 + root.put("data", data); +// ErpUtil.create().login().audit(root.toJSONString()); + //保存回传单 + PmStockReturn stockReturn = new PmStockReturn(); + stockReturn.setRequest_Id(workOrder.getOrder_id()); + stockReturn.setRequest_type(IOSEnum.BILL_TYPE.code("库存调拨")); + stockReturn.setStatus(StockReturnStatusEnum.TODO.getCode()); // 0-处理中 + stockReturn.setCreate_time(DateUtil.now()); + stockReturn.setRequest_data(root.toJSONString()); + //调erp业务接口 + try { + ErpUtil.create().login().audit(root.toJSONString()); + stockReturn.setStatus(StockReturnStatusEnum.SUCESS.getCode()); + } catch (Exception e) { + stockReturn.setError_msg(e.getMessage()); + stockReturn.setStatus(StockReturnStatusEnum.FAIL.getCode()); + } + iPmStockReturnService.save(stockReturn); } @Transactional diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSEnum.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSEnum.java index b6655e0..a5c5415 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSEnum.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSEnum.java @@ -28,7 +28,7 @@ public enum IOSEnum { BILL_STATUS(MapOf.of("生成","10", "分配中", "20", "分配完", "30", "完成", "99")), // 入库业务类型 - BILL_TYPE(MapOf.of("生产入库","0001", "采购入库", "0005","生产领料", "0006", "手工入库", "0009","销售出库","1001","生产出库","1005","调拨出库","1004", "手工出库", "1009")), + BILL_TYPE(MapOf.of("生产入库","0001", "采购入库", "0005","生产领料", "0006","库存调拨", "0007", "手工入库", "0009","销售出库","1001","生产出库","1005","调拨出库","1004", "手工出库", "1009")), //入库分配明细状态 INBILL_DIS_STATUS(MapOf.of("未生成", "00", "生成", "01", "执行中", "02", "完成", "99")), diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java index fd64b21..7d9eff3 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java @@ -202,6 +202,7 @@ public class InBillServiceImpl extends ServiceImpl i ioStorInvDtl.put("qty_unit_name", row.get("qty_unit_name")); ioStorInvDtl.put("source_bill_type", row.get("ext_type")); ioStorInvDtl.put("source_bill_code", row.get("ext_code")); + ioStorInvDtl.put("source_billdtl_id", row.get("source_billdtl_id")); ioStorInvDtl.put("callback_strategy", row.get("callback_strategy")); ioStorInvDtl.put("assign_qty", "0"); ioStorInvDtl.put("unassign_qty", row.get("qty")); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java index 9131180..15e238f 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java @@ -114,6 +114,11 @@ public class GroupPlate implements Serializable { */ private String ext_type; + /** + * 来源单据明细 + */ + private String ext_dtl_code; + /** * 上料口 */ diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java index 458584f..5dcc0ca 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.wms.ext_manage.service.WmsToErpService; +import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService; import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum; @@ -90,7 +91,11 @@ public class PmStockReturnServiceImpl extends ServiceImpl entryList = new ArrayList<>(); Purchasedtl purchasedtl = purchasedtlService.getOne(new LambdaQueryWrapper() .eq(Purchasedtl::getBill_id, orderCode) - .eq(Purchasedtl::getSku_code, param.getMaterial_code())); +// .eq(Purchasedtl::getSku_code, param.getMaterial_code()) + .eq(Purchasedtl::getItem_no, param.getSource_billdtl_id())); purchasedtl.setInstock_qty(param.getPlan_qty().add(purchasedtl.getInstock_qty())); purchasedtlService.updateById(purchasedtl);