From 044e946787ba4bf936451111c73ac239e4e0ae36 Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期五, 18 四月 2025 15:29:58 +0800 Subject: [PATCH] #erp开发 --- src/main/java/com/zy/asrs/controller/OpenController.java | 54 ++- src/main/java/com/zy/asrs/entity/param/MatSyncParam.java | 106 ++++++ src/main/java/com/zy/asrs/service/OpenService.java | 2 src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java | 8 src/main/java/com/zy/asrs/entity/Tag.java | 8 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 2 src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java | 10 src/main/java/com/zy/asrs/entity/Mat.java | 1 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 2 src/main/java/com/zy/asrs/task/handler/OrderReportHander.java | 296 +++++++++++++++++++++ src/main/java/com/zy/common/model/DetlDto.java | 9 src/main/java/com/zy/asrs/task/OrderReportScheduler.java | 21 + src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 268 +++++++++++------- src/main/resources/application.yml | 2 src/main/java/com/zy/asrs/entity/param/OpenOrderPakinParam.java | 10 15 files changed, 653 insertions(+), 146 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index cb34a46..0e19bd9 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -33,16 +33,29 @@ @Autowired private OpenService openService; - @PostMapping("/order/matSync/default/v1") + @PostMapping("/mat/sync/auth/v1") @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛") public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey, - @RequestBody(required = false) MatSyncParam param, + @RequestBody(required = false) List<MatSyncParam> param, HttpServletRequest request){ auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } openService.syncMat(param); + return R.ok(); + } + + @PostMapping("/stock/upload/auth/v1") + @AppAuth(memo = "搴撳瓨涓婃姤") + public synchronized R syncStockUpload(@RequestHeader(required = false) String appkey, + @RequestBody(required = false) List<MatSyncParam> param, + HttpServletRequest request){ + auth(appkey, param, request); +// if (Cools.isEmpty(param)) { +// return R.parse(BaseRes.PARAM); +// } +// openService.syncMat(param); return R.ok(); } @@ -66,7 +79,7 @@ /** * 娣诲姞鍏ュ簱鍗� */ - @PostMapping("/order/pakin/default/v1") + @PostMapping("/pakin/execute/auth/v1") public synchronized R pakinOrderCreate(@RequestHeader(required = false) String appkey, @RequestBody OpenOrderPakinParam param, HttpServletRequest request) { @@ -77,11 +90,14 @@ if (Cools.isEmpty(param.getOrderNo())) { return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖"); } - if (Cools.isEmpty(param.getOrderType())) { - return R.error("鍗曟嵁绫诲瀷[orderType]涓嶈兘涓虹┖"); + if (Cools.isEmpty(param.getBillType())) { + return R.error("鍗曟嵁绫诲瀷[billType]涓嶈兘涓虹┖"); } - if (Cools.isEmpty(param.getOrderDetails())) { - return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖"); + if (Cools.isEmpty(param.getCreateTime())) { + return R.error("鍗曟嵁鏄庣粏[createTime]涓嶈兘涓虹┖"); + } + if (Cools.isEmpty(param.getMatList())) { + return R.error("鍗曟嵁鏄庣粏[matList]涓嶈兘涓虹┖"); } openService.pakinOrderCreate(param); return R.ok(); @@ -101,7 +117,7 @@ /** * 娣诲姞鍑哄簱鍗� */ - @PostMapping("/order/pakout/default/v1") + @PostMapping("/pakout/execute/auth/v1") @AppAuth(memo = "娣诲姞璁㈠崟鍑哄簱") public synchronized R pakoutOrderCreate(@RequestHeader(required = false) String appkey, @RequestBody OpenOrderPakoutParam param, @@ -110,20 +126,20 @@ if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } - if (Cools.isEmpty(param.getLgort())) { - return R.error("鍗曟嵁缂栧彿[lgort]涓嶈兘涓虹┖"); - } - if (!param.getLgort().equals("5006")) { - return R.ok(); - } +// if (Cools.isEmpty(param.getLgort())) { +// return R.error("鍗曟嵁缂栧彿[lgort]涓嶈兘涓虹┖"); +// } +// if (!param.getLgort().equals("5006")) { +// return R.ok(); +// } if (Cools.isEmpty(param.getOrderNo())) { return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖"); } - if (Cools.isEmpty(param.getOrderType())) { - return R.error("鍗曟嵁绫诲瀷[orderType]涓嶈兘涓虹┖"); + if (Cools.isEmpty(param.getBillType())) { + return R.error("鍗曟嵁绫诲瀷[billType]涓嶈兘涓虹┖"); } - if (Cools.isEmpty(param.getOrderDetails())) { - return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖"); + if (Cools.isEmpty(param.getMatList())) { + return R.error("鍗曟嵁鏄庣粏[matList]涓嶈兘涓虹┖"); } openService.pakoutOrderCreate(param); return R.ok(); @@ -173,7 +189,7 @@ param.setOrderType("鎵撳寘涓婄嚎鍗�"); param.setOrderTime(DateUtils.convert(new Date())); List<DetlDto> orderDetails = new ArrayList<>(); - param.setOrderDetails(orderDetails); + param.setMatList(orderDetails); for (int i = 0; i < 3; i++) { DetlDto detlDto = new DetlDto(); switch (i) { diff --git a/src/main/java/com/zy/asrs/entity/Mat.java b/src/main/java/com/zy/asrs/entity/Mat.java index bee0346..4dffbf1 100644 --- a/src/main/java/com/zy/asrs/entity/Mat.java +++ b/src/main/java/com/zy/asrs/entity/Mat.java @@ -56,6 +56,7 @@ @TableField("tag_id") private Long tagId; + /** * 鍟嗗搧缂栧彿 */ diff --git a/src/main/java/com/zy/asrs/entity/Tag.java b/src/main/java/com/zy/asrs/entity/Tag.java index d5e843c..4582a37 100644 --- a/src/main/java/com/zy/asrs/entity/Tag.java +++ b/src/main/java/com/zy/asrs/entity/Tag.java @@ -30,7 +30,7 @@ * 缂栧彿 */ @ApiModelProperty(value= "缂栧彿") - private String uuid; + private Long uuid; /** * 鍚嶇О @@ -149,7 +149,7 @@ public Tag() {} - public Tag(String uuid,String name,Long parentId,String parentName,String path,String pathName,Integer type,String leading,String img,String brief,Integer count,Integer level,Integer sort,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) { + public Tag(Long uuid,String name,Long parentId,String parentName,String path,String pathName,Integer type,String leading,String img,String brief,Integer count,Integer level,Integer sort,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) { this.uuid = uuid; this.name = name; this.parentId = parentId; @@ -201,11 +201,11 @@ this.id = id; } - public String getUuid() { + public Long getUuid() { return uuid; } - public void setUuid(String uuid) { + public void setUuid(Long uuid) { this.uuid = uuid; } diff --git a/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java b/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java index ff2f451..181eaf6 100644 --- a/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java +++ b/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java @@ -11,34 +11,109 @@ @Data public class MatSyncParam { - /** - * 鍒涘缓鏃堕棿 - */ - public String createTime; +// /** +// * 鍒涘缓鏃堕棿 +// */ +// public String createTime; - public List<MatParam> matDetails; + public List<MatParam> data; @Data - public class MatParam{ + public static class MatParam{ /** - * 鍟嗗搧缂栧彿 + * 瀛樿揣缂栫爜 */ private String matnr; /** - * 鍟嗗搧鍚嶇О + * 瀛樿揣鍚嶇О */ private String maktx; +// /** +// * 鍟嗗搧鍒嗙被 +// */ +// private String groupCode; +// +// /** +// * 鍒嗙被鍚嶇О +// */ +// private String groupName; /** - * 鍟嗗搧鍒嗙被 + * 瀛樿揣澶х被缂栫爜 */ - private String groupCode; + private Long tagId; /** - * 鍒嗙被鍚嶇О + * 瀛樿揣澶х被鍚嶇О */ - private String groupName; + private String tagIdName; + + /** + * 瀛樿揣妫�楠屽憳 + */ + private String inspectName; + + /** + * 璁¢噺鍗曚綅缁勭紪鐮� + */ + private String groupUnitId; + + /** + * 涓昏閲忓崟浣嶇紪鐮� + */ + private String unitId; + + /** + * 閿�鍞粯璁よ閲忓崟浣嶇紪鐮� + */ + private String saleUnitId; + + /** + * 閿�鍞粯璁よ閲忓崟浣嶅悕绉� + */ + private String saleUnit; + + /** + * 閲囪喘榛樿璁¢噺鍗曚綅鍚嶇О + */ + private String procureUnit; + + /** + * 閲囪喘榛樿璁¢噺鍗曚綅缂栫爜 + */ + private String procureUnitId; + + /** + * 搴撳瓨榛樿璁¢噺鍗曚綅缂栫爜 + */ + private String inventoryUnitId; + + /** + * 搴撳瓨榛樿璁¢噺鍗曚綅鍚嶇О + */ + private String inventoryUnit; + + /** + * 鐢熶骇璁¢噺鍗曚綅缂栫爜 + */ + private String produceUnitId; + + /** + * 鐢熶骇璁¢噺鍗曚綅鍚嶇О + */ + private String produceUnit; + + /** + * 榛樿浠撳簱缂栫爜 + */ + private String warehouse; + + /** + * 榛樿浠撳簱鍚嶇О + */ + private String warehouseName; + /** * 鍒悕 @@ -66,7 +141,7 @@ private String brand; /** - * 鍗曚綅 + * 涓昏閲忓崟浣嶅悕绉� */ private String unit; @@ -194,6 +269,11 @@ * 澶囨敞 */ private String memo; + + /** + * 鏁伴噺 + */ + private Double anfme; } } diff --git a/src/main/java/com/zy/asrs/entity/param/OpenOrderPakinParam.java b/src/main/java/com/zy/asrs/entity/param/OpenOrderPakinParam.java index 965a9d1..36282b2 100644 --- a/src/main/java/com/zy/asrs/entity/param/OpenOrderPakinParam.java +++ b/src/main/java/com/zy/asrs/entity/param/OpenOrderPakinParam.java @@ -1,8 +1,10 @@ package com.zy.asrs.entity.param; +import com.fasterxml.jackson.annotation.JsonFormat; import com.zy.common.model.DetlDto; import lombok.Data; +import java.util.Date; import java.util.List; /** @@ -15,8 +17,14 @@ private String orderType; + private String billType; + private String orderTime; - private List<DetlDto> orderDetails; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + + private List<DetlDto> matList; } diff --git a/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java b/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java index 96cad9c..e51450c 100644 --- a/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java +++ b/src/main/java/com/zy/asrs/entity/param/OpenOrderPakoutParam.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; import com.core.common.DateUtils; +import com.fasterxml.jackson.annotation.JsonFormat; import com.zy.common.model.DetlDto; import lombok.Data; @@ -19,10 +20,15 @@ private String orderType; + private String billType; + private String orderTime; - private List<DetlDto> orderDetails; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private List<DetlDto> orderDetails; + private List<DetlDto> matList; private String lgort; public static void main(String[] args) { diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java index afd90b1..aba88bf 100644 --- a/src/main/java/com/zy/asrs/service/OpenService.java +++ b/src/main/java/com/zy/asrs/service/OpenService.java @@ -42,5 +42,5 @@ * 鍚屾鍟嗗搧淇℃伅 * @param param */ - void syncMat(MatSyncParam param); + void syncMat(List<MatSyncParam> param); } diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index 201f8ef..81a1d49 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -430,7 +430,7 @@ openParam.setOrderNo(orderNo); openParam.setOrderTime(DateUtils.convert(now)); openParam.setOrderType("鎵撳寘鍏ュ簱鍗�"); - openParam.setOrderDetails(detlDtos); + openParam.setMatList(detlDtos); openService.pakinOrderCreate(openParam); Order order = orderService.selectByNo(orderNo); if (null == order) { diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index 5d8970a..a0e4feb 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -56,7 +56,7 @@ if (!Cools.isEmpty(order)) { throw new CoolException(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦"); } - DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE); + DocType docType = docTypeService.selectOrAdd(param.getBillType(), Boolean.TRUE); Date now = new Date(); // 鍗曟嵁涓绘。 order = new Order( @@ -100,7 +100,7 @@ } // 鍗曟嵁鏄庣粏妗� List<DetlDto> list = new ArrayList<>(); - List<DetlDto> orderDetails = param.getOrderDetails(); + List<DetlDto> orderDetails = param.getMatList(); for (DetlDto detail : orderDetails) { DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme()); if (DetlDto.has(list, dto)) { @@ -191,7 +191,7 @@ } orderService.remove(order.getId()); } - DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE); + DocType docType = docTypeService.selectOrAdd(param.getBillType(), Boolean.FALSE); Date now = new Date(); // 鍗曟嵁涓绘。 order = new Order( @@ -235,7 +235,7 @@ } // 鍗曟嵁鏄庣粏妗� List<DetlDto> list = new ArrayList<>(); - List<DetlDto> orderDetails = param.getOrderDetails(); + List<DetlDto> orderDetails = param.getMatList(); for (DetlDto detail : orderDetails) { DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme()); if (DetlDto.has(list, dto)) { @@ -435,113 +435,175 @@ } } - @Override - @Transactional - public void syncMat(MatSyncParam param) { - if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) { - throw new CoolException("鍟嗗搧鏁版嵁涓虹┖"); - } +// @Override +// @Transactional +// public void syncMat(List<MatSyncParam> param) { +// if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) { +// throw new CoolException("鍟嗗搧鏁版嵁涓虹┖"); +// } +// +// for(MatSyncParam.MatParam matParam : param.getMatDetails()){ +// if(Cools.isEmpty(matParam.getMatnr())){ +// throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖"); +// } +// +// Date now = new Date(); +// Mat mat = matService.selectByMatnr(matParam.getMatnr()); +// if (mat == null) { +// mat = new Mat(); +// // 鍒嗙被 +// Long tagId; +// // 涓�绾у垎绫� +// if (!Cools.isEmpty(matParam.getTagId()) && !Cools.isEmpty(matParam.getTagIdName())) { +// Tag priTag = tagService.selectByName(matParam.getTagIdName(), 2); +// if (priTag == null) { +// Tag top = tagService.getTop(); +// NodeUtils nodeUtils = new NodeUtils(); +// nodeUtils.executePath(top.getId()); +// priTag = new Tag( +// null, // 缂栧彿 +// matParam.getTagIdName(), // 鍚嶇О +// top.getId(), // 鐖剁骇 +// top.getName(), // 鐖剁骇鍚嶇О +// nodeUtils.path.toString(), // 鍏宠仈璺緞 +// nodeUtils.pathName.toString(), // 鍏宠仈璺緞鍚� +// 0, // 绫诲瀷 +// null, // 璐熻矗浜� +// null, // 鍥剧墖 +// null, // 绠�瑕佹弿杩� +// null, // 鏁伴噺 +// 2, // 绛夌骇 +// null, // 鎺掑簭 +// 1, // 鐘舵�� +// now, // 娣诲姞鏃堕棿 +// null, // 娣诲姞浜哄憳 +// now, // 淇敼鏃堕棿 +// null, // 淇敼浜哄憳 +// null // 澶囨敞 +// ); +// if (tagMapper.insert(priTag) == 0) { +// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); +// } +// } +// } else { +// tagId = tagService.getTop().getId(); +// } +// mat.sync(param); +//// mat.setMatnr(param.getMatnr()); +//// mat.setMaktx(param.getMaktx()); +//// mat.setSpecs(param.getSpecs()); +//// mat.setModel(param.getModel()); +// +// mat.setTagId(1L); +// mat.setStatus(1); +// mat.setCreateTime(now); +// mat.setUpdateTime(now); +// if (!matService.insert(mat)) { +// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); +// } else { +// log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr()); +// } +// } else { +// mat.sync(param); +// if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) { +// throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳"); +// } +// } +// } +// +// } - for(MatSyncParam.MatParam matParam : param.getMatDetails()){ - if(Cools.isEmpty(matParam.getMatnr())){ - throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖"); + @Override + @Transactional + public void syncMat(List<MatSyncParam> paramList) { + if (Cools.isEmpty(paramList)) { + throw new CoolException("鍚屾鏁版嵁涓虹┖"); } - Date now = new Date(); - Mat mat = matService.selectByMatnr(matParam.getMatnr()); - if (mat == null) { - mat = new Mat(); - // 鍒嗙被 - Long tagId; - // 涓�绾у垎绫� - if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) { - Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2); - if (priTag == null) { - Tag top = tagService.getTop(); - NodeUtils nodeUtils = new NodeUtils(); - nodeUtils.executePath(top.getId()); - priTag = new Tag( - null, // 缂栧彿 - matParam.getGroupCode(), // 鍚嶇О - top.getId(), // 鐖剁骇 - top.getName(), // 鐖剁骇鍚嶇О - nodeUtils.path.toString(), // 鍏宠仈璺緞 - nodeUtils.pathName.toString(), // 鍏宠仈璺緞鍚� - 0, // 绫诲瀷 - null, // 璐熻矗浜� - null, // 鍥剧墖 - null, // 绠�瑕佹弿杩� - null, // 鏁伴噺 - 2, // 绛夌骇 - null, // 鎺掑簭 - 1, // 鐘舵�� - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - null // 澶囨敞 - ); - if (tagMapper.insert(priTag) == 0) { - throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); - } - } - // 浜岀骇鍒嗙被 - Tag secTag = tagService.selectByName(matParam.getGroupName(), 3); - if (secTag == null) { - NodeUtils nodeUtils = new NodeUtils(); - nodeUtils.executePath(priTag.getId()); - secTag = new Tag( - null, // 缂栧彿 - matParam.getGroupName(), // 鍚嶇О - priTag.getId(), // 鐖剁骇 - priTag.getName(), // 鐖剁骇鍚嶇О - nodeUtils.path.toString(), // 鍏宠仈璺緞 - nodeUtils.pathName.toString(), // 鍏宠仈璺緞鍚� - 0, // 绫诲瀷 - null, // 璐熻矗浜� - null, // 鍥剧墖 - null, // 绠�瑕佹弿杩� - null, // 鏁伴噺 - 3, // 绛夌骇 - null, // 鎺掑簭 - 1, // 鐘舵�� - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - null // 澶囨敞 - ); - if (tagMapper.insert(secTag) == 0) { - throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); - } - } - tagId = secTag.getId(); - } else { - tagId = tagService.getTop().getId(); + for (MatSyncParam param : paramList) { + if (Cools.isEmpty(param.getData()) || param.getData().isEmpty()) { + throw new CoolException("鍟嗗搧鏁版嵁涓虹┖"); } - mat.sync(param); -// mat.setMatnr(param.getMatnr()); -// mat.setMaktx(param.getMaktx()); -// mat.setSpecs(param.getSpecs()); -// mat.setModel(param.getModel()); - mat.setTagId(tagId); - mat.setStatus(1); - mat.setCreateTime(now); - mat.setUpdateTime(now); - if (!matService.insert(mat)) { - throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); - } else { - log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr()); - } - } else { - mat.sync(param); - if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) { - throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳"); + for (MatSyncParam.MatParam matParam : param.getData()) { + if (Cools.isEmpty(matParam.getMatnr())) { + throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖"); + } + + Date now = new Date(); + Mat mat = matService.selectByMatnr(matParam.getMatnr()); + if (mat == null) { + mat = new Mat(); + + // 鍒嗙被 + Long tagId; + if (!Cools.isEmpty(matParam.getTagId()) && !Cools.isEmpty(matParam.getTagIdName())) { + // 濡傛灉鎻愪緵浜� tagId 鍜� tagIdName锛屾煡璇㈡槸鍚﹀凡鏈夌浉鍚岀殑鍒嗙被 + Tag priTag = tagService.selectByName(matParam.getTagIdName(), 2); + if (priTag == null) { + // 濡傛灉鍒嗙被涓嶅瓨鍦紝鍒涘缓鏂扮殑鍒嗙被 + Tag top = tagService.getTop(); + NodeUtils nodeUtils = new NodeUtils(); + nodeUtils.executePath(top.getId()); + priTag = new Tag( + matParam.getTagId(), + matParam.getTagIdName(), + top.getId(), + top.getName(), + nodeUtils.path.toString(), + nodeUtils.pathName.toString(), + 0, + null, + null, + null, + null, + 2, + null, + 1, + now, + null, + now, + null, + null + ); + if (tagMapper.insert(priTag) == 0) { + throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); + } + tagId = priTag.getId(); + } else { + // 濡傛灉鍒嗙被宸插瓨鍦紝浣跨敤鐜版湁鐨� tagId + tagId = priTag.getId(); + } + } else { + // 濡傛灉娌℃湁鎻愪緵 tagId 鍜� tagIdName锛屽垯浣跨敤榛樿鐨勫垎绫� + tagId = tagService.getTop().getId(); + } + + mat.sync(matParam); // + + mat.setTagId(tagId); + mat.setStatus(1); + mat.setCreateTime(now); + mat.setUpdateTime(now); + if (!matService.insert(mat)) { + throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); + } else { + log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr()); + } + } else { + Tag priTag = tagService.selectByName(matParam.getTagIdName(), 2); + matParam.setTagId(priTag.getId()); + mat.sync(matParam); // 鈿狅笍 鍚屼笂 + if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) { + throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳"); + } + } } } } - } + + + } diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java index ce2a799..ea85279 100644 --- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java @@ -116,7 +116,7 @@ openParam.setOrderNo(orderNo); openParam.setOrderTime(DateUtils.convert(wrkMast.getModiTime())); openParam.setOrderType("鎵嬪姩鍏ュ簱鍗�"); - openParam.setOrderDetails(detlDtos); + openParam.setMatList(detlDtos); openService.pakinOrderCreate(openParam); } else { // 鐢熸垚鍑哄簱鍗曟嵁 diff --git a/src/main/java/com/zy/asrs/task/OrderReportScheduler.java b/src/main/java/com/zy/asrs/task/OrderReportScheduler.java new file mode 100644 index 0000000..57dc6e2 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/OrderReportScheduler.java @@ -0,0 +1,21 @@ +package com.zy.asrs.task; +import com.zy.asrs.task.handler.OrderMoveHistoryHandler; +import com.zy.asrs.task.handler.OrderReportHander; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +public class OrderReportScheduler { + + @Autowired + private OrderReportHander orderReportHander; + /** + * 灏嗗凡浣滀笟鏁伴噺涓庡畬鎴愭暟閲忕浉鍚岀殑璁㈠崟鏄庣粏涓婃姤锛岃嫢宸蹭笂鎶ュ皢鏍囪瘑鏀逛负2 + */ + @Scheduled(cron = "0/30 * * * * ?") + public void execute(){ + orderReportHander.startPakIn(); + orderReportHander.startPakOut(); + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java index 76ec280..2cb6df9 100644 --- a/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java @@ -26,10 +26,18 @@ public ReturnT<String> start(){ List<Order> settleEqual6 = orderService.selectList(new EntityWrapper<Order>() .eq("settle", 6)); + boolean result = true; for (Order order : settleEqual6) { List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>() .eq("order_no", order.getOrderNo())); - moveBoth(order,orderDetls); + for (OrderDetl orderDetl : orderDetls) { + if(orderDetl.getMemo().isEmpty()){//鑻ヨ鍗曢噷浠嶆湁鏈笂鎶ョ殑鍋滄杞巻鍙叉。 + result = false; + } + } + if(result){ + moveBoth(order,orderDetls); + } log.info("宸插畬鎴愬崟鎹Щ鍔ㄨ嚦鍘嗗彶琛ㄦ垚鍔� =====>" +order); } return SUCCESS; diff --git a/src/main/java/com/zy/asrs/task/handler/OrderReportHander.java b/src/main/java/com/zy/asrs/task/handler/OrderReportHander.java new file mode 100644 index 0000000..f0be871 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/handler/OrderReportHander.java @@ -0,0 +1,296 @@ +package com.zy.asrs.task.handler; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Order; +import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.DocTypeService; +import com.zy.asrs.service.OrderDetlService; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler; +import com.zy.common.utils.HttpHandler; +import com.zy.erp.kingdee.enums.KingDeeUtilType; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.*; + + +@Service +@Slf4j +public class OrderReportHander extends AbstractHandler<String> { + + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.inaddressSave}") + //涓婃姤鍏ュ簱鍦板潃 + private String inaddressSave; + @Value("${erp.address.outaddressSave}") + //涓婃姤鍑哄簱鍦板潃 + private String outaddressSave; + @Autowired + private OrderService orderService; + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private ApiLogService apiLogService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; + + public ReturnT<String> startPakIn() { + // 鍏堟煡鍑� memo 涓� null 鐨勬墍鏈夋暟鎹叆搴撳崟 + List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 34)); + for(Order order : orderList){ + List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>() + .isNull("memo") + .eq("order_No", order.getOrderNo())); + + List<OrderDetl> toReportList = new ArrayList<>(); + + // 寰幆鍒ゆ柇 anfme 鍜� qty 鏄惁鐩哥瓑 + for (OrderDetl orderDetl : orderMemoList) { + if (orderDetl.getAnfme() != null && orderDetl.getQty() != null + && orderDetl.getAnfme().doubleValue() == orderDetl.getQty().doubleValue()) { + toReportList.add(orderDetl); + } + } + + // 濡傛灉鏈夌鍚堟潯浠剁殑鏁版嵁锛屾墽琛屼笂鎶� + if (!toReportList.isEmpty()) { + reportPakIn(toReportList); + + for (OrderDetl detl : toReportList) { + detl.setMemo("1"); + orderDetlService.updateById(detl); + log.info("宸插畬鎴愬崟鎹笂鎶� =====> " + detl); + } + } + } + + return SUCCESS; + } + + private void reportPakIn(List<OrderDetl> orderDetls) { + + ReturnT<String> start = loginAuthenticationHandler.start(); + KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get("鍏ュ簱鍗�"); + Date now = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + // 鏋勫缓涓诲崟 JSON 鏁版嵁 + JSONObject requestBody = new JSONObject(); + requestBody.put("billType", "鍏ュ簱鍗�"); + + // 浠庣涓�涓槑缁嗕腑鎻愬彇璁㈠崟鍙风瓑淇℃伅锛堜綘鍙互鏍规嵁瀹為檯鎯呭喌璋冩暣锛� + if (!orderDetls.isEmpty()) { + OrderDetl first = orderDetls.get(0); + requestBody.put("orderNo", first.getOrderNo()); + } + + requestBody.put("createTime", sdf.format(now)); + + // 鏋勫缓鐗╂枡鍒楄〃 + JSONArray matList = new JSONArray(); + for (OrderDetl detl : orderDetls) { + JSONObject mat = new JSONObject(); + mat.put("matnr", detl.getMatnr()); + mat.put("maktx", detl.getMaktx()); + mat.put("batch", detl.getBatch()); + mat.put("qty", detl.getQty()); + mat.put("anfme", detl.getAnfme()); + mat.put("units", detl.getUnits()); + matList.add(mat); + } + + requestBody.put("matList", matList); + + // 鍙戦�� POST 璇锋眰 + String response = ""; + boolean success = false; + try { + HashMap<String, Object> headers = new HashMap<>(); + // 鍋囪浣犲凡缁忔彁鍓嶇櫥褰曞苟鑾峰彇浜� cookie + headers.put("Cookie", loginAuthenticationHandler.start().getContent()); + + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(inaddressSave) // 璁剧疆浣犵殑鎺ュ彛璺緞 + .setJson(requestBody.toJSONString()) + .build() + .doPost(); + + JSONObject data = JSON.parseObject(response); + Object isSuccess = findValueByKey(data, "IsSuccess"); + String bool = isSuccess != null ? isSuccess.toString() : "false"; + + if ("true".equals(bool)) { + success = true; + } + } catch (Exception e) { + log.error("涓婃姤ERP澶辫触", e); + } finally { + try { + apiLogService.save( + "鍏ュ簱涓婃姤", + URL + inaddressSave, + null, + "127.0.0.1", + requestBody.toJSONString(), + response, + success + ); + } catch (Exception e) { + log.error("鏃ュ織淇濆瓨澶辫触", e); + } + } + } + + public ReturnT<String> startPakOut() { + // 鍏堟煡鍑� memo 涓� null 鐨勬墍鏈夋暟鎹嚭搴撳崟 + List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 33)); + for(Order order : orderList){ + List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>() + .isNull("memo") + .eq("order_No", order.getOrderNo())); + + List<OrderDetl> toReportList = new ArrayList<>(); + + // 寰幆鍒ゆ柇 anfme 鍜� qty 鏄惁鐩哥瓑 + for (OrderDetl orderDetl : orderMemoList) { + if (orderDetl.getAnfme() != null && orderDetl.getQty() != null + && orderDetl.getAnfme().doubleValue() == orderDetl.getQty().doubleValue()) { + toReportList.add(orderDetl); + } + } + + // 濡傛灉鏈夌鍚堟潯浠剁殑鏁版嵁锛屾墽琛屼笂鎶� + if (!toReportList.isEmpty()) { + reportPakOut(toReportList); + + for (OrderDetl detl : toReportList) { + detl.setMemo("1"); + orderDetlService.updateById(detl); + log.info("宸插畬鎴愬崟鎹笂鎶� =====> " + detl); + } + } + } + + return SUCCESS; + } + + private void reportPakOut(List<OrderDetl> orderDetls) { + + ReturnT<String> start = loginAuthenticationHandler.start(); + KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get("鍑哄簱鍗�"); + Date now = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + // 鏋勫缓涓诲崟 JSON 鏁版嵁 + JSONObject requestBody = new JSONObject(); + requestBody.put("billType", "鍑哄簱鍗�"); + + // 浠庣涓�涓槑缁嗕腑鎻愬彇璁㈠崟鍙风瓑淇℃伅锛堜綘鍙互鏍规嵁瀹為檯鎯呭喌璋冩暣锛� + if (!orderDetls.isEmpty()) { + OrderDetl first = orderDetls.get(0); + requestBody.put("orderNo", first.getOrderNo()); + } + + requestBody.put("createTime", sdf.format(now)); + + // 鏋勫缓鐗╂枡鍒楄〃 + JSONArray matList = new JSONArray(); + for (OrderDetl detl : orderDetls) { + JSONObject mat = new JSONObject(); + mat.put("matnr", detl.getMatnr()); + mat.put("maktx", detl.getMaktx()); + mat.put("batch", detl.getBatch()); + mat.put("qty", detl.getQty()); + mat.put("anfme", detl.getAnfme()); + mat.put("units", detl.getUnits()); + matList.add(mat); + } + + requestBody.put("matList", matList); + + // 鍙戦�� POST 璇锋眰 + String response = ""; + boolean success = false; + try { + HashMap<String, Object> headers = new HashMap<>(); + // 鍋囪浣犲凡缁忔彁鍓嶇櫥褰曞苟鑾峰彇浜� cookie + headers.put("Cookie", loginAuthenticationHandler.start().getContent()); + + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(inaddressSave) // 璁剧疆浣犵殑鎺ュ彛璺緞 + .setJson(requestBody.toJSONString()) + .build() + .doPost(); + + JSONObject data = JSON.parseObject(response); + Object isSuccess = findValueByKey(data, "IsSuccess"); + String bool = isSuccess != null ? isSuccess.toString() : "false"; + + if ("true".equals(bool)) { + success = true; + } + } catch (Exception e) { + log.error("涓婃姤ERP澶辫触", e); + } finally { + try { + apiLogService.save( + "鍑哄簱涓婃姤", + URL + outaddressSave, + null, + "127.0.0.1", + requestBody.toJSONString(), + response, + success + ); + } catch (Exception e) { + log.error("鏃ュ織淇濆瓨澶辫触", e); + } + } + } + + public static Object findValueByKey(JSONObject json, String key) { + Set<String> keySet = json.keySet(); + for (String k : keySet) { + Object v = json.get(k); + if (k.equals(key)) { + return v; + } else if (v instanceof JSONArray) { + int size = ((JSONArray) v).size(); + for (int i = 0; i <= size - 1; i++) { + Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); + if (result != null){ + return result; + } + } + } else if (v instanceof JSONObject){ + Object result = findValueByKey((JSONObject) v, key); + if (result != null){ + return result; + } + } + } + return null; + } + + +} diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java index 650e884..7af15f2 100644 --- a/src/main/java/com/zy/common/model/DetlDto.java +++ b/src/main/java/com/zy/common/model/DetlDto.java @@ -21,6 +21,8 @@ private Double anfme; + private Double units; + public DetlDto() { } @@ -40,6 +42,13 @@ this.anfme = anfme; } + public DetlDto(String matnr, String batch, Double anfme, Double units) { + this.matnr = matnr; + this.batch = batch; + this.anfme = anfme; + this.units = units; + } + public DetlDto(String orderNo, String matnr, String batch, Double anfme) { this.orderNo = orderNo; this.matnr = matnr; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a900867..e23b1b9 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,7 +10,7 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://127.0.0.1:1433;databasename=dlzasrs + url: jdbc:sqlserver://127.0.0.1:1433;databasename=tzglasrs username: sa password: sa@123 mvc: -- Gitblit v1.9.1