rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/ErpQueryController.java
@@ -4,6 +4,7 @@ import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.erp.params.*; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.framework.common.R; @@ -46,6 +47,7 @@ * @version 1.0 */ @ApiOperation(value = "查询分类信息") @OperationLog("物料分类列表") @PostMapping("/query/matnr/group") public R syncMatGroup() { return R.ok().add(matnrGroupService.list()); @@ -58,6 +60,7 @@ * @version 1.0 */ @ApiOperation(value = "查询单据状态及明细") @OperationLog("查询订单状态及明细") @PostMapping("/query/order") public R queryOrderStatus(@RequestBody QueryOrderParam queryParams) { if (Objects.isNull(queryParams)) { @@ -75,6 +78,7 @@ */ @PostMapping("/query/locs/detls") @ApiOperation(value = "库位信息查询") @OperationLog("库位明细列表") public R syncLocDetls(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<Loc, BaseParam> pageParam = new PageParam<>(baseParam, Loc.class); rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
@@ -7,6 +7,7 @@ import com.vincent.rsf.server.api.controller.erp.params.SyncOrderParams; import com.vincent.rsf.server.api.controller.erp.params.SyncTransferParams; import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; import com.vincent.rsf.server.manager.enums.OrderType; @@ -40,7 +41,9 @@ * @return * @time 2025/3/4 13:57 */ @ApiOperation(value = "接收同步ERP采购单") @OperationLog("采购单同步") @PostMapping("/sync/purchase") public R syncPurchases(@RequestBody List<OrderParams> orders) { if (orders.isEmpty()) { @@ -60,6 +63,7 @@ * @version 1.0 */ @ApiOperation(value = "出库通知单(DO单同步)") @OperationLog("出库通知单(DO单同步)") @PostMapping("/sync/delivery") public R syncDelivery(@RequestBody List<OrderParams> orders) { if (!receiveMsgService.syncPurchasee(orders)) { @@ -77,6 +81,7 @@ * @time 2025/3/12 16:56 */ @ApiOperation(value = "质检结果同步") @OperationLog("质检结果同步") @PostMapping("/sync/inspect") public void syncQlyInspect(HttpServletRequest request, HttpServletResponse response) { AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class); @@ -94,6 +99,7 @@ * @version 1.0 */ @ApiOperation("同步单据") @OperationLog("单据同步") @PostMapping("/sync/checks") public R syncCheckResult(@RequestBody SyncOrderParams syncOrders) { if (Objects.isNull(syncOrders)) { @@ -109,6 +115,7 @@ * @version 1.0 */ @ApiOperation("调拔单同步") @OperationLog("调拔单同步") @PostMapping("/sync/transfers") public R syncTransfer(@RequestBody SyncTransferParams transferParams) { if (Objects.isNull(transferParams)) { @@ -125,6 +132,7 @@ * @version 1.0 */ @ApiOperation("库存调整单同步") @OperationLog("库存调整单同步") @PostMapping("/sync/revises") public R syncRevise(@RequestBody SyncLocReviseParams reviseParams) { if (Objects.isNull(reviseParams)) { @@ -140,6 +148,7 @@ * @version 1.0 */ @ApiOperation("质检单上报") @OperationLog("质检单上报") @PostMapping("/sync/qlyInspect") public R syncQlyReport(@RequestBody List<OrderParams> orders) { @@ -153,10 +162,14 @@ * @version 1.0 */ @ApiOperation("单据修改") @OperationLog("单据修改") @PostMapping("/sync/orders/update") public R syncOrderUpdate(@RequestBody List<OrderParams> orders) { public R syncOrderUpdate(@RequestBody SyncOrderParams orders) { if (Objects.isNull(orders)) { return R.error("参数不能为空!!"); } return R.ok(); return receiveMsgService.syncOrderUpdate(orders); } @@ -167,6 +180,7 @@ * @version 1.0 */ @ApiOperation("单据删除") @OperationLog("单据删除") @PostMapping("/sync/orders/delete") public R syncOrderDel(@RequestBody List<OrderParams> orders) { rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/OrderParams.java
@@ -7,6 +7,7 @@ import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -30,6 +31,7 @@ private String code; @ApiModelProperty(value = "需求数量", required = true) @NotNull(message = "数量不能为空") private Double anfme; @ApiModelProperty(value = "已收货数量",required = true) rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
@@ -113,4 +113,12 @@ * @version 1.0 */ R syncLocRevise(SyncLocReviseParams reviseParams); /** * @author Ryan * @date 2025/8/20 * @description: 单据修改--收货通知单/出库单/盘点单 * @version 1.0 */ R syncOrderUpdate(SyncOrderParams orders); } rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.R; @@ -210,7 +211,7 @@ @Override public R queryOrderStatus(QueryOrderParam queryParams) { WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() .eq(WkOrder::getCode, queryParams.getOrderNo()) .in(WkOrder::getCode, queryParams.getOrderNo()) .eq(WkOrder::getType, queryParams.getType())); if (Objects.isNull(wkOrders)) { throw new CoolException("单据不存在!!"); @@ -233,7 +234,7 @@ public R syncLocsDetl(PageParam<Loc, BaseParam> pageParam, QueryWrapper<Loc> wrapper) { Page<Object> page = new Page<>(); page.setCurrent(pageParam.getCurrent()).setSize(pageParam.getSize()); IPage<LocStockDto> locStocks = locService.getLocDetls(page); IPage<LocStockDto> locStocks = locService.getLocDetls(page); return R.ok().add(locStocks); } @@ -303,7 +304,7 @@ BeanUtils.copyProperties(param, locArea); WarehouseAreas warehouseAreas = warehouseAreasService .getOne(new LambdaQueryWrapper<WarehouseAreas>() .eq(WarehouseAreas::getName, param.getName())); .eq(WarehouseAreas::getName, param.getName())); if (!Objects.isNull(warehouseAreas)) { locArea.setWarehouseId(warehouseAreas.getId()); } @@ -357,7 +358,7 @@ String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_COMPANYS_CODE, null); companys.setCode(ruleCode); } else { throw new CoolException(one.getName() + ",企业名重复!!"); throw new CoolException(one.getName() + ",企业名重复!!"); } companys.setType(CompanysType.getCustomVal(param.getType())) .setId(null); @@ -378,12 +379,12 @@ WkOrder wkOrder = new WkOrder(); String ruleCode = null; if (syncOrders.getType().equals(OrderType.ORDER_CHECK.type)) { ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_CHECK_RULE_CODE, null); 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)) { } 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); @@ -532,4 +533,50 @@ return R.ok(); } /** * @author Ryan * @date 2025/8/20 * @description: 单据修改--收货通知单/出库单/盘点单 * @version 1.0 */ @Override @Transactional(timeout = 60, rollbackFor = Exception.class) public R syncOrderUpdate(SyncOrderParams orders) { //入库单修改 if (orders.getType().equals(OrderType.ORDER_IN.type)) { orders.getItems().forEach(orderItem -> { WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() .eq(WkOrder::getCode, orderItem.getOrderCode())); if (Objects.isNull(order)) { throw new CoolException("单据不存在!!"); } if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>() .eq(WkOrderItem::getOrderCode, orderItem.getOrderCode()) .eq(WkOrderItem::getMatnrCode, orderItem.getMatnrCode()) .eq(WkOrderItem::getSplrBatch, orderItem.getBatch()) .set(WkOrderItem::getAnfme, orderItem.getAnfme()))) { throw new CoolException("单据修改失败!!"); } List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>() .eq(WkOrderItem::getOrderId, order.getId())); if (orderItems.isEmpty()) { throw new CoolException("单据明细不存在!!"); } Double summed = orderItems.stream().mapToDouble(WkOrderItem::getAnfme).sum(); order.setAnfme(summed); if (!asnOrderService.updateById(order)) { throw new CoolException("单据修改失败!!"); } //TODO 添加操作日志 }); } else { } return null; } }