From 4d8f947344c596f74854e36b6d8335211e0ab262 Mon Sep 17 00:00:00 2001 From: Amjacks <1932302177@qq.com> Date: Mon, 14 Apr 2025 11:42:23 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=BE=85=E6=9D=90=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=8C=BA=E5=88=86=E5=88=B0=E8=B4=A7=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cim/idm/controller/NoChargeStockIn.java | 158 ++++++++---------- .../java/com/cim/idm/dao/DeliveryDao.java | 18 ++ .../dto/delivery/DeliveryRelationDto.java | 2 + .../po/delivery/MaterialDeliveryReceive.java | 2 + .../idm/model/vo/DeliveryReceiveDetailVo.java | 1 + .../com/cim/idm/service/IDeliveryService.java | 10 ++ .../idm/service/Impl/DeliveryServiceImpl.java | 12 ++ .../resources/com/cim/idm/dao/DeliveryDao.xml | 22 ++- 8 files changed, 132 insertions(+), 93 deletions(-) diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/NoChargeStockIn.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/NoChargeStockIn.java index e6b5243..9b55d45 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/NoChargeStockIn.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/NoChargeStockIn.java @@ -5,8 +5,13 @@ import com.cim.idm.framework.IDMFrameServiceProxy; import com.cim.idm.framework.data.EventInfo; import com.cim.idm.framework.exception.IDMFrameDBErrorSignal; import com.cim.idm.framework.util.time.TimeStampUtil; +import com.cim.idm.model.dto.delivery.StoreDetailDto; +import com.cim.idm.model.po.MaterialReceiveRequest; +import com.cim.idm.model.po.delivery.MaterialDelivery; +import com.cim.idm.model.vo.DeliveryReceiveDetailVo; import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl; import com.cim.idm.mwmsextend.materialreceiverequest.service.MaterialReceiveRequestServiceImpl; +import com.cim.idm.service.IDeliveryService; import com.cim.idm.service.Impl.NCWServiceImpl; import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl; import com.cim.idm.utils.AjaxResult; @@ -44,6 +49,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.ParseException; @@ -56,6 +62,9 @@ import java.util.*; @EnableAutoConfiguration public class NoChargeStockIn { + @Resource + private IDeliveryService deliveryService; + private static Log log = LogFactory.getLog(MaterialReceiveRequestServiceImpl.class); SDKMaterialPackingServiceImpl SDKMP=new SDKMaterialPackingServiceImpl(); @@ -65,14 +74,14 @@ public class NoChargeStockIn { @Transactional @RequestMapping(value = "/NoChargeStockIn", method = RequestMethod.POST) - public AjaxResult NoChargeStockIn(@RequestBody JSONObject in ) throws CustomException { + public AjaxResult NoChargeStockIn(@RequestBody JSONObject in ) throws Exception { // 将字符串转换为JSONArray对象 String ERPFACTORY=""; String ERPLOCATION=""; String LOCATIONNAME=""; - String RECEIVEREQUESTNAME=""; - String RECEIVEREQUESTDETAILNAME=""; +// String RECEIVEREQUESTNAME=""; +// String RECEIVEREQUESTDETAILNAME=""; String MATERIALSPECNAME=""; String MATERIALUNITDESC=""; String MATERIALUNIT=""; @@ -86,6 +95,12 @@ public class NoChargeStockIn { String sdkid=""; String commitDate = ""; String opCode = ""; + // 判定是否是到货单 + StoreDetailDto storeDetailDto = new StoreDetailDto(); + storeDetailDto.setSiteName((String)in.get("SITENAME")); + storeDetailDto.setDocumentName((String)in.get("RECEIVEREQUESTNAME")); + MaterialDelivery byKey = deliveryService.getByKey(storeDetailDto); + Boolean isDelivery = Objects.nonNull(byKey); //1、首先生成入库单 //获取抬头文本 try { @@ -173,8 +188,6 @@ public class NoChargeStockIn { ERPFACTORY=(String) NoPoList.get("ERPFACTORY"); ERPLOCATION=(String) NoPoList.get("ERPLOCATION"); LOCATIONNAME= (NoPoList.get("LOCATIONNAME") == null || "null".equals(NoPoList.get("LOCATIONNAME").toString())) ? "" : NoPoList.get("LOCATIONNAME").toString(); - RECEIVEREQUESTNAME=(String) NoPoList.get("RECEIVEREQUESTNAME"); - RECEIVEREQUESTDETAILNAME=(String) NoPoList.get("RECEIVEREQUESTDETAILNAME"); MATERIALSPECNAME=(String) NoPoList.get("MATERIALSPECNAME"); MATERIALUNITDESC=(String) NoPoList.get("MATERIALUNITDESC"); MATERIALUNIT=(String) NoPoList.get("MATERIALUNIT"); @@ -189,102 +202,70 @@ public class NoChargeStockIn { sdkid=(String) NoPoList.get("SDK_ID"); if(ThisAcceptNumber!=""&&ThisAcceptNumber!=null&&ThisAcceptNumber!="0") { - //2、获取EventInfo - makeEventInfo = new EventInfoUtil().makeEventInfo("NoChargeStockIn", user, "NoChargeStockIn", "", ""); - //4、写入入库单明细 - try { - CreateMaterialReceiveRequestAct(makeEventInfo,"SDK",RECEIVEREQUESTNAME,RECEIVEREQUESTDETAILNAME,MAKEDATE,receiveAct,"NoPO",ThisAcceptNumber,MATERIALSPECNAME); - } catch (CustomException | ParseException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - //5、查询物料是否启用批次 - String sql="SELECT CASE WHEN m.IS_BATCH = 'Y' THEN '是' WHEN m.IS_BATCH = '是' THEN '是' ELSE '否' END AS REPLACED_VALUE ,DECODE(m.IQCFLAG,'Y','是','否') IQCFLAG FROM MATERIALSPEC m WHERE m.MATERIALSPECNAME =:MATERIALSPECNAME"; - Map bindMap = new HashMap(); - bindMap.put("MATERIALSPECNAME", MATERIALSPECNAME); - List> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap); - String IsBatch=(String) list.get(0).get("REPLACED_VALUE"); - String IQCFLAG=(String) list.get(0).get("IQCFLAG"); - //6、创建标签 - try { - String lastEventTimeKey= Packing( makeEventInfo, "SDK","", ThisAcceptNumber, "1",ThisAcceptNumber, "N",RECEIVEREQUESTNAME,RECEIVEREQUESTDETAILNAME,MATERIALSPECNAME,receiveAct, MAKEDATE, "","", "","", ERPLOCATION, ERPFACTORY,"", "", "","","",LOCATIONNAME,"","",MATERIALUNIT,IsBatch,IQCFLAG,sdkid); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + // 获取单据详情 + List receiveByMaterialSpec = deliveryService.getReceiveByMaterialSpec(storeDetailDto.getDocumentName(), MATERIALSPECNAME, isDelivery); + if (!receiveByMaterialSpec.isEmpty()) { + for (DeliveryReceiveDetailVo vo : receiveByMaterialSpec) { + //2、获取EventInfo + makeEventInfo = new EventInfoUtil().makeEventInfo("NoChargeStockIn", user, "NoChargeStockIn", "", ""); + //4、写入入库单明细 + try { + CreateMaterialReceiveRequestAct(makeEventInfo,"SDK",vo.getReceiveRequestName(),vo.getReceiveRequestDetailName(),MAKEDATE,receiveAct,"NoPO",ThisAcceptNumber,MATERIALSPECNAME); + } catch (CustomException | ParseException e) { + e.printStackTrace(); + } + //5、查询物料是否启用批次 + String sql="SELECT CASE WHEN m.IS_BATCH = 'Y' THEN '是' WHEN m.IS_BATCH = '是' THEN '是' ELSE '否' END AS REPLACED_VALUE ,DECODE(m.IQCFLAG,'Y','是','否') IQCFLAG FROM MATERIALSPEC m WHERE m.MATERIALSPECNAME =:MATERIALSPECNAME"; + Map bindMap = new HashMap(); + bindMap.put("MATERIALSPECNAME", MATERIALSPECNAME); + List> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap); + String IsBatch=(String) list.get(0).get("REPLACED_VALUE"); + String IQCFLAG=(String) list.get(0).get("IQCFLAG"); + //6、创建标签 + try { + Packing( makeEventInfo, "SDK","", ThisAcceptNumber, "1",ThisAcceptNumber, "N",vo.getReceiveRequestName(),vo.getReceiveRequestDetailName(),MATERIALSPECNAME,receiveAct, MAKEDATE, "","", "","", ERPLOCATION, ERPFACTORY,"", "", "","","",LOCATIONNAME,"","",MATERIALUNIT,IsBatch,IQCFLAG,sdkid); + } catch (Exception e) { + e.printStackTrace(); + } + } } } } //7、过账 - String billcode = null; - try { - // billcode = ncServer.PurStockIn(RECEIVEREQUESTNAME,"SDK",user,receiveAct); - //判断单据类型调用不同的NC接口 - String sql = "SELECT m.RECEIVEREQUESTTYPE FROM MATERIALRECEIVEREQUEST m WHERE m.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME"; - Map hashMap = new HashMap (); - hashMap.put("RECEIVEREQUESTNAME", RECEIVEREQUESTNAME); - List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); - if (queryForList != null && queryForList.size() > 0) { - String type = queryForList.get(0).get("RECEIVEREQUESTTYPE").toString(); - switch (type) { + // 采购单 + List requests = new ArrayList<>(); + if (isDelivery) { + // 到货单据 + requests = deliveryService.getReceiveByDelivery(storeDetailDto); + } else { + requests.add(deliveryService.getReceiveByKey(storeDetailDto)); + } + for (MaterialReceiveRequest request : requests) { + String billcode = null; + switch (request.getReceiveRequestType()) { case "ZK4A" : //其他入库 - billcode = ncServer.qtrNoInvoice(RECEIVEREQUESTNAME, "SDK", receiveAct,user,commitDate,opCode); + billcode = ncServer.qtrNoInvoice(request.getReceiveRequestName(), "SDK", receiveAct,user,commitDate,opCode); + break; + case "45" : //采购入库 + billcode = ncServer.PurStockIn(request.getReceiveRequestName(), "SDK",user,receiveAct,commitDate,opCode); break; - case "45" : //采购入库 - billcode = ncServer.PurStockIn(RECEIVEREQUESTNAME, "SDK",user,receiveAct,commitDate,opCode); - break; default : break; - } - } else { - throw new CustomException("找不到单据" + RECEIVEREQUESTNAME); } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + if (billcode == null || "".equals(billcode)) { + return AjaxResult.me().setErrorCode(500).setSuccess(false).setMessage("NC过账失败"); + } + //8、更新物料凭证 + SDKMP.updateUndoID(receiveAct,makeEventInfo,billcode); + //9、接收ERP返回消息更新WMS凭证 + // SDKMP.SaveUnDoInfo(receiveAct,billcode); + SDKMP.SaveUnDoInfo(billcode,commitDate);//传值错误,导致凭证信息未存储,已修改。zd.2024.9.24 + //10、更新库存状态 + SDKMP.updateStockState(receiveAct,makeEventInfo,billcode); } - if (billcode == null || "".equals(billcode)) { - return AjaxResult.me().setErrorCode(500).setSuccess(false).setMessage("NC过账失败"); - } - //8、更新物料凭证 - SDKMP.updateUndoID(receiveAct,makeEventInfo,billcode); - //9、接收ERP返回消息更新WMS凭证 - // SDKMP.SaveUnDoInfo(receiveAct,billcode); - SDKMP.SaveUnDoInfo(billcode,commitDate);//传值错误,导致凭证信息未存储,已修改。zd.2024.9.24 - //10、更新库存状态 - SDKMP.updateStockState(receiveAct,makeEventInfo,billcode); - return AjaxResult.me().setMessage("入库成功"); } - - public static EventInfo makeEventInfo( String eventName, String eventUser, String eventComment, - String reasonCodeType, String reasonCode ) - { - EventInfo eventInfo = new EventInfo(); - - eventInfo.setBehaviorName( "" ); - eventInfo.setEventName( eventName ); - eventInfo.setEventUser( eventUser ); - - if ( eventComment == null ) - eventComment = ""; - - eventInfo.setEventComment( eventComment ); - // Do Not Check TimeKey Validation - eventInfo.setCheckTimekeyValidation(false); - if ( reasonCodeType == null ) - reasonCodeType = ""; - - eventInfo.setReasonCodeType( reasonCodeType ); - - if ( reasonCode == null ) - reasonCode = ""; - - eventInfo.setReasonCode( reasonCode ); - - return eventInfo; - } - /* * Name : GenerateMaterialReceiveRequestName Desc : This function is * GenerateMaterialReceiveRequestName Author : boe cim dev. Date : @@ -360,7 +341,6 @@ public class NoChargeStockIn { * Name : CreateMaterialReceiveRequestAct Desc : * CreateMaterialReceiveRequestAct Author : boe cim dev. Date : 2016.02.17 */ - public void CreateMaterialReceiveRequestAct(EventInfo eventInfo, String siteName, String receiveRequestName, String ReceiveRequestDetailName, String makeDate, diff --git a/zi-wms-pda/src/main/java/com/cim/idm/dao/DeliveryDao.java b/zi-wms-pda/src/main/java/com/cim/idm/dao/DeliveryDao.java index 86a6419..f581cf1 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/dao/DeliveryDao.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/dao/DeliveryDao.java @@ -84,6 +84,24 @@ public interface DeliveryDao { */ List getReceiveByDelivery(@Param("dto") StoreDetailDto storeDetailDto); + /** + * 根据单号和物料获取单据详情 + * @param documentName 单据 + * @param materialSpec 物料 + * @return 单据详情 + */ + List getReceiveByMaterialSpec(@Param("documentName") String documentName, + @Param("materialSpec") String materialSpec); + + /** + * 根据单号和物料获取到货单单据详情 + * @param documentName 单据 + * @param materialSpec 物料 + * @return 单据详情 + */ + List getDeliveryByMaterialSpec(@Param("documentName") String documentName, + @Param("materialSpec") String materialSpec); + /** * 根据到库单获取采购单名称 * @param nameList 到库单 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/dto/delivery/DeliveryRelationDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/delivery/DeliveryRelationDto.java index 4c36105..d3fd9bd 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/dto/delivery/DeliveryRelationDto.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/delivery/DeliveryRelationDto.java @@ -10,6 +10,8 @@ public class DeliveryRelationDto { private Integer deliveryNum = 0; // 采购单名称 private String receiveRequestName; + // 采购单明细 + private String receiveRequestDetailName; // 料号 private String materialSpecName; } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/po/delivery/MaterialDeliveryReceive.java b/zi-wms-pda/src/main/java/com/cim/idm/model/po/delivery/MaterialDeliveryReceive.java index 7ce3035..ee188b6 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/po/delivery/MaterialDeliveryReceive.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/po/delivery/MaterialDeliveryReceive.java @@ -11,6 +11,8 @@ public class MaterialDeliveryReceive { private String deliveryNum; // 采购单号 private String receiveRequestName; + // 采购单明细号 + private String receiveRequestDetailName; // 料号 private String materialSpecName; } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/vo/DeliveryReceiveDetailVo.java b/zi-wms-pda/src/main/java/com/cim/idm/model/vo/DeliveryReceiveDetailVo.java index 7f341ef..dd9de98 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/vo/DeliveryReceiveDetailVo.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/vo/DeliveryReceiveDetailVo.java @@ -6,6 +6,7 @@ import lombok.Data; public class DeliveryReceiveDetailVo { private String receiveRequestName; + private String receiveRequestDetailName; private String materialSpecName; private double requestQuantity; private double deliveryNum; diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/IDeliveryService.java b/zi-wms-pda/src/main/java/com/cim/idm/service/IDeliveryService.java index 72a3108..c73a1db 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/IDeliveryService.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/IDeliveryService.java @@ -79,6 +79,16 @@ public interface IDeliveryService { */ List getReceiveByDelivery(StoreDetailDto storeDetailDto); + + /** + * 根据单号和物料获取单据详情 + * @param documentName 单据 + * @param materialSpec 物料 + * @param isDelivery 是否到库 + * @return 单据详情 + */ + List getReceiveByMaterialSpec(String documentName, String materialSpec, Boolean isDelivery); + /** * 根据到库单获取采购单名称 * @param nameList 到库单 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/DeliveryServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/DeliveryServiceImpl.java index a93232b..94dc5fd 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/DeliveryServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/DeliveryServiceImpl.java @@ -103,6 +103,18 @@ public class DeliveryServiceImpl implements IDeliveryService { return deliveryDao.getReceiveByDelivery(storeDetailDto); } + @Override + public List getReceiveByMaterialSpec(String documentName, String materialSpec, Boolean isDelivery) { + List voList; + if (Boolean.TRUE.equals(isDelivery)) { + // 到货单 + voList = deliveryDao.getDeliveryByMaterialSpec(documentName, materialSpec); + } else { + voList = deliveryDao.getReceiveByMaterialSpec(documentName, materialSpec); + } + return voList; + } + @Override public List getReceiveDetail(List nameList) { return deliveryDao.getReceiveDetail(nameList); diff --git a/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml b/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml index 2a181ba..02b18b3 100644 --- a/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml +++ b/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml @@ -10,7 +10,7 @@ INSERT ALL - INTO MATERIALDELIVERYRECEIVE (RECEIVEREQUESTNAME, DELIVERYNAME, DELIVERYNUM, MATERIALSPECNAME) VALUES (#{item.receiveRequestName}, #{item.deliveryName}, #{item.deliveryNum}, #{item.materialSpecName}) + INTO MATERIALDELIVERYRECEIVE (RECEIVEREQUESTNAME, DELIVERYNAME, DELIVERYNUM, MATERIALSPECNAME, RECEIVEREQUESTDETAILNAME) VALUES (#{item.receiveRequestName}, #{item.deliveryName}, #{item.deliveryNum}, #{item.materialSpecName}, #{item.receiveRequestDetailName}) SELECT * FROM dual @@ -279,7 +279,7 @@ @@ -296,14 +296,28 @@ AND m.RECEIVEREQUESTNAME = md.RECEIVEREQUESTNAME + + + +