From f84b3af27f34be7e22990c54612f3110559c7710 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 19 八月 2025 18:28:44 +0800 Subject: [PATCH] 盘点单、入库单、出库单同步接口 --- /dev/null | 15 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java | 8 ++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 59 ++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java | 78 +++++++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java | 23 +++++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java | 17 ++- 6 files changed, 178 insertions(+), 22 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java index b8c42c9..f3b403b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java @@ -1,11 +1,13 @@ package com.vincent.rsf.server.api.controller.erp; import com.vincent.rsf.framework.common.R; -import com.vincent.rsf.server.api.controller.erp.params.CheckDiffParams; +import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.erp.params.OrderParams; +import com.vincent.rsf.server.api.controller.erp.params.SyncOrderParams; import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.server.common.utils.ExcelUtil; 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; @@ -18,11 +20,12 @@ import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; +import java.util.Objects; @RestController @RequestMapping("/order") @Api(tags = "鍗曟嵁") -public class SyncOrderController { +public class SyncOrderController extends BaseController { @Autowired private ReceiveMsgService receiveMsgService; @@ -87,11 +90,13 @@ * @description: 鍚屾鐩樼偣鍗曟嵁 * @version 1.0 */ - @ApiOperation("鍚屾鐩樼偣鍗�") + @ApiOperation("鍚屾鍗曟嵁") @PostMapping("/sync/checks") - public R syncCheckResult(@RequestBody List<CheckDiffParams> checkDiffs) { - - return R.ok(); + public R syncCheckResult(@RequestBody SyncOrderParams syncOrders) { + if (Objects.isNull(syncOrders)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return receiveMsgService.syncCheckOrder(syncOrders, getLoginUserId()); } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java deleted file mode 100644 index d7dac78..0000000 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/CheckDiffParams.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.vincent.rsf.server.api.controller.erp.params; - - -import io.swagger.annotations.ApiModel; -import lombok.Data; -import lombok.experimental.Accessors; - -@Data -@Accessors(chain = true) -@ApiModel(value = "CheckDiffParams", description = "鍚屾鐩樼偣鍙傛暟") -public class CheckDiffParams { - - private String orderNo; - -} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java new file mode 100644 index 0000000..1ded2e0 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java @@ -0,0 +1,23 @@ +package com.vincent.rsf.server.api.controller.erp.params; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +@Data +@Accessors(chain = true) +@ApiModel(value = "SyncOrderParams", description = "鍗曟嵁鍚屾鍙傛暟") +public class SyncOrderParams implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("鍗曟嵁绫诲瀷{in: 鏀惰揣鍏ュ簱鍗曪紝 out锛氬嚭搴撳崟锛宑heck: 鐩樼偣鍗�, }") + private String type; + + @ApiModelProperty("鍗曟嵁鏄庣粏淇℃伅") + private List<SyncOrdersItem> items; +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java new file mode 100644 index 0000000..58f9aa1 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java @@ -0,0 +1,78 @@ +package com.vincent.rsf.server.api.controller.erp.params; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.experimental.Accessors; +import lombok.Data; + +import java.io.Serializable; + +@Data +@Accessors(chain = true) +@ApiModel(value = "SyncOrdersParams", description = "鍚屾鐩樼偣鍙傛暟") +public class SyncOrdersItem implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("鐩樼偣鍗曟槑缁咺D") + private Long id; + + @ApiModelProperty("璁㈠崟ID") + private Long orderId; + + @ApiModelProperty("璁㈠崟鐘舵�亄in: 鍏ュ簱鍗�, out: 鍑哄簱鍗�, check: 鐩樼偣鍗晑") + private String orderType; + + @ApiModelProperty("涓氬姟绫诲瀷") + private String wkType; + + @ApiModelProperty("ASN鍗曞彿") + private String orderCode; + + @ApiModelProperty("鐗╂枡鏍囪瘑") + private Long matnrId; + + @ApiModelProperty("鐗╂枡缂栫爜") + private String matnrCode; + + @ApiModelProperty("鐗╂枡鍚嶇О") + private String maktx; + + @ApiModelProperty("瀹㈠崟鍙�") + private String platOrderCode; + + @ApiModelProperty("骞冲彴鏍囪瘑锛堣鍙凤級") + private String platItemId; + + @ApiModelProperty("宸ュ崟鍙�") + private String platWorkCode; + + @ApiModelProperty("椤圭洰鍙�") + private String projectCode; + + @ApiModelProperty("瀛楁绱㈠紩") + private String fieldsIndex; + + @ApiModelProperty("瑙勬牸") + private String spec; + + @ApiModelProperty("鍨嬪彿") + private String model; + + @ApiModelProperty("閫佽揣鏁伴噺") + private Double anfme; + + @ApiModelProperty("搴撳瓨鍗曚綅") + private String unit; + + @ApiModelProperty("搴撳瓨鎵规") + private String batch; + + @ApiModelProperty("宸叉敹鏁伴噺") + private Double qty; + + @ApiModelProperty("鏉″舰鐮�") + private String barcode; + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java index c3bf1ad..0ac5d53 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java @@ -89,4 +89,12 @@ * @version 1.0 */ R syncCompanies(List<CompaniesParam> companyParams); + + /** + * @author Ryan + * @date 2025/8/19 + * @description: 鍗曟嵁鍚屾--鏀惰揣閫氱煡鍗�/鍑哄簱鍗�/鐩樼偣鍗� + * @version 1.0 + */ + R syncCheckOrder(SyncOrderParams syncOrders, Long loginUserId); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java index 97b8ffd..fb49c49 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java @@ -14,8 +14,8 @@ import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.CompanysType; import com.vincent.rsf.server.manager.enums.OrderType; +import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.manager.service.*; -import com.vincent.rsf.server.manager.service.impl.LocAreaServiceImpl; import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.entity.Fields; @@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * @author Ryan @@ -72,6 +73,7 @@ private WarehouseService warehouseService; @Autowired private CompanysService companysService; + /** * @author Ryan @@ -354,4 +356,59 @@ return R.ok(); } + + @Override + @Transactional(timeout = 60, rollbackFor = Exception.class) + public R syncCheckOrder(SyncOrderParams syncOrders, Long loginUserId) { + List<SyncOrdersItem> ordersItems = syncOrders.getItems(); + Map<String, List<SyncOrdersItem>> listMap = ordersItems.stream().collect(Collectors.groupingBy(SyncOrdersItem::getOrderCode)); + listMap.keySet().forEach(orderCode -> { + WkOrder wkOrder = new WkOrder(); + String ruleCode = null; + if (syncOrders.getType().equals(OrderType.ORDER_CHECK.type)) { + ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_CHECK_RULE_CODE, null); + } else if (syncOrders.getType().equals(OrderType.ORDER_IN.type)) { + ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, null); + } else if (syncOrders.getType().equals(OrderType.ORDER_OUT.type)) { + ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, null); + } else if (syncOrders.getType().equals(OrderType.ORDER_REVISE.type)) { + ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LOC_REVISE_CODE, null); + } else if (syncOrders.getType().equals(OrderType.ORDER_TRANSFER.type)) { + ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TRANSFER_ORDER_CODE, null); + } + + SyncOrdersItem ordersItem = listMap.get(orderCode).stream().findFirst().get(); + Double anfmes = listMap.get(orderCode).stream().mapToDouble(SyncOrdersItem::getAnfme).sum(); + wkOrder.setType(syncOrders.getType()) + .setWkType(OrderWorkType.getWorkType(ordersItem.getWkType())) + .setAnfme(anfmes) + .setPoCode(orderCode) + .setPoId(ordersItem.getId()) + .setCode(ruleCode) + .setId(null) + .setCreateTime(new Date()) + .setUpdateTime(new Date()) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId); + + if (!asnOrderService.save(wkOrder)) { + throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒"); + } + + listMap.get(orderCode).forEach(order -> { + WkOrderItem wkOrderItem = new WkOrderItem(); + BeanUtils.copyProperties(order, wkOrderItem); + wkOrderItem.setOrderCode(wkOrder.getCode()) + .setOrderId(wkOrder.getId()) + .setId(null); + + if (!asnOrderItemService.save(wkOrderItem)) { + throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + }); + }); + + return R.ok(); + } + } -- Gitblit v1.9.1