diff --git a/pom.xml b/pom.xml index 68cfee9..1ee5390 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,13 @@ 2.3.1 + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.7 + + com.alibaba easyexcel diff --git a/zi-wms-boot/src/main/resources/application.yml b/zi-wms-boot/src/main/resources/application.yml index b28bc9d..9889567 100644 --- a/zi-wms-boot/src/main/resources/application.yml +++ b/zi-wms-boot/src/main/resources/application.yml @@ -118,4 +118,8 @@ com: - GetAreaList - UserLogin - UserLogout - \ No newline at end of file +# application.yml +pagehelper: + helperDialect: oracle + reasonable: true + supportMethodsArguments: true diff --git a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java index 6592855..89b74dd 100644 --- a/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java +++ b/zi-wms-data/src/main/java/com/cim/idm/wmspackage/invoice/management/data/MaterialReceiveRequest.java @@ -28,7 +28,8 @@ public class MaterialReceiveRequest extends FieldAccessor implements DataInfo getPurchase() { + List str = new ArrayList<>(); + str.add(Z001.getCode()); + str.add(Z002.getCode()); + str.add(Z003.getCode()); + str.add(Z004.getCode()); + return str; + } +} 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 new file mode 100644 index 0000000..f90407c --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/DeliveryController.java @@ -0,0 +1,73 @@ +package com.cim.idm.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.cim.idm.constants.ReceiveTypeEnums; +import com.cim.idm.model.DeliveryDto; +import com.cim.idm.model.MaterialReceiveRequest; +import com.cim.idm.model.PageDto; +import com.cim.idm.service.IDeliveryService; +import com.cim.idm.utils.AjaxResult; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/delivery") +@EnableAutoConfiguration +public class DeliveryController { + + @Resource + private IDeliveryService deliveryService; + + /** + * 创建入库单 + */ + @PostMapping(value = "/create") + public AjaxResult createDelivery(@RequestBody JSONObject in) { + DeliveryDto dto = JSON.toJavaObject(in, DeliveryDto.class); + return AjaxResult.me().setSuccess(true).setMessage(deliveryService.createDelivery(dto)); + } + + /** + * 获取采购单 + */ + @PostMapping(value = "/getPurchase") + public AjaxResult getPurchase(@RequestBody PageDto in) { + return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getPurchase(in)); + } + + /** + * 获取入库详情 + * 到货单/销售采购单,根据物料清单,创建批次,进行入库 + */ + @PostMapping(value = "/getStoreDetail") + public AjaxResult getStoreDetail(@RequestBody JSONObject in) { + Map params = (Map) in.get("params"); + // siteName + String siteName = params.get("SITENAME"); + String receiveRequestName = params.get("RECEIVEREQUESTNAME"); + // 单据名称集合 + List nameList = new ArrayList<>(); + // 判定是否是到库单 + String typeByKey = deliveryService.getByKey(siteName, receiveRequestName).getReceiveRequestType(); + if (typeByKey.equals(ReceiveTypeEnums.DK.getCode())) { + // 到库单(找出该单据下的所有的采购单) + nameList = deliveryService.getReceiveByDelivery(siteName, receiveRequestName) + .stream().map(MaterialReceiveRequest::getReceiveRequestName).collect(Collectors.toList()); + } else { + // 采购单 + nameList.add(receiveRequestName); + } + // 获取采购单明细及批次 + return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getStoreDetail(siteName, nameList)); + } +} 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 e920c94..6380791 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,12 +2,14 @@ package com.cim.idm.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.cim.idm.constants.ReceiveTypeEnums; import com.cim.idm.framework.IDMFrameServiceProxy; import com.cim.idm.framework.data.EventInfo; import com.cim.idm.model.MaterialReceiveRequest; import com.cim.idm.model.MaterialreceiveActDto; import com.cim.idm.model.TrackOutBoDto; import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl; +import com.cim.idm.service.IDeliveryService; import com.cim.idm.service.impl.QMSServiceImpl; import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.utils.AjaxResult; @@ -21,7 +23,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -29,17 +30,20 @@ import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.sql.Timestamp; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; + import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl; +import javax.annotation.Resource; + @RestController @RequestMapping("/MaterialReceiveAct") @EnableAutoConfiguration public class MaterialReceiveActController { + @Resource + private IDeliveryService deliveryService; + private static Log log = LogFactory.getLog(MaterialReceiveActController.class); private EventInfo makeEventInfo; @@ -521,38 +525,51 @@ public class MaterialReceiveActController { @RequestMapping(value = "/commitToERP", method = RequestMethod.POST) public AjaxResult commitToERP(@RequestBody JSONObject in ) { - TrackOutBoDto boxs = JSON.toJavaObject(in, TrackOutBoDto.class); - String commitDate = boxs.getCommitDate(); - MaterialreceiveActDto box = boxs.getMaterialreceiveAct(); - String user = boxs.getUser(); - String receiveRequestName = box.getReceiveRequestName(); - String siteName = box.getSiteName(); - String opCode = boxs.getOpCode(); - - String erpFactory = box.getErpFactory(); - try { - //调用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()); + TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class); + String user = trackOutBoDto.getUser(); + String opCode = trackOutBoDto.getOpCode(); + String commitDate = trackOutBoDto.getCommitDate(); + String name = trackOutBoDto.getReceiveRequestName(); + String site = trackOutBoDto.getSiteName(); + // 采购单 + List requests = new ArrayList<>(); + // 判定单据类型 + 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 + 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; - try { - 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); + String undoid; + try { + 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); + } 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 new file mode 100644 index 0000000..adc54fc --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/dao/DeliveryDao.java @@ -0,0 +1,62 @@ +package com.cim.idm.dao; + +import com.cim.idm.model.MaterialReceiveRequest; +import com.cim.idm.model.PurchaseDto; +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 DeliveryDao { + + /** + * 新增到货单 + */ + int createDelivery(@Param("siteName") String siteName, + @Param("receiveRequestName") String receiveRequestName, + @Param("receiveRequestType") String receiveRequestType ); + + /** + * 绑定采购订单 的 到货单 + */ + int bindDelivery(@Param("siteName") String siteName, + @Param("receiveRequestName") String receiveRequestName, + @Param("nameList") List nameList); + + /** + * 获取采购订单 + */ + List getPurchase(@Param("dto") PurchaseDto dto, + @Param("typeList") List typeList); + + /** + * 获取入库详情 + */ + @MapKey("storeDetail") + List> getStoreDetail(@Param("siteName") String siteName, + @Param("nameList") List nameList); + + /** + * 获取入库批次 + */ + @MapKey("storeCharge") + List> getStoreCharge(@Param("siteName") String siteName, + @Param("nameList") List nameList); + + /** + * 根据 key 获取值 + */ + MaterialReceiveRequest getByKey(@Param("siteName") String siteName, + @Param("receiveRequestName") String receiveRequestName); + + /** + * 根据到库单获取采购单名称 + */ + List getReceiveByDelivery(@Param("siteName") String siteName, + @Param("receiveRequestName") String receiveRequestName); +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/DeliveryDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/DeliveryDto.java new file mode 100644 index 0000000..2defff3 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/DeliveryDto.java @@ -0,0 +1,18 @@ +package com.cim.idm.model; + +import com.cim.idm.wmspackage.invoice.management.data.MaterialReceiveRequestKey; +import lombok.Data; + +import java.util.List; + +@Data +public class DeliveryDto { + // siteName + private String siteName; + + // 单号名称 + private String receiveRequestName; + + // 数据 + private List dataList; +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/MaterialReceiveRequest.java b/zi-wms-pda/src/main/java/com/cim/idm/model/MaterialReceiveRequest.java index 09d19c7..15dfbb1 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/MaterialReceiveRequest.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/MaterialReceiveRequest.java @@ -20,6 +20,7 @@ public class MaterialReceiveRequest { private String commitDate; private String opCode; private String type; + private String STOCKORGNO; private String MaterialPackingName; private String materialSpecName; private String materialQuantity; diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/PageDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/PageDto.java new file mode 100644 index 0000000..c5570d2 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/PageDto.java @@ -0,0 +1,11 @@ +package com.cim.idm.model; + +import lombok.Data; +import com.alibaba.fastjson.JSONObject; + +@Data +public class PageDto { + private Integer pageNum; + private Integer pageSize; + private JSONObject params; +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/PurchaseDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/PurchaseDto.java new file mode 100644 index 0000000..521d9de --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/PurchaseDto.java @@ -0,0 +1,12 @@ +package com.cim.idm.model; + +import lombok.Data; + +@Data +public class PurchaseDto { + // siteName + private String siteName; + + // 单号名称 + private String receiveRequestName; +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/model/TrackOutBoDto.java b/zi-wms-pda/src/main/java/com/cim/idm/model/TrackOutBoDto.java index bc2c486..56f4b45 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/model/TrackOutBoDto.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/model/TrackOutBoDto.java @@ -5,8 +5,10 @@ import lombok.Data; @Data public class TrackOutBoDto { private String user; + private String siteName; private String commitDate; private String opCode; + private String receiveRequestName; private MaterialreceiveActDto materialreceiveAct; } 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 new file mode 100644 index 0000000..8711491 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/IDeliveryService.java @@ -0,0 +1,48 @@ +package com.cim.idm.service; + +import com.cim.idm.model.DeliveryDto; +import com.cim.idm.model.MaterialReceiveRequest; +import com.cim.idm.model.PageDto; +import com.github.pagehelper.PageInfo; + +import java.util.List; +import java.util.Map; + +public interface IDeliveryService { + /** + * 新增到货单 + * @param dto 请求 + * @return 到货单 + */ + String createDelivery(DeliveryDto dto); + + /** + * 获取采购订单 + * @param dto 请求 + * @return 采购订单 + */ + PageInfo getPurchase(PageDto dto); + + /** + * 获取采购单明细及批次 + * @param siteName 组织 + * @param nameList 名称 + * @return 采购订单 + */ + Map getStoreDetail(String siteName, List nameList); + + /** + * 根据 key 获取值 + * @param siteName 组织 + * @param receiveRequestName 单据名称 + * @return 类型 + */ + MaterialReceiveRequest getByKey(String siteName, String receiveRequestName); + + /** + * 根据到库单获取采购单名称 + * @param receiveRequestName 到库单 + * @return 采购单名称列表 + */ + List getReceiveByDelivery(String siteName, String receiveRequestName); +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/BSLabelServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/BSLabelServiceImpl.java index c483c7a..f3251d4 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/BSLabelServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/BSLabelServiceImpl.java @@ -877,7 +877,7 @@ public class BSLabelServiceImpl extends CommonServiceDAO im // 参数(BSLABELASSIGNPARAMETER 表中映射关系) List params = getLabelAssignParameter("storageLabel001"); // 模板 - String labelPath = "D:\\storage.btw"; + String labelPath = "C:\\inetpub\\wwwroot\\BarTender\\wwwroot\\Templates\\storage.btw"; // 打印请求 PrintRequest pr = new PrintRequest(); 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 new file mode 100644 index 0000000..25917a5 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/DeliveryServiceImpl.java @@ -0,0 +1,72 @@ +package com.cim.idm.service.Impl; + +import com.alibaba.fastjson.JSON; +import com.cim.idm.constants.ReceiveTypeEnums; +import com.cim.idm.dao.DeliveryDao; +import com.cim.idm.model.DeliveryDto; +import com.cim.idm.model.MaterialReceiveRequest; +import com.cim.idm.model.PageDto; +import com.cim.idm.model.PurchaseDto; +import com.cim.idm.service.IDeliveryService; +import com.cim.idm.wmspackage.invoice.management.data.MaterialReceiveRequestKey; +import com.github.pagehelper.PageInfo; +import com.github.pagehelper.page.PageMethod; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class DeliveryServiceImpl implements IDeliveryService { + + @Resource + private DeliveryDao deliveryDao; + + @Override + @Transactional + public String createDelivery(DeliveryDto dto) { + // 添加到库单 + if (deliveryDao.createDelivery(dto.getSiteName(), + dto.getReceiveRequestName(), ReceiveTypeEnums.DK.getCode()) <= 0) { + return "添加到库单失败"; + } + // 更新采购单到库单字段 + List collect = dto.getDataList().stream() + .map(MaterialReceiveRequestKey::getReceiveRequestName).collect(Collectors.toList()); + deliveryDao.bindDelivery(dto.getSiteName(), dto.getReceiveRequestName(), collect); + return "更新成功"; + } + + @Override + public PageInfo getPurchase(PageDto dto) { + PageMethod.startPage(dto.getPageNum(), dto.getPageSize()); + PurchaseDto purchaseDto = JSON.toJavaObject(dto.getParams(), PurchaseDto.class); + return new PageInfo<>(deliveryDao.getPurchase(purchaseDto, ReceiveTypeEnums.getPurchase())); + } + + @Override + public Map getStoreDetail(String siteName, List nameList) { + Map res = new HashMap<>(); + // 采购单明细 + List> storeDetail = deliveryDao.getStoreDetail(siteName, nameList); + // 批次 + List> storeCharge = deliveryDao.getStoreCharge(siteName, nameList); + res.put("storeDetail", storeDetail); + res.put("storeCharge", storeCharge); + return res; + } + + @Override + public MaterialReceiveRequest getByKey(String siteName, String receiveRequestName) { + return deliveryDao.getByKey(siteName, receiveRequestName); + } + + @Override + public List getReceiveByDelivery(String siteName, String receiveRequestName) { + return deliveryDao.getReceiveByDelivery(siteName, receiveRequestName); + } +} 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 new file mode 100644 index 0000000..d119825 --- /dev/null +++ b/zi-wms-pda/src/main/resources/com/cim/idm/dao/DeliveryDao.xml @@ -0,0 +1,133 @@ + + + + + + INSERT INTO MATERIALRECEIVEREQUEST(SITENAME, RECEIVEREQUESTNAME, RECEIVEREQUESTTYPE) + VALUES (#{siteName}, #{receiveRequestName}, #{receiveRequestType}) + + + + UPDATE MATERIALRECEIVEREQUEST SET DELIVERYNAME = #{receiveRequestName} + WHERE SITENAME = #{siteName} + AND RECEIVEREQUESTNAME IN + + #{name} + + + + + + + + + + + + + + + \ No newline at end of file