From ccb810bdcabb3a10b7463acbdb0aa66c44d9c0bc Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 15 八月 2025 18:32:43 +0800 Subject: [PATCH] 对接ERP基础接口 --- rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java | 24 ++++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java | 3 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java | 24 ++++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java | 29 +++++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 148 ++++++++++++++++++++++++----- rsf-admin/src/page/dashboard/index.jsx | 4 rsf-admin/.env | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/ReceiveMsgController.java | 56 ++++++++++- 9 files changed, 255 insertions(+), 37 deletions(-) diff --git a/rsf-admin/.env b/rsf-admin/.env index f793907..a3c69b2 100644 --- a/rsf-admin/.env +++ b/rsf-admin/.env @@ -1,3 +1,3 @@ -VITE_BASE_IP=192.168.4.151 +VITE_BASE_IP=127.0.0.1 # VITE_BASE_IP=47.76.147.249 VITE_BASE_PORT=8080 diff --git a/rsf-admin/src/page/dashboard/index.jsx b/rsf-admin/src/page/dashboard/index.jsx index db9883b..a41514c 100644 --- a/rsf-admin/src/page/dashboard/index.jsx +++ b/rsf-admin/src/page/dashboard/index.jsx @@ -92,6 +92,8 @@ const getDashBoardHeader = async () => { await request.post('/asnOrder/dashbord/header').then(res => { const { code, msg, data } = res?.data; + console.log(code); + if (code === 200) { setStatistic(data); } else { @@ -174,7 +176,7 @@ <CardWithIcon icon={SensorOccupiedIcon} subtitle={translate('page.dashboard.header.outStockQty')} - title={`${statistic?.membersTotalQua}`} + title={`${statistic?.outAnf}`} type={"out"} statistic={statistic} /> 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 index 8786bd7..13816d9 100644 --- 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 @@ -1,19 +1,21 @@ package com.vincent.rsf.server.api.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.params.BaseMatParms; import com.vincent.rsf.server.api.controller.params.OrderParams; +import com.vincent.rsf.server.api.controller.params.QueryOrderParam; import com.vincent.rsf.server.api.service.ReceiveMsgService; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.utils.ExcelUtil; -import com.vincent.rsf.server.manager.entity.Matnr; +import com.vincent.rsf.server.manager.entity.Loc; import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; -import com.vincent.rsf.server.manager.entity.excel.MatnrsTemplate; -import com.vincent.rsf.server.manager.service.MatnrGroupService; import com.vincent.rsf.server.manager.service.MatnrService; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -24,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -64,6 +67,23 @@ } } + + /** + * @author Ryan + * @date 2025/8/15 + * @description: DO鍗曞悓姝� + * @version 1.0 + */ + @ApiOperation("鍑哄簱閫氱煡鍗�(DO鍗曞悓姝�)") + @PostMapping("/sync/delivery") + public R syncDelivery(@RequestBody List<OrderParams> orders) { + if (!receiveMsgService.syncPurchasee(orders)) { + return R.error("淇濆瓨澶辫触"); + } else { + return R.ok("淇濆瓨鎴愬姛锛侊紒"); + } + } + /** * @author Ryan * @description 鍚屾璐ㄦ缁撴灉淇℃伅 @@ -82,6 +102,7 @@ // return R.ok(); } + @ApiOperation("鍩虹鐗╂枡淇℃伅鍚屾") @PostMapping("/sync/base/matnrs") public R syncMatnrs(@RequestBody List<BaseMatParms> matnrs) { @@ -92,6 +113,31 @@ return R.ok(); } - public R syc + @ApiOperation("鏌ヨ鍗曟嵁鐘舵��") + @PostMapping("/query/order") + public R queryOrderStatus(@RequestBody QueryOrderParam queryParams) { + if (Objects.isNull(queryParams)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return receiveMsgService.queryOrderStatus(queryParams); + } + + + /** + * @author Ryan + * @date 2025/8/15 + * @description: 搴撲綅鏄庣粏鍚屾 + * @version 1.0 + */ + @PostMapping("/sync/locs/detls") + @ApiOperation("搴撲綅淇℃伅鏄庣粏鍚屾") + public R syncLocDetls(@RequestBody Map<String, Object> map) { + BaseParam baseParam = buildParam(map, BaseParam.class); + PageParam<Loc, BaseParam> pageParam = new PageParam<>(baseParam, Loc.class); + QueryWrapper<Loc> wrapper = pageParam.buildWrapper(true); + + return receiveMsgService.syncLocsDetl(pageParam, wrapper); + } + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java index 2c8d5c5..91aaad7 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/OrderParams.java @@ -23,6 +23,9 @@ @ApiModel(value = "PurchaseOrder", description = "鍏ュ簱鍗曟嵁") public class OrderParams implements Serializable { + @ApiModelProperty("绫诲瀷: {po: 閲囪喘鍗曪紝 do: 鍑哄簱鍗晑") + private String type; + @ApiModelProperty(value = "鍗曟嵁缂栫爜") private String code; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java new file mode 100644 index 0000000..535e5fa --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/QueryOrderParam.java @@ -0,0 +1,24 @@ +package com.vincent.rsf.server.api.controller.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 = "QueryOrderParam", description = "璁㈠崟鏌ヨ鎺ュ彛鍙傛暟") +public class QueryOrderParam implements Serializable { + + @ApiModelProperty("鍗曟嵁绫诲瀷锛歿in: 鍏ュ簱鍗曪紝 out: 鍑哄簱鍗曪紝 check: 鐩樼偣鍗晑") + private String type; + + @ApiModelProperty("璁㈠崟鍙�") + private List<String> orderNo; + +} + diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java new file mode 100644 index 0000000..ee677b9 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/WkOrderDto.java @@ -0,0 +1,24 @@ +package com.vincent.rsf.server.api.controller.params; + +import com.vincent.rsf.server.manager.entity.WkOrder; +import com.vincent.rsf.server.manager.entity.WkOrderItem; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.experimental.Delegate; + +import java.io.Serializable; +import java.util.List; + +@Data +@Accessors(chain = true) +@ApiModel(value = "WkOrderDto", description = "璁㈠崟淇℃伅") +public class WkOrderDto implements Serializable { + + private static final long serialVersionUID = 1L; + + @Delegate + private WkOrder order; + + private List<WkOrderItem> orderItems; +} 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 d1eb12d..71faa49 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 @@ -1,9 +1,14 @@ package com.vincent.rsf.server.api.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.api.controller.params.BaseMatParms; import com.vincent.rsf.server.api.controller.params.OrderParams; -import com.vincent.rsf.server.api.entity.dto.PoItemsDto; +import com.vincent.rsf.server.api.controller.params.QueryOrderParam; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; +import com.vincent.rsf.server.manager.entity.Loc; import java.util.List; @@ -23,5 +28,27 @@ */ boolean syncPurchasee(List<OrderParams> orders); + /** + * @author Ryan + * @date 2025/8/15 + * @description: 鍚屾鍩虹鐗╂枡淇℃伅 + * @version 1.0 + */ void syncMatnrs(List<BaseMatParms> matnrs); + + /** + * @author Ryan + * @date 2025/8/15 + * @description: 璁㈠崟淇℃伅鏌ヨ + * @version 1.0 + */ + R queryOrderStatus(QueryOrderParam queryParams); + + /** + * @author Ryan + * @date 2025/8/15 + * @description: 搴撲綅鏄庣粏鍚屾 + * @version 1.0 + */ + R syncLocsDetl(PageParam<Loc, BaseParam> pageParam, QueryWrapper<Loc> wrapper); } 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 46eb8f1..527b49d 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 @@ -2,15 +2,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.params.BaseMatParms; -import com.vincent.rsf.server.manager.entity.Matnr; -import com.vincent.rsf.server.manager.entity.MatnrGroup; +import com.vincent.rsf.server.api.controller.params.QueryOrderParam; +import com.vincent.rsf.server.api.controller.params.WkOrderDto; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; +import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.OrderType; -import com.vincent.rsf.server.manager.entity.PurchaseItem; -import com.vincent.rsf.server.manager.service.MatnrGroupService; -import com.vincent.rsf.server.manager.service.PurchaseItemService; -import com.vincent.rsf.server.manager.service.PurchaseService; +import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.api.controller.params.OrderParams; @@ -19,7 +22,6 @@ import com.vincent.rsf.server.system.service.FieldsService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; 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; import org.springframework.beans.factory.annotation.Autowired; @@ -51,7 +53,25 @@ private MatnrGroupService matnrGroupService; @Autowired private MatnrServiceImpl matnrService; + @Autowired + private AsnOrderService asnOrderService; + @Autowired + private AsnOrderItemService asnOrderItemService; + @Autowired + private DeliveryService deliveryService; + @Autowired + private DeliveryItemService deliveryItemService; + @Autowired + private LocService locService; + @Autowired + private LocItemService locItemService; + /** + * @author Ryan + * @date 2025/8/15 + * @description: 淇濆瓨PO/DO鍗曟嵁 + * @version 1.0 + */ @Override @Transactional(rollbackFor = Exception.class) public boolean syncPurchasee(List<OrderParams> orders) { @@ -59,35 +79,69 @@ throw new CoolException("鍗曟嵁鍐呭涓嶈兘涓虹┖锛侊紒"); } orders.forEach(ors -> { - Purchase purchase = new Purchase(); - BeanUtils.copyProperties(ors, purchase); - String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase); - purchase.setCode(wkVal) - .setType(OrderType.ORDER_IN.type); - if (!purchaseService.save(purchase)) { - throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触"); - } + if (ors.getType().equals("po")) { + Purchase purchase = new Purchase(); + BeanUtils.copyProperties(ors, purchase); + String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase); + purchase.setCode(wkVal) + .setType(OrderType.ORDER_IN.type); + if (!purchaseService.save(purchase)) { + throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触"); + } - //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪 - List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); + //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪 + 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 (!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); - }); - if (!purchaseItemService.saveBatch(list)) { - throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + item.setPurchaseId(purchase.getId()); + list.add(item); + }); + if (!purchaseItemService.saveBatch(list)) { + throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + } + } + } else { + Delivery delivery = new Delivery(); + BeanUtils.copyProperties(ors, delivery); + String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_DELIVERY_RULE_CODE, delivery); + delivery.setCode(wkVal) + .setType(OrderType.ORDER_OUT.type); + if (!deliveryService.save(delivery)) { + throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触"); + } + + //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪 + List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); + + //鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖ + if (!ors.getChildren().isEmpty()) { + ArrayList<DeliveryItem> list = new ArrayList<>(); + ors.getChildren().forEach(orderItem -> { + DeliveryItem item = new DeliveryItem(); + BeanUtils.copyProperties(orderItem, item); +// if (!fields.isEmpty()) { +// List<String> fieldValue = fields.stream().map(Fields::getFields).collect(Collectors.toList()); +// fieldValue.forEach(value -> { +// +// }); +// } + item.setDeliveryId(delivery.getId()); + list.add(item); + }); + if (!deliveryItemService.saveBatch(list)) { + throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + } } } }); @@ -97,6 +151,7 @@ /** * 鐗╂枡淇℃伅鍚屾 + * * @param matnrs */ @Override @@ -125,5 +180,42 @@ } } + /** + * @author Ryan + * @date 2025/8/15 + * @description: 璁㈠崟鏌ヨ + * @version 1.0 + */ + @Override + public R queryOrderStatus(QueryOrderParam queryParams) { + WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() + .eq(WkOrder::getCode, queryParams.getOrderNo()) + .eq(WkOrder::getType, queryParams.getType())); + if (Objects.isNull(wkOrders)) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + } + List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, wkOrders.getId())); + + WkOrderDto wkorderDto = new WkOrderDto(); + wkorderDto.setOrder(wkOrders).setOrderItems(orderItems); + + return R.ok().add(wkorderDto); + } + + /** + * @author Ryan + * @date 2025/8/15 + * @description: 鍚屾搴撲綅淇℃伅 + * @version 1.0 + */ + @Override + public R syncLocsDetl(PageParam<Loc, BaseParam> pageParam, QueryWrapper<Loc> wrapper) { + Page<Object> page = new Page<>(); + page.setCurrent(pageParam.getCurrent()).setSize(pageParam.getSize()); + + + return null; + } + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java index e6cd17b..42359b0 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocPreviewController.java @@ -44,7 +44,7 @@ list.add("row"); list.add("col"); list.add("lev"); - return R.ok().add(locService.page(pageParam, pageParam.buildWrapper(true,list))); + return R.ok().add(locService.page(pageParam, pageParam.buildWrapper(true, list))); } @PreAuthorize("hasAuthority('manager:locPreview:list')") -- Gitblit v1.9.1