verou
2025-03-31 e0b42ac6d0f0361233bf2190b149c6c63c4e2323
Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
7个文件已修改
1个文件已添加
158 ■■■■ 已修改文件
rsf-admin/src/i18n/en.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/ResourceContent.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/QlyIsptStatus.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/utils/SerialRuleUtils.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/en.js
@@ -153,6 +153,8 @@
        deviceSite: 'deviceSite',
        waitPakin: 'WaitPakin',
        waitPakinItem: 'WaitPakinItem',
        task: 'Task',
        taskItem: 'TaskItem',
    },
    table: {
        field: {
@@ -663,6 +665,38 @@
                qty: "qty",
                batch: "batch",
            },
            task: {
                taskCode: "TaskCode",
                taskStatus: "Status",
                taskType: "Type",
                orgLoc: "orgLoc",
                orgSite: "orgSite",
                targLoc: "targLoc",
                targSite: "targSite",
                barcode: "barcode",
                robotCode: "robotCode",
                exceStatus: "exceStatus",
                expDesc: "expDesc",
                sort: "sort",
                expCode: "expCode",
                startTime: "startTime",
                endTime: "endTime",
            },
            taskItem: {
                taskId: "taskId",
                orderId: "orderId",
                orderType: "orderType",
                orderItemId: "orderItemId",
                sourceCode: "sourceCode",
                matnrId: "matnrId",
                maktx: "maktx",
                matnrCode: "matnrCode",
                unit: "unit",
                anfme: "anfme",
                batch: "batch",
                spec: "spec",
                model: "model",
            },
        }
    },
    page: {
rsf-admin/src/i18n/zh.js
@@ -155,6 +155,8 @@
        waitPakinItem: '组拖档明细',
        waitPakinLog: '组拖历史档',
        waitPakinItemLog: '组拖历史档明细',
        task: '任务工作档',
        taskItem: '任务档明细',
    },
    table: {
        field: {
@@ -672,6 +674,38 @@
                qty: "已完成",
                batch: "批次",
            },
            task: {
                taskCode: "任务号",
                taskStatus: "任务状态",
                taskType: "任务类型",
                orgLoc: "源库位",
                orgSite: "源站点",
                targLoc: "目标库位",
                targSite: "目标站点",
                barcode: "拖盘码",
                robotCode: "机器编码",
                exceStatus: "执行状态",
                expDesc: "异常说明",
                sort: "优先级",
                expCode: "异常编码",
                startTime: "开始时间",
                endTime: "结束时间",
            },
            taskItem: {
                taskId: "taskId",
                orderId: "订单ID",
                orderType: "单据类型",
                orderItemId: "订单明细ID",
                sourceCode: "订单号",
                matnrId: "物料ID",
                maktx: "物料名称",
                matnrCode: "物料编码",
                unit: "单位",
                anfme: "数量",
                batch: "批次",
                spec: "规格",
                model: "型号",
            },
        }
    },
    page: {
rsf-admin/src/page/ResourceContent.js
@@ -46,6 +46,9 @@
import waitPakinItemLog from './waitPakinItemLog';
import asnOrderLog from './asnOrderLog';
import asnOrderItemLog from './asnOrderItemLog';
import task from './task';
import taskItem from './taskItem';
const ResourceContent = (node) => {
    switch (node.component) {
@@ -133,9 +136,10 @@
            return waitPakinLog;
        case 'waitPakinItemLog':
            return waitPakinItemLog;
        case 'task':
            return task;
        case 'taskItem':
            return taskItem;
        default:
            return {
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
@@ -59,21 +59,25 @@
        return R.ok(qlyInspectService.listByAsn(map));
    }
    @GetMapping("/qlyInspect/asn/list")
    @PostMapping("/qlyInspect/asn/list")
    @ApiOperation("获取待质检单")
    @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
    public R getUnInspect() {
        return R.ok(qlyInspectService.getUnInspect());
    public R getUnInspect(@RequestBody Map<String, Object> map) {
        if (Objects.isNull(map)) {
            return R.error("参数不能为空!!");
        }
        return R.ok(qlyInspectService.getUnInspect(map));
    }
    @PostMapping("/qlyInspect/selected")
    @ApiOperation("选择质检单据")
    @PreAuthorize("hasAuthority('manager:qlyInspect:update')")
    public R selectedOrder(IsptOrderParam param) {
    public R selectedOrder(@RequestBody IsptOrderParam param) {
        if (Objects.isNull(param)) {
            throw new CoolException("参数不能为空!!");
        }
        return qlyInspectService.saveSelected(param);
        Long loginUserId = getLoginUserId();
        return qlyInspectService.saveSelected(param, loginUserId);
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/QlyIsptStatus.java
New file
@@ -0,0 +1,25 @@
package com.vincent.rsf.server.manager.enums;
/**
 * @author Ryan
 * @version 1.0
 * @title QlyIsptStatus
 * @description
 * @create 2025/3/31 15:38
 */
public enum QlyIsptStatus {
    //质检状态
    QLY_ISPT_STAS_ING("2", "质检中"),
    QLY_ISPT_STAS_DONE("1", "质检完成"),
    QLY_ISPT_STAS_HOLD("0", "待质检"),
    QLY_ISPT_STAS_CLOSE("3", "关闭")
    ;
    QlyIsptStatus(String val, String desc) {
        this.val = val;
        this.desc = desc;
    }
    public String val;
    public String desc;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java
@@ -17,7 +17,7 @@
    R allSave(QlyInspectAndItem params);
    List<AsnOrder> getUnInspect();
    List<AsnOrder> getUnInspect(Map<String, Object> map);
    R saveSelected(IsptOrderParam param);
    R saveSelected(IsptOrderParam param, Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
@@ -8,6 +8,7 @@
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.entity.QlyIsptItem;
import com.vincent.rsf.server.manager.enums.QlyIsptStatus;
import com.vincent.rsf.server.manager.mapper.QlyInspectMapper;
import com.vincent.rsf.server.manager.entity.QlyInspect;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
@@ -100,20 +101,30 @@
    * @return
    * @time 2025/3/31 10:12
    */
    @Override
    public List<AsnOrder> getUnInspect() {
        List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getStatus, 1).eq(AsnOrder::getNtyStatus, 0));
    public List<AsnOrder> getUnInspect(Map<String, Object> params) {
        List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>()
                .eq(AsnOrder::getStatus, 1)
                .eq(!Objects.isNull(params.get("asnCode")), AsnOrder::getCode, !Objects.isNull(params.get("asnCode")) ? params.get("asnCode").toString() : "")
                .eq(AsnOrder::getNtyStatus, 0));
        return asnOrders;
    }
    /**
    * @author Ryan
    * @description 保存
    * @param
    * @return
    * @time 2025/3/31 14:54
    */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R saveSelected(IsptOrderParam param) {
    public R saveSelected(IsptOrderParam param, Long loginUserId) {
        if (Objects.isNull(param.getIds()) || param.getIds().isEmpty()) {
            throw new CoolException("单据ID不能为空!!");
        }
        List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()).eq(AsnOrder::getNtyStatus, 1));
        List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()).eq(AsnOrder::getNtyStatus, 0));
        if (asnOrders.isEmpty()) {
            throw new CoolException("单据不存在!!");
        }
@@ -122,14 +133,18 @@
            throw new CoolException("单据明细不存在!!");
        }
        Map<Long, List<AsnOrderItem>> listMap = orderItems.stream().collect(Collectors.groupingBy(AsnOrderItem::getAsnId));
        List<QlyInspect> qlyInspects = new ArrayList<>();
        for (AsnOrder asnOrder : asnOrders) {
            QlyInspect inspect = new QlyInspect();
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, null);
            if (StringUtils.isBlank(ruleCode)) {
                throw new CoolException("策略错误:请检查策略「" + SerialRuleCode.SYS_INSPECT_CODE + "」是否设置正确!!");
            }
            inspect.setCode(ruleCode).setWkType(asnOrder.getWkType()).setAsnId(asnOrder.getId()).setCode(asnOrder.getCode());
            inspect.setCode(ruleCode)
                    .setWkType(asnOrder.getWkType())
                    .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val)
                    .setCreateBy(loginUserId)
                    .setAsnId(asnOrder.getId())
                    .setAsnCode(asnOrder.getCode());
            /**获取单据明细*/
            List<AsnOrderItem> asnOrderItems = listMap.get(asnOrder.getId());
            if (Objects.isNull(asnOrderItems) || asnOrderItems.isEmpty()) {
@@ -146,16 +161,15 @@
                QlyIsptItem isptItem = new QlyIsptItem();
                BeanUtils.copyProperties(orderItem, isptItem);
                isptItem.setAsnItemId(orderItem.getId())
                        .setIspectId(inspect.getId())
                        .setRcptQty(orderItem.getQty())
                        .setCreateBy(loginUserId)
                        .setDlyQty(orderItem.getAnfme());
                items.add(isptItem);
            }
            if (!qlyIsptItemService.saveBatch(items)) {
                throw new CoolException("明细保存失败!!");
            }
        }
        if (!this.saveBatch(qlyInspects)) {
            throw new CoolException("质检单保存失败!!");
        }
        return R.ok("保存成功!!");
    }
rsf-server/src/main/java/com/vincent/rsf/server/system/utils/SerialRuleUtils.java
@@ -41,6 +41,7 @@
                .getOne(new LambdaQueryWrapper<SerialRule>()
                        .eq(SerialRule::getCode, code));
        if (Objects.isNull(serialRule)) {
            throw new CoolException("当前业务:" + code + ",编码规则不存在!!");
        }
        SerialRuleItemService serialRuleItemService = SpringUtils.getBean(SerialRuleItemService.class);
@@ -112,7 +113,7 @@
        if (Objects.isNull(start) || end == 0) {
            buffer.append(str);
        } else {
            if (str.length() <= (end + start)) {
            if (str.length() < (end + start)) {
                throw new CoolException("截取字符起出字符串长度,请查看规则设定!!");
            }
            //返回起始位置lenStr开始,终点位置为lenStr + len长度的字符串