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