From ac14c6fdb63d3f6179556dc52ab95d2346e4b099 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 28 三月 2025 14:21:00 +0800 Subject: [PATCH] #新增 1. 新增组拖接口 2. 新增组拖编码生成规则 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java | 23 +++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java | 23 +++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java | 19 +--- rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java | 27 ++++++ rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java | 5 + rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 103 +++++++++++++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java | 19 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java | 3 9 files changed, 209 insertions(+), 15 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java index 8fd8b82..0769ded 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java @@ -9,9 +9,13 @@ import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; +import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.WaitPakin; import com.vincent.rsf.server.manager.service.WaitPakinService; import com.vincent.rsf.server.system.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -19,6 +23,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.*; +@Api(tags = "缁勬嫋閫氱煡妗�") @RestController public class WaitPakinController extends BaseController { @@ -107,4 +112,22 @@ ExcelUtil.build(ExcelUtil.create(waitPakinService.list(), WaitPakin.class), response); } + + @PreAuthorize("hasAuthority('manager:waitPakin:update')") + @ApiOperation("缁勭洏") + @PostMapping("/waitPakin/merge") + public R pikinOrder(@RequestBody WaitPakinParam waitPakin) { + if (Objects.isNull(waitPakin)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + if (StringUtils.isBlank(waitPakin.getBarcode())) { + return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�"); + } + if (Objects.isNull(waitPakin.getItems()) || waitPakin.getItems().isEmpty()) { + return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�"); + } + return R.ok(waitPakinService.mergeItems(waitPakin)); + } + + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java new file mode 100644 index 0000000..7537545 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/PakinItem.java @@ -0,0 +1,19 @@ +package com.vincent.rsf.server.manager.controller.params; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@Accessors(chain = true) +@ApiModel(value = "PakinItem", description = "缁勬嫋鏄庣粏鍙傛暟") +public class PakinItem implements Serializable { + private String trackCode; + + private Long matnrId; + + private Double qty; + +} \ No newline at end of file diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java new file mode 100644 index 0000000..5a8ca9d --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java @@ -0,0 +1,23 @@ +package com.vincent.rsf.server.manager.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 = "WaitPakinParam", description = "缁勬嫋鍙傛暟") +public class WaitPakinParam implements Serializable { + + @ApiModelProperty("鎷栫洏鐮�") + private String barcode; + + @ApiModelProperty("璺熻釜鐮�") + private List<PakinItem> items; + +} + 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 af2a6ec..4de9ef0 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 @@ -56,6 +56,9 @@ @ApiModelProperty("瀛楁绱㈠紩") private String fieldsIndex; + @ApiModelProperty("鎵ц鏁伴噺") + private Double workQty; + /** * ASN鍗曞彿 */ diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java index a7103f5..3f82a58 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; + +import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -22,6 +24,7 @@ import java.util.Date; @Data +@Accessors(chain = true) @TableName("man_wait_pakin") public class WaitPakin implements Serializable { @@ -39,18 +42,6 @@ */ @ApiModelProperty(value= "缂栫爜") private String code; - - /** - * 璁㈠崟ID - */ - @ApiModelProperty(value= "璁㈠崟ID") - private Long ansId; - - /** - * 璁㈠崟缂栫爜 - */ - @ApiModelProperty(value= "璁㈠崟缂栫爜") - private String asnCode; /** * 瀹瑰櫒鐮� @@ -123,10 +114,8 @@ public WaitPakin() {} - public WaitPakin(String code,Long ansId,String asnCode,String barcode,Double anfme,Short ioStatus,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + public WaitPakin(String code,String barcode,Double anfme,Short ioStatus,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { this.code = code; - this.ansId = ansId; - this.asnCode = asnCode; this.barcode = barcode; this.anfme = anfme; this.ioStatus = ioStatus; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java index 0ff1132..27ec6bc 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; + +import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -22,6 +24,7 @@ import java.util.Date; @Data +@Accessors(chain = true) @TableName("man_wait_pakin_item") public class WaitPakinItem implements Serializable { @@ -41,6 +44,30 @@ private Long pakinId; /** + * 璁㈠崟ID + */ + @ApiModelProperty(value= "璁㈠崟ID") + private Long ansId; + + /** + * 璁㈠崟缂栫爜 + */ + @ApiModelProperty(value= "璁㈠崟缂栫爜") + private String asnCode; + + /** + * 璁㈠崟鏄庣粏ID + */ + @ApiModelProperty("璁㈠崟鏄庣粏ID") + private Long asnItemId; + + /** + * 璺熻釜鐮� + */ + @ApiModelProperty("鐗╂枡璺熻釜鐮�") + private String trackCode; + + /** * 鐗╂枡鍚嶇О */ @ApiModelProperty(value= "鐗╂枡鍚嶇О") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java index 2072654..14162bb 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java @@ -1,8 +1,10 @@ package com.vincent.rsf.server.manager.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.WaitPakin; public interface WaitPakinService extends IService<WaitPakin> { + WaitPakin mergeItems(WaitPakinParam waitPakin); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java index acac827..dfbcfe7 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java @@ -1,12 +1,115 @@ package com.vincent.rsf.server.manager.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.manager.controller.params.PakinItem; +import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; +import com.vincent.rsf.server.manager.entity.AsnOrder; +import com.vincent.rsf.server.manager.entity.AsnOrderItem; +import com.vincent.rsf.server.manager.entity.WaitPakinItem; import com.vincent.rsf.server.manager.mapper.WaitPakinMapper; import com.vincent.rsf.server.manager.entity.WaitPakin; +import com.vincent.rsf.server.manager.service.AsnOrderItemService; +import com.vincent.rsf.server.manager.service.AsnOrderService; +import com.vincent.rsf.server.manager.service.WaitPakinItemService; import com.vincent.rsf.server.manager.service.WaitPakinService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vincent.rsf.server.system.constant.SerialRuleCode; +import com.vincent.rsf.server.system.utils.SerialRuleUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; @Service("waitPakinService") public class WaitPakinServiceImpl extends ServiceImpl<WaitPakinMapper, WaitPakin> implements WaitPakinService { + @Autowired + private AsnOrderItemService asnOrderItemService; + @Autowired + private AsnOrderService asnOrderService; + @Autowired + private WaitPakinItemService waitPakinItemService; + + /** + * 鍗曟嵁缁勬嫋 + * @param waitPakin + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public WaitPakin mergeItems(WaitPakinParam waitPakin) { + if (waitPakin.getItems().isEmpty()) { + throw new CoolException("鍙傛暟閿欒锛氱墿鏂欒窡韪爜涓虹┖锛�"); + } + if (StringUtils.isBlank(waitPakin.getBarcode())) { + throw new CoolException("鍙傛暟閿欒锛氭墭鐩樼爜涓虹┖锛侊紒"); + } + + double sum = waitPakin.getItems().stream().mapToDouble(PakinItem::getQty).sum(); + + WaitPakin pakin = new WaitPakin(); + + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAIT_PAKIN_CODE, null); + if (StringUtils.isBlank(ruleCode)) { + throw new CoolException("缂栫爜瑙勫垯閿欒锛� 缂栫爜瑙勫垯銆孲YS_WAIT_PAKIN_CODE銆嶈鍒欐槸涓嶅瓨鍦�"); + } + + pakin.setCode(ruleCode) + .setAnfme(sum) + .setBarcode(waitPakin.getBarcode()); + if (!this.save(pakin)) { + throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒"); + } + + /**鐗╂枡璺熻釜鐮�*/ + List<String> tracks = waitPakin.getItems().stream().map(PakinItem::getTrackCode).collect(Collectors.toList()); + + List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>() + .in(AsnOrderItem::getTrackCode, tracks)); + if (Objects.isNull(asnOrderItems) || asnOrderItems.isEmpty()) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + } + + List<WaitPakinItem> items = new ArrayList<>(); + for (AsnOrderItem item : asnOrderItems) { + WaitPakinItem pakinItem = new WaitPakinItem(); + pakinItem.setAnfme(item.getAnfme()) + .setPakinId(pakin.getId()) + .setAnsId(item.getAsnId()) + .setAsnCode(item.getAsnCode()) + .setBatch(item.getSplrBatch()) + .setFieldsIndex(item.getFieldsIndex()) + .setUnit(item.getStockUnit()) + .setMatnrId(StringUtils.isNotBlank(item.getMatnrId()) ? Long.parseLong(item.getMatnrId()) : null) + .setMaktx(item.getMaktx()) + .setMatnrCode(item.getMatnrCode()); + for (PakinItem waitPakinItem : waitPakin.getItems()) { + if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) { + Double v = item.getWorkQty() + waitPakinItem.getQty(); + pakinItem.setWorkQty(v) + .setAnfme(waitPakinItem.getQty()) + .setTrackCode(waitPakinItem.getTrackCode()); + /**鏇存柊鍗曟嵁鎵ц涓簱瀛�*/ + if (v.compareTo(item.getQty()) > 0) {throw new CoolException("鎵ц涓暟閲忓ぇ浜庢敹璐ф暟閲忥紒锛�");} + if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>() + .eq(AsnOrderItem::getTrackCode, waitPakinItem.getTrackCode()).set(AsnOrderItem::getWorkQty, v))) { + throw new CoolException("鎵ц涓簱瀛樻洿鏂板け璐ワ紒锛�"); + } + } + } + items.add(pakinItem); + } + if (!waitPakinItemService.saveBatch(items)) { + throw new CoolException("缁勬嫋鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + return pakin; + } } 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 5c8fb89..98c6e4e 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 @@ -39,4 +39,9 @@ */ public final static String SYS_MATNR_CODE = "sys_matnr_code"; + /** + * 缁勬嫋缂栫爜鐢熸垚瑙勫垯 + */ + public final static String SYS_WAIT_PAKIN_CODE = "sys_wait_pakin_code"; + } -- Gitblit v1.9.1