From cbb0dfaec496d441bbf4287ca8ae85c2776e50ed Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 13 三月 2025 13:12:39 +0800
Subject: [PATCH] #修改 1. 收货通知单明细模板修改 2. 收货通知单添加动态扩展字段
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 6
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 43 +++-
rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReportMsgService.java | 12 +
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java | 5
rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java | 6
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java | 16 ++
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java | 14 +
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReportMsgController.java | 20 ++
/dev/null | 52 ------
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java | 95 +++++++++++
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java | 46 +++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 10
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java | 31 ++-
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 27 ++
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java | 76 +++++++++
rsf-server/src/main/resources/application-dev.yml | 2
19 files changed, 361 insertions(+), 108 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ErpApiController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ErpApiController.java
deleted file mode 100644
index e83aa51..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ErpApiController.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.vincent.rsf.server.api.controller;
-
-import com.vincent.rsf.framework.common.R;
-import com.vincent.rsf.server.api.controller.params.Order;
-import com.vincent.rsf.server.api.service.ErpApiService;
-import com.vincent.rsf.server.system.controller.BaseController;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-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 java.util.List;
-
-/**
- * @author Ryan
- * @version 1.0
- * @title ErpApiController
- * @description
- * @create 2025/3/4 13:19
- */
-@RestController
-@RequestMapping("/erp")
-@Api(tags = "ERP鎺ュ彛瀵规帴")
-public class ErpApiController extends BaseController {
-
- @Autowired
- private ErpApiService erpApiService;
-
- /**
- * @author Ryan
- * @description 鎺ユ敹ERP鎺ㄩ�佺殑PO鍗曟嵁
- * @throws
- * @return
- * @time 2025/3/4 13:57
- */
- @ApiOperation(value = "鎺ユ敹鍚屾ERP閲囪喘鍗�")
- @PostMapping("/sync/purchase")
- public R syncPurchases(@RequestBody List<Order> orders) {
- if (orders.isEmpty()) {
- return R.error("鎺ㄩ�佽鍗曚笉鑳戒负绌猴紝璇锋鏌ユ牎楠屽悗鍐嶆搷浣滐紒锛�");
- }
- if (!erpApiService.syncPurchasee(orders)) {
- return R.error("淇濆瓨澶辫触");
- } else {
- return R.ok("淇濆瓨鎴愬姛锛侊紒");
- }
- }
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java
new file mode 100644
index 0000000..16a5e11
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java
@@ -0,0 +1,76 @@
+package com.vincent.rsf.server.api.controller;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.controller.params.OrderParams;
+import com.vincent.rsf.server.api.service.ReceiveMsgService;
+import com.vincent.rsf.server.common.utils.ExcelUtil;
+import com.vincent.rsf.server.manager.entity.AsnOrder;
+import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
+import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title ErpApiController
+ * @description
+ * @create 2025/3/4 13:19
+ */
+@RestController
+@RequestMapping("/erp")
+@Api(tags = "ERP鎺ュ彛瀵规帴")
+public class ReceiveMsgController extends BaseController {
+
+ @Autowired
+ private ReceiveMsgService receiveMsgService;
+
+ /**
+ * @author Ryan
+ * @description 鎺ユ敹ERP鎺ㄩ�佺殑PO鍗曟嵁
+ * @throws
+ * @return
+ * @time 2025/3/4 13:57
+ */
+ @ApiOperation(value = "鎺ユ敹鍚屾ERP閲囪喘鍗�")
+ @PostMapping("/sync/purchase")
+ public R syncPurchases(@RequestBody List<OrderParams> orders) {
+ if (orders.isEmpty()) {
+ return R.error("鎺ㄩ�佽鍗曚笉鑳戒负绌猴紝璇锋鏌ユ牎楠屽悗鍐嶆搷浣滐紒锛�");
+ }
+ if (!receiveMsgService.syncPurchasee(orders)) {
+ return R.error("淇濆瓨澶辫触");
+ } else {
+ return R.ok("淇濆瓨鎴愬姛锛侊紒");
+ }
+ }
+
+ /**
+ * @author Ryan
+ * @description 鍚屾璐ㄦ缁撴灉淇℃伅
+ * @param
+ * @return
+ * @time 2025/3/12 16:56
+ */
+ @ApiOperation("璐ㄦ缁撴灉鍚屾")
+ @PostMapping("/sync/inspect")
+ public void syncQlyInspect(HttpServletRequest request, HttpServletResponse response) {
+ AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class);
+ List<AsnOrderTemplate> list = new ArrayList<>();
+ list.add(template);
+ ExcelUtil.build(ExcelUtil.create(list, AsnOrderTemplate.class), response);
+ System.out.println(template);
+// return R.ok();
+ }
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReportMsgController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReportMsgController.java
new file mode 100644
index 0000000..eb916b4
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReportMsgController.java
@@ -0,0 +1,20 @@
+package com.vincent.rsf.server.api.controller;
+
+import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title ReportMsgController
+ * @description
+ * @create 2025/3/12 17:00
+ */
+@RestController
+@RequestMapping("/report")
+@Api(tags = "涓婃姤淇℃伅鎺ュ彛绠$悊鍣�")
+public class ReportMsgController extends BaseController {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/Order.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java
similarity index 96%
rename from rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/Order.java
rename to rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java
index 996b6ea..2c8d5c5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/Order.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java
@@ -21,7 +21,7 @@
@Data
@Accessors(chain = true)
@ApiModel(value = "PurchaseOrder", description = "鍏ュ簱鍗曟嵁")
-public class Order implements Serializable {
+public class OrderParams implements Serializable {
@ApiModelProperty(value = "鍗曟嵁缂栫爜")
private String code;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
similarity index 74%
rename from rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java
rename to rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
index 321eb7a..b0df19a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
@@ -1,7 +1,7 @@
package com.vincent.rsf.server.api.service;
-import com.vincent.rsf.server.api.controller.params.Order;
+import com.vincent.rsf.server.api.controller.params.OrderParams;
import com.vincent.rsf.server.api.entity.dto.PoItemsDto;
import java.util.List;
@@ -13,14 +13,14 @@
* @description
* @create 2025/3/4 16:23
*/
-public interface ErpApiService {
+public interface ReceiveMsgService {
/**
* 閲囪喘鍗曞悓姝�
* @param orders
* @return
*/
- boolean syncPurchasee(List<Order> orders);
+ boolean syncPurchasee(List<OrderParams> orders);
/**
* 涓�閿姤妫�
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReportMsgService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReportMsgService.java
new file mode 100644
index 0000000..83ab495
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReportMsgService.java
@@ -0,0 +1,12 @@
+package com.vincent.rsf.server.api.service;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title ReportMsgService
+ * @description
+ * @create 2025/3/12 17:07
+ */
+public interface ReportMsgService {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index a62dd3b..525be1b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -20,6 +20,7 @@
import com.vincent.rsf.server.manager.service.WarehouseAreasItemService;
import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import com.vincent.rsf.server.system.constant.CodeRes;
+import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.controller.param.LoginParam;
import com.vincent.rsf.server.system.controller.result.LoginResult;
import com.vincent.rsf.server.system.entity.*;
@@ -174,7 +175,7 @@
.setAreaName(areasItem.getName())
.setAreaId(areasItem.getId())
.setStockUnit(dto.getStockUnit())
- .setBatch(SerialRuleUtils.generateRuleCode("sys_receipt_batch", dto))
+ .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
.setAnfme(dto.getReceiptQty())
.setSplrBtch(dto.getSplrBatch())
.setMatnrCode(matnr.getCode())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
similarity index 89%
rename from rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java
rename to rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index 320a1f8..1e3daf7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -19,9 +19,12 @@
import com.vincent.rsf.server.manager.service.PurchaseItemService;
import com.vincent.rsf.server.manager.service.PurchaseService;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
-import com.vincent.rsf.server.api.controller.params.Order;
+import com.vincent.rsf.server.api.controller.params.OrderParams;
+import com.vincent.rsf.server.system.entity.Fields;
+import com.vincent.rsf.server.system.service.FieldsItemService;
+import com.vincent.rsf.server.system.service.FieldsService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
-import com.vincent.rsf.server.api.service.ErpApiService;
+import com.vincent.rsf.server.api.service.ReceiveMsgService;
import com.vincent.rsf.server.manager.entity.Purchase;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -48,16 +51,14 @@
*/
@Slf4j
@Service("erpApiService")
-public class ErpApiServiceImpl implements ErpApiService {
+public class ReceiveMsgServiceImpl implements ReceiveMsgService {
@Autowired
private PurchaseService purchaseService;
@Autowired
private PurchaseItemService purchaseItemService;
-
@Autowired
private AsnOrderService asnOrderService;
-
@Autowired
private AsnOrderItemService asnOrderItemService;
@Autowired
@@ -66,10 +67,14 @@
private RemotesInfoProperties remotesInfoProperties;
@Autowired
private RemotesInfoProperties.ApiInfo apiInfo;
+ @Autowired
+ private FieldsService fieldsService;
+ @Autowired
+ private FieldsItemService fieldsItemService;
@Override
@Transactional(rollbackFor = Exception.class)
- public boolean syncPurchasee(List<Order> orders) {
+ public boolean syncPurchasee(List<OrderParams> orders) {
if (orders.isEmpty()) {
throw new CoolException("鍗曟嵁鍐呭涓嶈兘涓虹┖锛侊紒");
}
@@ -82,12 +87,22 @@
if (!purchaseService.save(purchase)) {
throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触");
}
+
+ //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪
+ List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
+
//鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖
if (!ors.getChildren().isEmpty()) {
ArrayList<PurchaseItem> list = new ArrayList<>();
ors.getChildren().forEach(orderItem -> {
PurchaseItem item = new PurchaseItem();
BeanUtils.copyProperties(orderItem, item);
+// if (!fields.isEmpty()) {
+// List<String> fieldValue = fields.stream().map(Fields::getFields).collect(Collectors.toList());
+// fieldValue.forEach(value -> {
+//
+// });
+// }
item.setPurchaseId(purchase.getId());
list.add(item);
});
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
new file mode 100644
index 0000000..5f3bfc8
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
@@ -0,0 +1,16 @@
+package com.vincent.rsf.server.api.service.impl;
+
+import com.vincent.rsf.server.api.service.ReportMsgService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title ReportMsgServiceImpl
+ * @description
+ * @create 2025/3/12 17:08
+ */
+@Service
+public class ReportMsgServiceImpl implements ReportMsgService {
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
index b501bda..922d42f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
@@ -1,8 +1,12 @@
package com.vincent.rsf.server.common.utils;
+import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment;
import io.swagger.annotations.ApiModelProperty;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.*;
@@ -20,6 +24,7 @@
/**
* Created by vincent on 2/17/2024
*/
+@Slf4j
public class ExcelUtil {
public static void build(Workbook workbook, HttpServletResponse response) {
@@ -33,6 +38,10 @@
}
public static <T> Workbook create(List<T> list, Class<T> clz) {
+ return create(list, clz, false);
+ }
+
+ public static <T> Workbook create(List<T> list, Class<T> clz, boolean flagTemplate) {
HSSFWorkbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet(clz.getSimpleName());
@@ -46,6 +55,15 @@
continue;
}
String memo = "Undefined";
+ if (flagTemplate) {
+ if (field.isAnnotationPresent(ExcelComment.class)) {
+ memo = field.getAnnotation(ExcelComment.class).value();
+ }
+ } else {
+ if (field.isAnnotationPresent(Excel.class)) {
+ memo = field.getAnnotation(Excel.class).name();
+ }
+ }
if (field.isAnnotationPresent(ApiModelProperty.class)) {
memo = field.getAnnotation(ApiModelProperty.class).value();
}
@@ -102,4 +120,81 @@
return params;
}
+ /**
+ * 鏍规嵁 {@code tClass} 鐩稿叧鎴愬憳鍙橀噺鐨� {@link ExcelComment#example()} 瀛楁鍒涘缓妯℃嫙鏁版嵁锛屾殏涓嶆敮鎸� 澶嶆潅绫诲瀷
+ * @param tClass
+ * @return
+ */
+ public static <T> T mockData(Class<T> tClass) {
+ if (tClass == null) {
+ return null;
+ }
+ T instance = null;
+
+ try {
+ instance = tClass.newInstance();
+ Field[] declaredFields = tClass.getDeclaredFields();
+ for (Field declaredField : declaredFields) {
+ ExcelComment comment = declaredField.getAnnotation(ExcelComment.class);
+ if (comment == null) {
+ continue;
+ }
+ declaredField.setAccessible(true);
+ Class<?> fieldType = declaredField.getType();
+
+ String exampleValue = comment.example();
+ Object value = null;
+
+ if (fieldType == int.class || fieldType == Integer.class) {
+ value = StringUtils.isBlank(exampleValue) ? 0 : Integer.parseInt(exampleValue);
+ } else if (fieldType == short.class || fieldType == Short.class) {
+ value = StringUtils.isBlank(exampleValue) ? 0 : Short.parseShort(exampleValue);
+ } else if (fieldType == long.class || fieldType == Long.class) {
+ value = StringUtils.isBlank(exampleValue) ? 0 : Long.parseLong(exampleValue);
+ } else if (fieldType == double.class || fieldType == Double.class) {
+ value = StringUtils.isBlank(exampleValue) ? 0 : Double.parseDouble(exampleValue);
+ } else if (fieldType == boolean.class || fieldType == Boolean.class) {
+ value = StringUtils.isNotBlank(exampleValue) && Boolean.parseBoolean(exampleValue);
+ } else if (fieldType == String.class) {
+ value = exampleValue;
+ } else if (fieldType == Date.class) {
+ value = DateUtils.parse(exampleValue);
+ }
+
+ if (value == null && !isBaseType(fieldType)) {
+ declaredField.set(instance, null);
+ } else {
+ declaredField.set(instance, value);
+ }
+ }
+ } catch (Exception e) {
+ log.error("鏁版嵁鏋勯�犲け璐ワ紝璇锋煡璇㈣缁嗕俊鎭�", e);
+ return instance;
+ }
+
+ return instance;
+ }
+
+
+ /**
+ * 鏄惁鏄熀纭�鏁版嵁绫诲瀷
+ *
+ * @param className
+ * @return
+ */
+ private static boolean isBaseType(Class<?> className) {
+ if (className.equals(java.lang.Integer.class) ||
+ className.equals(java.lang.Byte.class) ||
+ className.equals(java.lang.Long.class) ||
+ className.equals(java.lang.Double.class) ||
+ className.equals(java.lang.Float.class) ||
+ className.equals(java.lang.Character.class) ||
+ className.equals(java.lang.Short.class) ||
+ className.equals(java.lang.Boolean.class)) {
+ return true;
+ }
+ return false;
+ }
+
+
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
index 80e9d25..38b052e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -12,7 +12,9 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.service.AsnOrderService;
+import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.controller.BaseController;
+import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -64,6 +66,10 @@
public R save(@RequestBody AsnOrder asnOrder) {
asnOrder.setCreateBy(getLoginUserId());
asnOrder.setUpdateBy(getLoginUserId());
+ String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, asnOrder);
+ if (!Objects.isNull(code)) {
+ asnOrder.setCode(code);
+ }
if (!asnOrderService.save(asnOrder)) {
return R.error("Save Fail");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
index ab28479..0b65aca 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
@@ -1,10 +1,13 @@
package com.vincent.rsf.server.manager.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.common.domain.BaseParam;
@@ -12,9 +15,15 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.controller.params.AsnOrderItemParams;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
+import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
import com.vincent.rsf.server.system.controller.BaseController;
+import com.vincent.rsf.server.system.entity.Fields;
+import com.vincent.rsf.server.system.entity.FieldsItem;
+import com.vincent.rsf.server.system.service.FieldsItemService;
+import com.vincent.rsf.server.system.service.FieldsService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -24,7 +33,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
+import java.util.stream.Collectors;
+@Api(tags = "ASN鍗曟槑缁�")
@RestController
public class AsnOrderItemController extends BaseController {
@@ -60,17 +71,21 @@
@PreAuthorize("hasAuthority('manager:asnOrderItem:save')")
@OperationLog("Create ASN鍗曟嵁")
@PostMapping("/asnOrderItem/save")
- public R save(@RequestBody AsnOrderItem asnOrderItem) {
- asnOrderItem.setCreateBy(getLoginUserId());
- asnOrderItem.setUpdateBy(getLoginUserId());
- String code = SerialRuleUtils.generateRuleCode("sys_ans_order", asnOrderItem);
- if (!Objects.isNull(code)) {
- asnOrderItem.setAsnCode(code);
+ public R save(@RequestBody Map<String, Object> params) {
+ if (Objects.isNull(params)) {
+ throw new CoolException("淇℃伅涓嶈兘涓虹┖锛侊紒");
}
- if (!asnOrderItemService.save(asnOrderItem)) {
+ params.put("createBy", getLoginUserId());
+ params.put("updateBy", getLoginUser());
+
+ if (!asnOrderItemService.fieldsSave(params)) {
return R.error("Save Fail");
}
- return R.ok("Save Success").add(asnOrderItem);
+ return R.ok("Save Success");
+
+
+
+
}
@PreAuthorize("hasAuthority('manager:asnOrderItem:update')")
@@ -111,8 +126,12 @@
@PreAuthorize("hasAuthority('manager:asnOrderItem:list')")
@PostMapping("/asnOrderItem/export")
+ @ApiOperation("鏀惰揣閫氱煡鍗曟槑缁�")
public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
- ExcelUtil.build(ExcelUtil.create(asnOrderItemService.list(), AsnOrderItem.class), response);
+ AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class);
+ List<AsnOrderTemplate> list = new ArrayList<>();
+ list.add(template);
+ ExcelUtil.build(ExcelUtil.create(list, AsnOrderTemplate.class, true), response);
}
/**
@@ -123,13 +142,13 @@
@PostMapping("/asnOrder/import")
@ApiOperation("ASN瀵煎叆鎺ュ彛")
@PreAuthorize("hasAuthority('manager:asnOrder:update')")
- public R importExcel(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request) throws Exception {
+ public R importExcel(@RequestParam(value = "file") MultipartFile file, @RequestParam String asnId) throws Exception {
if (Objects.isNull(file)) {
throw new CoolException("鏂囦欢涓嶈兘涓虹┖锛侊紒");
}
HashMap<String, Object> hashMap = new HashMap<>();
- if (!Objects.isNull(request.getParameter("asnId"))) {
- hashMap.put("asnId", request.getParameter("asnId"));
+ if (!Objects.isNull(asnId)) {
+ hashMap.put("asnId", asnId);
}
return asnOrderItemService.excelImport(file, hashMap);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
index e2773cd..c37b9ed 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -1,15 +1,13 @@
package com.vincent.rsf.server.manager.entity;
-import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.*;
+
import java.text.SimpleDateFormat;
import java.util.Date;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.vincent.rsf.framework.common.Cools;
@@ -17,6 +15,7 @@
import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.entity.User;
import java.io.Serializable;
+import java.util.Map;
@Data
@Accessors(chain = true)
@@ -45,6 +44,13 @@
private String platItemId;
/**
+ * 鎵╁睍瀛楁
+ */
+ @ApiModelProperty("鎵╁睍瀛楁")
+ @TableField(exist = false)
+ private Map<String, String> extendFields;
+
+ /**
* 瀛楁绱㈠紩
*/
@ApiModelProperty("瀛楁绱㈠紩")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
index 6e784bc..54f5883 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
@@ -5,6 +5,8 @@
import cn.afterturn.easypoi.handler.inter.IExcelModel;
import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelAutoColumnSize;
import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@@ -27,61 +29,60 @@
public class AsnOrderTemplate implements IExcelModel, IExcelDataModel, Serializable {
@Excel(name = "琛屽彿")
- @ExcelComment(example = "1357564255478")
+ @ExcelComment(value = "platItemId", example = "1357564255478")
private String platItemId;
@Excel(name = "鐗╂枡鍚嶇О")
- @ExcelComment(example = "鐗╂枡鍚嶇О")
+ @ExcelComment(value = "matnk",example = "鐗╂枡鍚嶇О")
private String matnk;
@Excel(name = "鏁伴噺")
- @ExcelComment(example = "25")
+ @ExcelComment(value = "anfme",example = "25")
private Double anfme;
@Excel(name = "搴撳瓨鍗曚綅")
- @ExcelComment(example = "涓�")
+ @ExcelComment(value = "stockUnit",example = "涓�")
private String stockUnit;
@Excel(name = "閲囪喘鏁伴噺")
- @ExcelComment(example = "25")
+ @ExcelComment(value = "purQty",example = "25")
private Double purQty;
@Excel(name = "閲囪喘鍗曚綅")
- @ExcelComment(example = "涓�")
+ @ExcelComment(value = "purUnit",example = "涓�")
private String purUnit;
@Excel(name = "宸插畬鎴愭暟閲�")
- @ExcelComment(example = "25")
+ @ExcelComment(value = "qty",example = "25")
private Double qty;
@Excel(name = "渚涘簲鍟嗙紪鐮�")
- @ExcelComment(example = "3654821")
+ @ExcelComment(value = "splrCode",example = "3654821")
private String splrCode;
@Excel(name = "渚涘簲鍟嗗悕绉�")
- @ExcelComment(example = "娴欐睙涓壃鎶�鏈叕鍙�")
+ @ExcelComment(value = "splrName",example = "娴欐睙涓壃鎶�鏈叕鍙�")
private String splrName;
@Excel(name = "渚涘簲鍟嗘壒娆�")
- @ExcelComment(example = "25251212")
+ @ExcelComment(value = "splrBatch",example = "25251212")
private String splrBatch;
@Excel(name = "浜岀淮鐮�")
- @ExcelComment(example = "")
+ @ExcelComment(value = "qrcode",example = "")
private String qrcode;
@Excel(name = "鏉″舰鐮�")
- @ExcelComment(example = "2354788")
+ @ExcelComment(value = "barcode",example = "2354788")
private String barcode;
@Excel(name = "鍖呰鍚嶇О")
- @ExcelComment(example = "绠�")
+ @ExcelComment(value = "packName",example = "绠�")
private String packName;
@Excel(name = "澶囨敞")
- @ExcelComment(example = "娉細鏄撶鍝侊紝杞绘嬁鏀�")
+ @ExcelComment(value = "memo",example = "娉細鏄撶鍝侊紝杞绘嬁鏀�")
private String memo;
-
private Integer rowNum;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java
index deaee2f..c677466 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemService.java
@@ -8,8 +8,11 @@
import java.io.IOException;
import java.util.HashMap;
+import java.util.Map;
public interface AsnOrderItemService extends IService<AsnOrderItem> {
R excelImport(MultipartFile file, HashMap<String, Object> hashMap) throws Exception;
+
+ boolean fieldsSave(Map<String, Object> params);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 7e5cdf6..b7775b2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -2,9 +2,11 @@
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
@@ -14,17 +16,19 @@
import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vincent.rsf.server.system.entity.Fields;
+import com.vincent.rsf.server.system.entity.FieldsItem;
+import com.vincent.rsf.server.system.service.FieldsItemService;
+import com.vincent.rsf.server.system.service.FieldsService;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
@Service("asnOrderItemService")
public class AsnOrderItemServiceImpl extends ServiceImpl<AsnOrderItemMapper, AsnOrderItem> implements AsnOrderItemService {
@@ -32,10 +36,14 @@
@Resource
private AsnOrderMapper asnOrderMapper;
+ @Autowired
+ private FieldsService fieldsService;
+ @Autowired
+ private FieldsItemService fieldsItemService;
+
@Override
@Transactional(rollbackFor = Exception.class)
public R excelImport(MultipartFile file, HashMap<String, Object> hashMap) throws Exception {
-
ExcelImportResult<AsnOrderTemplate> result = ExcelImportUtil.importExcelMore(file.getInputStream(), MatnrsTemplate.class, ExcelUtil.getDefaultImportParams());
if (result.getList().isEmpty()) {
throw new CoolException("鐗╂枡瀵煎叆澶辫触锛侊紒");
@@ -43,7 +51,6 @@
if (!Objects.isNull(hashMap.get("asnId"))) {
throw new CoolException("涓诲崟ID涓虹┖锛屾棤娉曟搷浣滐紒锛�");
}
-
AsnOrder order = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, hashMap.get("asnId")));
if (Objects.isNull(order)) {
throw new CoolException("ASN鍗曟嵁涓嶅瓨鍦紒锛�");
@@ -61,4 +68,31 @@
}
return R.ok("鎿嶄綔鎴愬姛锛侊紒");
}
+
+ @Override
+ public boolean fieldsSave(Map<String, Object> params) {
+ List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
+ List<FieldsItem> fieldsItems = new ArrayList<>();
+ if (!fields.isEmpty()) {
+ String uuid16 = CommonUtil.randomUUID16();
+ for (Fields obj : fields) {
+ if (!Objects.isNull(params.get(obj.getFields()))) {
+ FieldsItem item = new FieldsItem();
+ item.setUuid(uuid16)
+ .setValue(params.get(obj.getFields()).toString())
+ .setMatnrId(Long.parseLong(params.get("matnrId").toString()))
+ .setFieldsId(obj.getId());
+ fieldsItems.add(item);
+ }
+ }
+ if (!fieldsItemService.saveBatch(fieldsItems)) {
+ throw new CoolException("鍗曟嵁鏄庣粏鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
+ }
+ }
+ AsnOrderItem asnOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), AsnOrderItem.class);
+ if (!this.save(asnOrderItem)) {
+ throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+ }
+ return true;
+ }
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
index 61f0632..3e6b57d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -1,12 +1,8 @@
package com.vincent.rsf.server.manager.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.entity.dto.PoItemsDto;
-import com.vincent.rsf.server.api.service.ErpApiService;
-import com.vincent.rsf.server.manager.entity.AsnOrderItem;
-import com.vincent.rsf.server.manager.entity.Purchase;
-import com.vincent.rsf.server.manager.entity.PurchaseItem;
+import com.vincent.rsf.server.api.service.ReceiveMsgService;
import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper;
import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
import com.vincent.rsf.server.manager.entity.AsnOrder;
@@ -32,7 +28,7 @@
public class AsnOrderServiceImpl extends ServiceImpl<AsnOrderMapper, AsnOrder> implements AsnOrderService {
@Autowired
- private ErpApiService erpApiService;
+ private ReceiveMsgService receiveMsgService;
@Resource
private PurchaseMapper purchaseMapper;
@@ -49,7 +45,7 @@
throw new CoolException("ASN鍗曟嵁涓嶈兘涓虹┖锛侊紒");
}
List<PoItemsDto> items = purchaseMapper.poList(asnIds);
- if (erpApiService.reportInspectNotify(items)) {
+ if (receiveMsgService.reportInspectNotify(items)) {
return true;
} else {
return false;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
index 6fdeb55..49bc53d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
@@ -18,4 +18,9 @@
* ASN閫氱煡鍗曠敓鎴愮紪鐮佽鍒�
*/
public final static String SYS_ASN_ORDER = "sys_ans_order";
+
+ /**
+ * 鏀惰揣鎵规瑙勫垯
+ */
+ public final static String SYS_RECEIPT_BATCH = "sys_receipt_batch";
}
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 20d38b4..cf33bf5 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -76,7 +76,7 @@
#绔彛鍙�
port: 8080
#鎺ュ搧閾炬帴鍓嶇紑
- prePath: rsf-server
+ pre-path: rsf-server
#鎺ュ彛鏄庣粏
api:
#璐ㄦ涓婃姤鎺ュ彛
--
Gitblit v1.9.1