verou
2025-03-29 d5c33d641cc7df16e7a6270df7095025a55e275d
Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
16个文件已修改
144 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -56,17 +56,17 @@
    /**
     * 标准扫码收货信息
     * @param barcode
     * @param trackCode
     * @return
     */
    @PreAuthorize("hasAuthority('manager:asnOrder:list')")
    @GetMapping("/orders/{barcode}")
    @GetMapping("/orders/{trackCode}")
    @ApiOperation("标准扫码收货")
    public R  getOrderBybarcode(@PathVariable String barcode) {
        if (StringUtils.isEmpty(barcode)) {
    public R  getOrderBybarcode(@PathVariable String trackCode) {
        if (StringUtils.isEmpty(trackCode)) {
            throw new CoolException("条码不能为空!!");
        }
        return mobileService.getOrderByCode(barcode);
        return mobileService.getOrderByCode(trackCode);
    }
    /**
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
@@ -61,6 +61,9 @@
    @ApiModelProperty("采购数量")
    private Double purQty;
    @ApiModelProperty("实际送货数量")
    private Double anfme;
    @ApiModelProperty("收货数量")
    private Double receiptQty;
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -1,6 +1,5 @@
package com.vincent.rsf.server.api.service.impl;
import com.alibaba.druid.sql.visitor.functions.If;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
@@ -142,7 +141,7 @@
        if (StringUtils.isEmpty(barcode)) {
            return R.error("标签码不能为空!!");
        }
        List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getBarcode, barcode));
        List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, barcode));
        if (Objects.isNull(asnOrderItem)) {
            throw new CoolException("单据明细不存在!!");
        }
@@ -166,7 +165,6 @@
        if (Objects.isNull(params.getWhAreaId())) {
            throw new CoolException("库区标识不能为空!!");
        }
        WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getId, params.getWhAreaId()));
        if (Objects.isNull(areasItem)) {
@@ -200,7 +198,7 @@
            if (Objects.isNull(dto.getReceiptQty())) {
                throw new CoolException("收货数据不能为空!!");
            }
            if (dto.getReceiptQty() < dto.getPurQty()) {
            if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
                throw new CoolException("收货数量不能大于采购数量!!");
            }
@@ -296,6 +294,7 @@
        AsnOrderLog orderLog = new AsnOrderLog();
        BeanUtils.copyProperties(asnOrder, orderLog);
        orderLog.setAsnId(asnOrder.getId());
        if (!asnOrderLogService.save(orderLog)) {
            throw new CoolException("主单历史档添加失败!!");
@@ -306,6 +305,8 @@
        items.forEach(item -> {
            AsnOrderItemLog itemLog = new AsnOrderItemLog();
            BeanUtils.copyProperties(item, itemLog);
            itemLog.setAsnItemId(itemLog.getId())
                    .setAsnId(item.getAsnId());
            logs.add(itemLog);
        });
@@ -389,7 +390,8 @@
                    .setMaktx(asnOrderItem.getMaktx())
                    .setBarcode(asnOrderItem.getBarcode())
                    .setPoCode(asnOrderItem.getPoCode())
                    .setPurQty(asnOrderItem.getAnfme())
                    .setAnfme(asnOrderItem.getAnfme())
                    .setPurQty(asnOrderItem.getPurQty())
                    .setSplrBatch(asnOrderItem.getSplrBatch());
            Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId());
rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
@@ -22,7 +22,7 @@
//        generator.username="sa";
//        generator.password="Zoneyung@zy56$";
        generator.table="man_wait_pakin_item";
        generator.table="man_asn_order_log";
        generator.tableDesc="组拖档明细";
        generator.packagePath="com.vincent.rsf.server.manager";
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
@@ -114,7 +114,7 @@
    @PreAuthorize("hasAuthority('manager:waitPakin:update')")
    @ApiOperation("组盘")
    @ApiOperation("组拖")
    @PostMapping("/waitPakin/merge")
    public R pikinOrder(@RequestBody WaitPakinParam waitPakin) {
        if (Objects.isNull(waitPakin)) {
@@ -129,5 +129,21 @@
        return R.ok(waitPakinService.mergeItems(waitPakin));
    }
    @PreAuthorize("hasAuthority('manager:waitPakin:update')")
    @ApiOperation("组拖解绑")
    @PostMapping("/waitPakin/unbind")
    public R pakinUnBind(@RequestBody WaitPakinParam param) {
        if (Objects.isNull(param)) {
            return R.error("参数不能为空!!");
        }
        if (StringUtils.isBlank(param.getBarcode())) {
            return R.error("托盘码不能为空!!");
        }
        if (Objects.isNull(param.getItems()) || param.getItems().isEmpty()) {
            return R.error("跟踪码不能为空!!");
        }
        return R.ok(waitPakinService);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java
@@ -1,8 +1,12 @@
package com.vincent.rsf.server.manager.entity;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.server.system.constant.DictTypeCode;
import com.vincent.rsf.server.system.entity.DictData;
import com.vincent.rsf.server.system.service.DictDataService;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableLogic;
@@ -208,6 +212,31 @@
//            null    // 备注
//    );
    public String getType$(){
        if (Cools.isEmpty(this.type)){
            return "";
        }
        DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
        DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE).eq(DictData::getValue, this.type));
        if (Objects.isNull(dictData)) {
            return null;
        }
        return dictData.getLabel();
    }
    public String getWkType$(){
        if (Cools.isEmpty(this.wkType)){
            return "";
        }
        DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
        DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE).eq(DictData::getValue, this.wkType));
        if (Objects.isNull(dictData)) {
            return null;
        }
        return dictData.getLabel();
    }
    public String getArrTime$(){
        if (Cools.isEmpty(this.arrTime)){
            return "";
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -120,6 +120,11 @@
    private Double purQty;
    /**
     * 库存批次
     */
    @ApiModelProperty("库存批次")
    private String batch;
    /**
     * 采购单位
     */
    @ApiModelProperty(value= "采购单位")
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.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_asn_order_item_log")
public class AsnOrderItemLog implements Serializable {
@@ -34,6 +37,9 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("Item ID")
    private Long asnItemId;
    /**
     * ASN主单标识
     */
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
@@ -36,6 +36,9 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("主单ID")
    private Long asnId;
    /**
     * 编号
     */
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
@@ -47,7 +47,7 @@
     * 订单ID
     */
    @ApiModelProperty(value= "订单ID")
    private Long ansId;
    private Long asnId;
    /**
     * 订单编码
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -103,15 +103,24 @@
    @Override
    public boolean fieldsSave(Map<String, Object> params) {
       //保存扩展字段
        ExtendFieldsUtils.saveFields(params);
        AsnOrderItem asnOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), AsnOrderItem.class);
        if (StringUtils.isBlank(asnOrderItem.getTrackCode())) {
            SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, params);
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, asnOrderItem);
            asnOrderItem.setTrackCode(ruleCode);
        }
        if (StringUtils.isBlank(asnOrderItem.getBatch())) {
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_BATCH_CODE, asnOrderItem);
            asnOrderItem.setBatch(ruleCode);
        }
        if (!this.saveOrUpdate(asnOrderItem)) {
            throw new CoolException("收货通知单明细保存失败!!");
        }
        //保存扩展字段
        try {
            ExtendFieldsUtils.saveFields(params);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return true;
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -44,10 +44,8 @@
    private ReportMsgService reportMsgService;
    @Resource
    private PurchaseMapper purchaseMapper;
    @Autowired
    private AsnOrderItemService asnOrderItemService;
    @Resource
    private SerialRuleMapper serialRuleMapper;
@@ -67,7 +65,6 @@
            return false;
        }
    }
    @Override
    public List<AsnOrder> getListByMatnr(Map<String, String> params) {
@@ -92,7 +89,9 @@
            throw new CoolException("主单信息不能为空");
        }
        AsnOrder orders = params.getOrders();
        if (Objects.isNull(orders)) {
            throw new CoolException("单据不能为空!!");
        }
        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, orders);
        if (Objects.isNull(ruleCode)) {
            throw new CoolException("收货通知单编码生成失败!!");
@@ -111,7 +110,6 @@
            if (!asnOrderItemService.fieldsSave(item)) {
                throw new CoolException("明细保存失败!!");
            }
        });
        return R.ok("保存成功!!");
    }
@@ -130,7 +128,7 @@
        if (Objects.isNull(params.getOrders().getId())) {
            throw new CoolException("数据错误:单据ID不能为空!!");
        }
        if (this.updateById(params.getOrders())) {
        if (!this.updateById(params.getOrders())) {
            throw new CoolException("主单修改失败!!");
        }
        if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) {
@@ -138,7 +136,7 @@
        }
        List<Map<String, Object>> items = params.getItems();
        List<AsnOrderItem> asnOrderItems = JSONArray.parseArray(JSONArray.toJSONString(items), AsnOrderItem.class);
        if (asnOrderItemService.saveOrUpdateBatch(asnOrderItems)) {
        if (!asnOrderItemService.saveOrUpdateBatch(asnOrderItems)) {
            throw new CoolException("明细修改失败!!");
        }
        return R.ok("修改完成!!");
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -83,8 +83,12 @@
            WaitPakinItem pakinItem = new WaitPakinItem();
            pakinItem.setAnfme(item.getAnfme())
                    .setPakinId(pakin.getId())
                    .setAnsId(item.getAsnId())
                    .setAsnId(item.getAsnId())
                    .setAsnCode(item.getAsnCode())
                    .setAsnItemId(item.getId())
                    .setMatnrCode(item.getMatnrCode())
                    .setBatch(item.getSplrBatch())
                    .setUnit(item.getStockUnit())
                    .setBatch(item.getSplrBatch())
                    .setFieldsIndex(item.getFieldsIndex())
                    .setUnit(item.getStockUnit())
@@ -98,7 +102,7 @@
                            .setAnfme(waitPakinItem.getQty())
                            .setTrackCode(waitPakinItem.getTrackCode());
                    /**更新单据执行中库存*/
                    if (v.compareTo(item.getQty()) > 0) {throw new CoolException("执行中数量大于收货数量!!");}
                    if (v.compareTo(item.getAnfme()) > 0) {throw new CoolException("执行中数量大于收货数量!!");}
                    if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>()
                            .eq(AsnOrderItem::getTrackCode, waitPakinItem.getTrackCode()).set(AsnOrderItem::getWorkQty, v))) {
                        throw new CoolException("执行中库存更新失败!!");
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -24,4 +24,14 @@
     */
    public final static String DICT_SYS_DEVICE_TYPE = "sys_device_type";
    /**
     * 单据业务类型
     */
    public final static String DICT_SYS_BUSINESS_TYPE = "sys_business_type";
    /**
     * 单据类型
     */
    public final static String DICT_SYS_ORDER_TYPE = "sys_order_type";
}
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java
@@ -44,4 +44,9 @@
     */
    public final static String SYS_WAIT_PAKIN_CODE = "sys_wait_pakin_code";
    /**
     * 库存批次编码规则
     */
    public final static String SYS_STOCK_BATCH_CODE = "sys_stock_batch_code";
}
rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java
@@ -28,7 +28,7 @@
     * @return
     * @time 2025/3/15 13:36
     */
    public static Boolean saveFields(Map<String, Object> params) {
    public static Boolean saveFields(Map<String, Object> params) throws Exception{
        FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
        List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>()
                .eq(Fields::getStatus, 1)