diff --git a/zi-wms-pda/src/main/java/com/cim/idm/constants/receive/IsBatchEnums.java b/zi-wms-pda/src/main/java/com/cim/idm/constants/receive/IsBatchEnums.java new file mode 100644 index 0000000..bcf8bba --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/constants/receive/IsBatchEnums.java @@ -0,0 +1,17 @@ +package com.cim.idm.constants.receive; + +import lombok.Getter; + +@Getter +public enum IsBatchEnums { + Y("Y", "是批次"), + N("N", "不是批次"); + + private final String code; + private final String info; + + IsBatchEnums(String code, String info) { + this.code = code; + this.info = info; + } +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java index ccecb33..e93a424 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java @@ -2,6 +2,7 @@ package com.cim.idm.controller; import com.alibaba.fastjson.JSONObject; import com.cim.idm.constants.delivery.DeliveryStateEnums; +import com.cim.idm.constants.delivery.DeliveryTypeEnums; import com.cim.idm.exception.GlobalException; import com.cim.idm.model.dto.delivery.DeliveryDelDto; import com.cim.idm.model.dto.delivery.DeliveryDto; @@ -71,7 +72,7 @@ public class DeliveryController { if (Objects.nonNull(byKey)) { deliveryName = byKey.getDeliveryName(); // 到库单(找出该单据下的所有的采购单) - nameList = deliveryService.getReceiveByDelivery(storeDetailDto) + nameList = deliveryService.getRelByDelivery(storeDetailDto) .stream().map(MaterialDeliveryReceive::getReceiveRequestName).collect(Collectors.toList()); } else { // 采购单 @@ -85,8 +86,16 @@ public class DeliveryController { throw new GlobalException("不存在该单据"); } // 获取采购单明细及批次 - return AjaxResult.me().setSuccess(true).setResultObj( - deliveryService.getStoreDetail(storeDetailDto.getSiteName(), nameList, deliveryName)); + String deliveryType = params.get("deliveryType"); + if (deliveryType.equals(DeliveryTypeEnums.BATCH.getCode())) { + // 批次 + return AjaxResult.me().setSuccess(true).setResultObj( + deliveryService.getStoreDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName)); + } else { + // 辅材 + return AjaxResult.me().setSuccess(true).setResultObj( + deliveryService.getMaterialDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName)); + } } /** diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java index 31452a0..adc7839 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java @@ -2,13 +2,19 @@ package com.cim.idm.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.cim.idm.constants.delivery.DeliveryStateEnums; import com.cim.idm.framework.IDMFrameServiceProxy; import com.cim.idm.framework.data.EventInfo; +import com.cim.idm.model.dto.delivery.DeliveryEditDto; +import com.cim.idm.model.dto.delivery.StoreDetailDto; +import com.cim.idm.model.dto.packing.MaterialPackingListDto; import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.model.MaterialreceiveActDto; import com.cim.idm.model.dto.TrackOutBoDto; +import com.cim.idm.model.po.delivery.MaterialDelivery; import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl; import com.cim.idm.service.IDeliveryService; +import com.cim.idm.service.IMaterialPackingService; import com.cim.idm.service.impl.QMSServiceImpl; import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.utils.AjaxResult; @@ -17,7 +23,6 @@ import com.cim.idm.wmsextend.generic.errorHandler.CustomException; import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking; import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey; -import com.cim.idm.wmspackage.materialpacking.management.info.RemoveInfo; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +48,9 @@ public class MaterialReceiveActController { @Resource private IDeliveryService deliveryService; + @Resource + private IMaterialPackingService mpService; + private static Log log = LogFactory.getLog(MaterialReceiveActController.class); private EventInfo makeEventInfo; @@ -176,15 +184,6 @@ public class MaterialReceiveActController { String receiveRequestDetailName = box.getReceiveRequestDetailName(); // 单据 String receiveRequestName = boxs.getReceiveRequestName(); - // 判断是否是倒库单据 - /*MaterialReceiveRequest byKey = deliveryService.getByKey(boxs.getSiteName(), boxs.getReceiveRequestName()); - if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) { - // 检索该到库订单下该物料的采购订单的 name - List collect = deliveryService.getReceiveByDelivery(boxs.getSiteName(), boxs.getReceiveRequestName()) - .stream().filter(item -> item.getMaterialSpecName().equals(materialSpecName)).collect(Collectors.toList()); - // 检查剩余数量 - // @TODO - }*/ String remark = box.getRemark(); String sdkid = box.getSdkid() == null ? "" : box.getSdkid(); String shipRequestDetailName = box.getShipRequestDetailName(); @@ -307,46 +306,27 @@ public class MaterialReceiveActController { @RequestMapping(value = "/DeleteTrackOutBox", method = RequestMethod.POST) public AjaxResult DeleteTrackOutBox(@RequestBody JSONObject in ) throws Exception{ + // 获取属性 TrackOutBoDto boxs = JSON.toJavaObject(in, TrackOutBoDto.class); MaterialreceiveActDto box = boxs.getMaterialreceiveAct(); String user = boxs.getUser(); String materialSpecName = box.getMaterialSpecName(); String receiveRequestName = box.getReceiveRequestName(); - String sdkid = box.getSdkid(); - String phase = box.getPhase(); String siteName = box.getSiteName(); makeEventInfo = new EventInfoUtil().makeEventInfo("DeleteTrackOutBox", user, "DeleteTrackOutBox"); - String sql = " SELECT * FROM MATERIALPACKING m WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME" - + " AND MATERIALSPECNAME = :MATERIALSPECNAME AND (:PHASE IS NULL OR PHASE = :PHASE) AND (:SDK_ID IS NULL OR SDK_ID = :SDK_ID) AND STOCKSTATE = 'Created'"; - Map hashMap = new HashMap (); - hashMap.put("MATERIALSPECNAME", materialSpecName); - hashMap.put("RECEIVEREQUESTNAME", receiveRequestName); - hashMap.put("PHASE", phase); - hashMap.put("SDK_ID", sdkid); - List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); + // 获取列表 + MaterialPackingListDto dto = new MaterialPackingListDto(); + dto.setMaterialSpecName(materialSpecName); + dto.setReceiveRequestName(receiveRequestName); + dto.setPhase(box.getPhase()); + dto.setSdkId(box.getSdkid()); + List> queryForList = mpService.getMaterialPacking(dto); for (Map map : queryForList) { + // 找到条码明细表的数据,先更新订单在删除条码明细 + Map hashMap = new HashMap<> (); + hashMap.put("MATERIALSPECNAME", materialSpecName); String materialPackingName = map.get("MATERIALPACKINGNAME").toString(); - MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName); - RemoveInfo removeInfo = new RemoveInfo(); - MaterialPackingServiceProxy.getMaterialPackingService().remove(materialPackingKey,makeEventInfo,removeInfo); - //找到条码明细表的数据,先更新订单在删除条码明细 - String selectSql = "SELECT * FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; - hashMap.put("MATERIALPACKINGNAME", materialPackingName); - List> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectSql, hashMap); - for (Map map2 : queryForList2) { - String qty = map2.get("QTY").toString(); - String receiveRequestName2 = map2.get("RECEIVEREQUESTNAME").toString(); - String receiveRequestDetailName2 = map2.get("RECEIVEREQUESTDETAILNAME").toString(); - hashMap.put("RECEIVEREQUESTNAME", receiveRequestName2); - hashMap.put("RECEIVEREQUESTDETAILNAME", receiveRequestDetailName2); - hashMap.put("QTY", qty); - String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - :QTY " - + "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME"; - IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap); - - String deleteSql = "DELETE FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME AND RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME"; - IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap); - } + mpService.delMaterialPacking(hashMap, materialPackingName, siteName, makeEventInfo); } //更新订单数量 return AjaxResult.me().setResultObj(null); @@ -355,36 +335,18 @@ public class MaterialReceiveActController { @RequestMapping(value = "/DeleteTrackOutThisBox", method = RequestMethod.POST) public AjaxResult DeleteTrackOutThisBox(@RequestBody JSONObject in ) throws Exception{ + // 获取属性 TrackOutBoDto boxs = JSON.toJavaObject(in, TrackOutBoDto.class); MaterialreceiveActDto box = boxs.getMaterialreceiveAct(); String user = boxs.getUser(); String materialSpecName = box.getMaterialSpecName(); - String materialPackingName2 = box.getMaterialPackingName(); - String siteName = "SDK"; + String materialPackingName = box.getMaterialPackingName(); + String siteName = box.getSiteName(); makeEventInfo = new EventInfoUtil().makeEventInfo("DeleteTrackOutBox", user, "DeleteTrackOutBox"); - Map hashMap = new HashMap (); + // 找到条码明细表的数据,先更新订单在删除条码明细 + Map hashMap = new HashMap<> (); hashMap.put("MATERIALSPECNAME", materialSpecName); - MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName2); - RemoveInfo removeInfo = new RemoveInfo(); - MaterialPackingServiceProxy.getMaterialPackingService().remove(materialPackingKey,makeEventInfo,removeInfo); - //找到条码明细表的数据,先更新订单在删除条码明细 - String selectSql = "SELECT * FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; - hashMap.put("MATERIALPACKINGNAME", materialPackingName2); - List> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectSql, hashMap); - for (Map map2 : queryForList2) { - String qty = map2.get("QTY").toString(); - String receiveRequestName2 = map2.get("RECEIVEREQUESTNAME").toString(); - String receiveRequestDetailName2 = map2.get("RECEIVEREQUESTDETAILNAME").toString(); - hashMap.put("RECEIVEREQUESTNAME", receiveRequestName2); - hashMap.put("RECEIVEREQUESTDETAILNAME", receiveRequestDetailName2); - hashMap.put("QTY", qty); - String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - :QTY " - + "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME"; - IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap); - - String deleteSql = "DELETE FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; - IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap); - } + mpService.delMaterialPacking(hashMap, materialPackingName, siteName, makeEventInfo); //更新订单数量 return AjaxResult.me().setResultObj(null); } @@ -536,49 +498,58 @@ public class MaterialReceiveActController { @RequestMapping(value = "/commitToERP", method = RequestMethod.POST) public AjaxResult commitToERP(@RequestBody JSONObject in ) { TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class); + // 采购单 + List requests = new ArrayList<>(); + // 判定单据类型 + StoreDetailDto storeDetailDto = new StoreDetailDto(); + storeDetailDto.setDocumentName(trackOutBoDto.getReceiveRequestName()); + storeDetailDto.setSiteName(trackOutBoDto.getSiteName()); + MaterialDelivery materialDelivery = deliveryService.getByKey(storeDetailDto); + if (Objects.nonNull(materialDelivery)) { + // 到货单据 + requests = deliveryService.getReceiveByDelivery(storeDetailDto); + } else { + requests.add(deliveryService.getReceiveByKey(storeDetailDto)); + } String user = trackOutBoDto.getUser(); String opCode = trackOutBoDto.getOpCode(); String commitDate = trackOutBoDto.getCommitDate(); - String name = trackOutBoDto.getReceiveRequestName(); - String site = trackOutBoDto.getSiteName(); - // 采购单 - List requests = new ArrayList<>(); - // @TODO 判定单据类型 - /*MaterialReceiveRequest byKey = deliveryService.getByKey(site, name); - if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) { - // 到货单 - requests = deliveryService.getReceiveByDelivery(site, name); - } else { - requests.add(byKey); - }*/ // 采购单处理 for (MaterialReceiveRequest request : requests) { String receiveRequestName = request.getReceiveRequestName(); String siteName = request.getSiteName(); String erpFactory = request.getSTOCKORGNO(); try { - //调用QMS + // 调用 QMS qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory); } catch (CustomException e) { - // TODO Auto-generated catch block e.printStackTrace(); return AjaxResult.me().setSuccess(false).setMessage(e.toString()); } - - String undoid; + String undoId; try { - undoid = SendERPStockIn(receiveRequestName, siteName, user, opCode,commitDate,opCode); + undoId = SendERPStockIn(receiveRequestName, siteName, user, opCode,commitDate,opCode); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); return AjaxResult.me().setSuccess(false).setMessage(e.toString()); - }//发送过账 - makeEventInfo = new EventInfoUtil().makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK"); - //更新入库凭证 - SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoid, makeEventInfo); - //更新库存状态 - SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoid,commitDate); - SDKMaterialPackingServiceImpl.updateStockState( makeEventInfo, undoid,opCode); + } + // 发送过账 + EventInfoUtil util = new EventInfoUtil(); + makeEventInfo = util.makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK"); + // 更新入库凭证 + SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoId, makeEventInfo); + // 更新库存状态 + SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoId,commitDate); + SDKMaterialPackingServiceImpl.updateStockState( makeEventInfo, undoId,opCode); + } + // 到货单据更新状态 + if (Objects.nonNull(materialDelivery)) { + DeliveryEditDto deliveryEditDto = new DeliveryEditDto(); + deliveryEditDto.setDeliveryName(trackOutBoDto.getReceiveRequestName()); + deliveryEditDto.setSiteName(trackOutBoDto.getSiteName()); + // @TODO 完成状态下,更新为 DeliveryStateEnums.FINISH + deliveryEditDto.setDeliveryState(DeliveryStateEnums.DOING.getCode()); + deliveryService.editDelivery(deliveryEditDto); } return AjaxResult.me().setResultObj(null); } 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 503324e..86a6419 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 @@ -34,7 +34,8 @@ public interface DeliveryDao { * 获取采购订单 */ List getReceiveList(@Param("dto") PurchaseDto dto, - @Param("typeList") List typeList); + @Param("typeList") List typeList, + @Param("isBatch") String isBatch); /** * 获取入库详情 @@ -42,6 +43,16 @@ public interface DeliveryDao { @MapKey("storeDetail") List> getStoreDetail(@Param("siteName") String siteName, @Param("nameList") List nameList, + @Param("typeList") List typeList, + @Param("deliveryName") String deliveryName); + + /** + * 获取入库详情 + */ + @MapKey("materialDetail") + List> getMaterialDetail(@Param("siteName") String siteName, + @Param("nameList") List nameList, + @Param("typeList") List typeList, @Param("deliveryName") String deliveryName); /** @@ -49,7 +60,7 @@ public interface DeliveryDao { */ @MapKey("storeCharge") List> getStoreCharge(@Param("siteName") String siteName, - @Param("nameList") List nameList); + @Param("documentName") String documentName); /** * 根据 key 获取值 @@ -62,9 +73,16 @@ public interface DeliveryDao { MaterialReceiveRequest getReceiveByKey(@Param("dto") StoreDetailDto storeDetailDto); /** - * 根据到库单获取采购单名称 + * 根据到库单获取关系 */ - List getReceiveByDelivery(@Param("dto") StoreDetailDto storeDetailDto); + List getRelByDelivery(@Param("dto") StoreDetailDto storeDetailDto); + + /** + * 根据到库单获取采购单名称 + * @param storeDetailDto 到库单 + * @return 采购单名称列表 + */ + List getReceiveByDelivery(@Param("dto") StoreDetailDto storeDetailDto); /** * 根据到库单获取采购单名称 @@ -93,4 +111,11 @@ public interface DeliveryDao { * @return 结果 */ int delDeliveryRel(@Param("dto") DeliveryDelDto deliveryDelDto); + + /** + * 更新到货单 + * @param deliveryEditDto 请求 + * @return 结果 + */ + int editDelivery(@Param("dto") DeliveryEditDto deliveryEditDto); } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/dao/MaterialPackingDao.java b/zi-wms-pda/src/main/java/com/cim/idm/dao/MaterialPackingDao.java new file mode 100644 index 0000000..8dfd8d1 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/dao/MaterialPackingDao.java @@ -0,0 +1,23 @@ +package com.cim.idm.dao; + +import com.cim.idm.model.dto.packing.MaterialPackingListDto; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +@Component +@Mapper +public interface MaterialPackingDao { + + /** + * 散列盘点存储过程调用 + * @param dto dto + * @return 物料信息 + */ + @MapKey("dto") + List> getMaterialPacking(@Param("dto") MaterialPackingListDto dto); +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/dto/PurchaseDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/PurchaseDto.java index 2b83afd..e437349 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/dto/PurchaseDto.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/PurchaseDto.java @@ -27,4 +27,7 @@ public class PurchaseDto { // 结束时间 private String toDate; + + // 到货单类型 + private String deliveryType; } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/dto/delivery/DeliveryEditDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/delivery/DeliveryEditDto.java new file mode 100644 index 0000000..30b8567 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/delivery/DeliveryEditDto.java @@ -0,0 +1,15 @@ +package com.cim.idm.model.dto.delivery; + +import lombok.Data; + +@Data +public class DeliveryEditDto { + // siteName + private String siteName; + + // 到货单名称 + private String deliveryName; + + // 到货单状态 + private String deliveryState; +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/dto/packing/MaterialPackingListDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/packing/MaterialPackingListDto.java new file mode 100644 index 0000000..e43862a --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/dto/packing/MaterialPackingListDto.java @@ -0,0 +1,18 @@ +package com.cim.idm.model.dto.packing; + +import lombok.Data; + +@Data +public class MaterialPackingListDto { + // 物料号 + private String materialSpecName; + + // 到货单名称 + private String receiveRequestName; + + // 阶段 + private String phase; + + // sdk id + private String sdkId; +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/vo/MaterialReceiveRequestVo.java b/zi-wms-pda/src/main/java/com/cim/idm/model/vo/MaterialReceiveRequestVo.java index 78369ae..abbc8fb 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/vo/MaterialReceiveRequestVo.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/vo/MaterialReceiveRequestVo.java @@ -30,11 +30,9 @@ public class MaterialReceiveRequestVo { // 组织(CN) private String orgName; // 料号 - private String materialSpecName; +// private String materialSpecName; // 品名 - private String descCn; - // 创建日期 - private String createTime; +// private String descCn; // 订单状态 private String receiveRequestState; 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 1f2f0a1..72a3108 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 @@ -2,6 +2,7 @@ package com.cim.idm.service; import com.cim.idm.model.dto.delivery.DeliveryDelDto; import com.cim.idm.model.dto.delivery.DeliveryDto; +import com.cim.idm.model.dto.delivery.DeliveryEditDto; import com.cim.idm.model.dto.delivery.StoreDetailDto; import com.cim.idm.model.po.delivery.MaterialDelivery; import com.cim.idm.model.po.delivery.MaterialDeliveryReceive; @@ -13,6 +14,7 @@ import com.cim.idm.model.vo.ReceiveDetailVo; import com.github.pagehelper.PageInfo; import java.util.List; +import java.util.Map; public interface IDeliveryService { /** @@ -31,12 +33,23 @@ public interface IDeliveryService { /** * 获取采购单明细及批次 + * @param documentName 单据名称 * @param siteName 组织 * @param nameList 名称 * @param deliveryName 到库单号 * @return 采购订单 */ - ReceiveDetailVo getStoreDetail(String siteName, List nameList, String deliveryName); + ReceiveDetailVo getStoreDetail(String documentName, String siteName, List nameList, String deliveryName); + + /** + * 获取辅材明细及批次 + * @param documentName 单据名称 + * @param siteName 组织 + * @param nameList 名称 + * @param deliveryName 到库单号 + * @return 采购订单 + */ + List> getMaterialDetail(String documentName, String siteName, List nameList, String deliveryName); /** * 根据 key 获取值 @@ -52,12 +65,19 @@ public interface IDeliveryService { */ MaterialReceiveRequest getReceiveByKey(StoreDetailDto storeDetailDto); + /** + * 根据到库单获取关系 + * @param storeDetailDto 到库单 + * @return 采购单名称列表 + */ + List getRelByDelivery(StoreDetailDto storeDetailDto); + /** * 根据到库单获取采购单名称 * @param storeDetailDto 到库单 * @return 采购单名称列表 */ - List getReceiveByDelivery(StoreDetailDto storeDetailDto); + List getReceiveByDelivery(StoreDetailDto storeDetailDto); /** * 根据到库单获取采购单名称 @@ -79,4 +99,11 @@ public interface IDeliveryService { * @return 结果 */ int delDelivery(DeliveryDelDto deliveryDelDto); + + /** + * 更新到货单 + * @param deliveryEditDto 请求 + * @return 结果 + */ + int editDelivery(DeliveryEditDto deliveryEditDto); } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/IMaterialPackingService.java b/zi-wms-pda/src/main/java/com/cim/idm/service/IMaterialPackingService.java new file mode 100644 index 0000000..d8100fa --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/IMaterialPackingService.java @@ -0,0 +1,31 @@ +package com.cim.idm.service; + + +import com.cim.idm.framework.data.EventInfo; +import com.cim.idm.model.dto.packing.MaterialPackingListDto; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + + +@Service("mpService") +public interface IMaterialPackingService { + + /** + * 散列盘点存储过程调用 + * @param dto dto + * @return 物料信息 + */ + List> getMaterialPacking(MaterialPackingListDto dto); + + /** + * 删除物料批次 + * @param hashMap 数据 + * @param materialPackingName 包名 + * @param siteName 工厂 + * @param makeEventInfo 事件 + */ + void delMaterialPacking(Map hashMap, String materialPackingName, + String siteName, EventInfo makeEventInfo); +} 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 54e6b57..a93232b 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 @@ -2,6 +2,8 @@ package com.cim.idm.service.Impl; import com.alibaba.fastjson.JSON; import com.cim.idm.constants.delivery.DeliveryStateEnums; +import com.cim.idm.constants.delivery.DeliveryTypeEnums; +import com.cim.idm.constants.receive.IsBatchEnums; import com.cim.idm.constants.receive.ReceiveTypeEnums; import com.cim.idm.dao.DeliveryDao; import com.cim.idm.exception.GlobalException; @@ -56,21 +58,31 @@ public class DeliveryServiceImpl implements IDeliveryService { public PageInfo getReceiveList(PageDto dto) { PageMethod.startPage(dto.getPageNum(), dto.getPageSize()); PurchaseDto purchaseDto = JSON.toJavaObject(dto.getParams(), PurchaseDto.class); - return new PageInfo<>(deliveryDao.getReceiveList(purchaseDto, ReceiveTypeEnums.getPurchase())); + // 区分是辅材还是批次 + String isBatch = IsBatchEnums.N.getCode(); + if (purchaseDto.getDeliveryType().equals(DeliveryTypeEnums.BATCH.getCode())) { + isBatch = IsBatchEnums.Y.getCode(); + } + return new PageInfo<>(deliveryDao.getReceiveList(purchaseDto, ReceiveTypeEnums.getPurchase(), isBatch)); } @Override - public ReceiveDetailVo getStoreDetail(String siteName, List nameList, String deliveryName) { + public ReceiveDetailVo getStoreDetail(String documentName, String siteName, List nameList, String deliveryName) { ReceiveDetailVo receiveDetailVo = new ReceiveDetailVo(); // 采购单明细 - List> storeDetail = deliveryDao.getStoreDetail(siteName, nameList, deliveryName); + List> storeDetail = deliveryDao.getStoreDetail(siteName, nameList, ReceiveTypeEnums.getPurchase(), deliveryName); receiveDetailVo.setStoreDetail(storeDetail); // 批次 - List> storeCharge = deliveryDao.getStoreCharge(siteName, nameList); + List> storeCharge = deliveryDao.getStoreCharge(siteName, documentName); receiveDetailVo.setStoreCharge(storeCharge); return receiveDetailVo; } + @Override + public List> getMaterialDetail(String documentName, String siteName, List nameList, String deliveryName) { + return deliveryDao.getMaterialDetail(siteName, nameList, ReceiveTypeEnums.getPurchase(), deliveryName); + } + @Override public MaterialDelivery getByKey(StoreDetailDto storeDetailDto) { return deliveryDao.getByKey(storeDetailDto); @@ -82,7 +94,12 @@ public class DeliveryServiceImpl implements IDeliveryService { } @Override - public List getReceiveByDelivery(StoreDetailDto storeDetailDto) { + public List getRelByDelivery(StoreDetailDto storeDetailDto) { + return deliveryDao.getRelByDelivery(storeDetailDto); + } + + @Override + public List getReceiveByDelivery(StoreDetailDto storeDetailDto) { return deliveryDao.getReceiveByDelivery(storeDetailDto); } @@ -108,4 +125,9 @@ public class DeliveryServiceImpl implements IDeliveryService { // 移除到货单 return deliveryDao.delDelivery(deliveryDelDto); } + + @Override + public int editDelivery(DeliveryEditDto deliveryEditDto) { + return deliveryDao.editDelivery(deliveryEditDto); + } } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialPackingServiceServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialPackingServiceServiceImpl.java new file mode 100644 index 0000000..04d2895 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialPackingServiceServiceImpl.java @@ -0,0 +1,51 @@ +package com.cim.idm.service.Impl; + +import com.cim.idm.dao.MaterialPackingDao; +import com.cim.idm.framework.IDMFrameServiceProxy; +import com.cim.idm.framework.data.EventInfo; +import com.cim.idm.model.dto.packing.MaterialPackingListDto; +import com.cim.idm.service.IMaterialPackingService; +import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy; +import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey; +import com.cim.idm.wmspackage.materialpacking.management.info.RemoveInfo; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + + +@Service +public class MaterialPackingServiceServiceImpl implements IMaterialPackingService { + + @Resource + private MaterialPackingDao materialPackingDao; + + + @Override + public List> getMaterialPacking(MaterialPackingListDto dto) { + return materialPackingDao.getMaterialPacking(dto); + } + + @Override + public void delMaterialPacking(Map hashMap, String materialPackingName, String siteName, EventInfo makeEventInfo) { + MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName); + RemoveInfo removeInfo = new RemoveInfo(); + MaterialPackingServiceProxy.getMaterialPackingService().remove(materialPackingKey, makeEventInfo, removeInfo); + // 找到条码明细表的数据,先更新订单在删除条码明细 + String selectSql = "SELECT * FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME"; + hashMap.put("MATERIALPACKINGNAME", materialPackingName); + List> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectSql, hashMap); + for (Map item : queryForList2) { + hashMap.put("RECEIVEREQUESTNAME", item.get("RECEIVEREQUESTNAME").toString()); + hashMap.put("RECEIVEREQUESTDETAILNAME", item.get("RECEIVEREQUESTDETAILNAME").toString()); + hashMap.put("QTY", item.get("QTY").toString()); + String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - :QTY " + + "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME"; + IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap); + + String deleteSql = "DELETE FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME AND RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME"; + IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap); + } + } +} 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 cfc1826..2a181ba 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 @@ -28,9 +28,8 @@ - - - + + @@ -42,7 +41,7 @@ + + + @@ -183,10 +254,7 @@ LEFT JOIN ORG o ON o.ORGNO = A.ERPFACTORY LEFT JOIN MATERIALUNIT M ON M.FNUMBER = A.UNIT WHERE A.SITENAME = #{siteName} - AND A.RECEIVEREQUESTNAME in - - #{name} - + AND A.RECEIVEREQUESTNAME = #{documentName} AND A.STOCKSTATE = 'Created' ORDER BY A.MATERIALSPECNAME, A.SDK_ID, A.PHASE ) TTT @@ -210,12 +278,24 @@ AND RECEIVEREQUESTNAME = #{dto.documentName} - SELECT md.DELIVERYNAME, md.DELIVERYNUM, md.RECEIVEREQUESTNAME, md.MATERIALSPECNAME FROM MATERIALDELIVERYRECEIVE md WHERE md.DELIVERYNAME = #{dto.documentName} + + + SELECT * FROM MATERIALPACKING m + WHERE MATERIALSPECNAME = #{dto.materialSpecName} + + AND PHASE = #{dto.phase} + + + AND RECEIVEREQUESTNAME = #{dto.receiveRequestName} + + + AND SDK_ID = #{dto.sdkId} + + AND STOCKSTATE = 'Created' + + \ No newline at end of file