verou
2025-04-02 307d5a291ca19496d4abee0e099ebe3eb39ac7d2
Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
19个文件已修改
10个文件已添加
3个文件已删除
1 文件已重命名
855 ■■■■ 已修改文件
rsf-admin/.env 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/task/TaskList.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/taskItem/TaskItemCreate.jsx 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/taskItem/TaskItemEdit.jsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/taskItem/TaskItemList.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/taskItem/TaskItemPanel.jsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/CheckObjParams.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/CheckObjDto.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectDetlDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectItemDto.java 31 ●●●●● 补丁 | 查看 | 原始文档 | 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/MobileService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/IsptHistoriesController.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/IsptHistoriesMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/IsptHistoriesService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/IsptHistoriesServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/IsptHistoriesMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/test/LocAreaMatRelaMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/test/LocMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/test/QlyInspectMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/.env
@@ -1,3 +1,3 @@
VITE_BASE_IP=192.168.4.24
VITE_BASE_IP=192.168.4.13
# VITE_BASE_IP=47.76.147.249
VITE_BASE_PORT=8080
rsf-admin/src/i18n/zh.js
@@ -679,8 +679,8 @@
            },
            task: {
                taskCode: "任务号",
                taskStatus: "任务状态",
                taskType: "任务类型",
                taskStatus: "状态",
                taskType: "类型",
                orgLoc: "源库位",
                orgSite: "源站点",
                targLoc: "目标库位",
rsf-admin/src/page/task/TaskList.jsx
@@ -78,7 +78,6 @@
    <TextInput source="expCode" label="table.field.task.expCode" />,
    <DateInput source="startTime" label="table.field.task.startTime" />,
    <DateInput source="endTime" label="table.field.task.endTime" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
        label="common.field.status"
@@ -132,8 +131,8 @@
                >
                    <NumberField source="id" />
                    <TextField source="taskCode" label="table.field.task.taskCode" />
                    <NumberField source="taskStatus" label="table.field.task.taskStatus" />
                    <NumberField source="taskType" label="table.field.task.taskType" />
                    <NumberField source="taskStatus$" label="table.field.task.taskStatus" />
                    <NumberField source="taskType$" label="table.field.task.taskType" />
                    <TextField source="orgLoc" label="table.field.task.orgLoc" />
                    <TextField source="orgSite" label="table.field.task.orgSite" />
                    <TextField source="targLoc" label="table.field.task.targLoc" />
@@ -144,9 +143,6 @@
                    <TextField source="expDesc" label="table.field.task.expDesc" />
                    <NumberField source="sort" label="table.field.task.sort" />
                    <TextField source="expCode" label="table.field.task.expCode" />
                    <DateField source="startTime" label="table.field.task.startTime" showTime />
                    <DateField source="endTime" label="table.field.task.endTime" showTime />
                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                        <TextField source="nickname" />
                    </ReferenceField>
rsf-admin/src/page/taskItem/TaskItemCreate.jsx
@@ -110,13 +110,6 @@
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.taskItem.sourceCode"
                                        source="sourceCode"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <NumberInput
                                        label="table.field.taskItem.matnrId"
                                        source="matnrId"
@@ -170,13 +163,7 @@
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.taskItem.fieldsIndex"
                                        source="fieldsIndex"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <StatusSelectInput />
rsf-admin/src/page/taskItem/TaskItemEdit.jsx
@@ -89,13 +89,6 @@
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.taskItem.sourceCode"
                                source="sourceCode"
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <NumberInput
                                label="table.field.taskItem.matnrId"
                                source="matnrId"
@@ -146,13 +139,6 @@
                            <TextInput
                                label="table.field.taskItem.model"
                                source="model"
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.taskItem.fieldsIndex"
                                source="fieldsIndex"
                                parse={v => v}
                            />
                        </Stack>
rsf-admin/src/page/taskItem/TaskItemList.jsx
@@ -62,12 +62,10 @@
    <SearchInput source="condition" alwaysOn />,
    <DateInput label='common.time.after' source="timeStart" alwaysOn />,
    <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
    <NumberInput source="taskId" label="table.field.taskItem.taskId" />,
    <NumberInput source="orderId" label="table.field.taskItem.orderId" />,
    <NumberInput source="orderType" label="table.field.taskItem.orderType" />,
    <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />,
    <TextInput source="sourceCode" label="table.field.taskItem.sourceCode" />,
    <NumberInput source="matnrId" label="table.field.taskItem.matnrId" />,
    <TextInput source="maktx" label="table.field.taskItem.maktx" />,
    <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />,
@@ -76,8 +74,6 @@
    <TextInput source="batch" label="table.field.taskItem.batch" />,
    <TextInput source="spec" label="table.field.taskItem.spec" />,
    <TextInput source="model" label="table.field.taskItem.model" />,
    <TextInput source="fieldsIndex" label="table.field.taskItem.fieldsIndex" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
        label="common.field.status"
@@ -134,7 +130,6 @@
                    <NumberField source="orderId" label="table.field.taskItem.orderId" />
                    <NumberField source="orderType" label="table.field.taskItem.orderType" />
                    <NumberField source="orderItemId" label="table.field.taskItem.orderItemId" />
                    <TextField source="sourceCode" label="table.field.taskItem.sourceCode" />
                    <NumberField source="matnrId" label="table.field.taskItem.matnrId" />
                    <TextField source="maktx" label="table.field.taskItem.maktx" />
                    <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />
@@ -143,7 +138,6 @@
                    <TextField source="batch" label="table.field.taskItem.batch" />
                    <TextField source="spec" label="table.field.taskItem.spec" />
                    <TextField source="model" label="table.field.taskItem.model" />
                    <TextField source="fieldsIndex" label="table.field.taskItem.fieldsIndex" />
                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                        <TextField source="nickname" />
rsf-admin/src/page/taskItem/TaskItemPanel.jsx
@@ -66,12 +66,6 @@
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.taskItem.sourceCode"
                                property={record.sourceCode}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.taskItem.matnrId" 
                                property={record.matnrId}
                            />
@@ -116,12 +110,6 @@
                            <PanelTypography
                                title="table.field.taskItem.model" 
                                property={record.model}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.taskItem.fieldsIndex"
                                property={record.fieldsIndex}
                            />
                        </Grid>
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -3,11 +3,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.params.CheckObjParams;
import com.vincent.rsf.server.api.controller.params.OtherReceiptParams;
import com.vincent.rsf.server.api.controller.params.ReceiptParams;
import com.vincent.rsf.server.api.service.MobileService;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.entity.QlyIsptItem;
import com.vincent.rsf.server.system.controller.BaseController;
import com.vincent.rsf.server.system.controller.param.LoginParam;
import io.swagger.annotations.Api;
@@ -132,7 +134,6 @@
        return mobileService.getDeltByCode(code);
    }
    @PreAuthorize("hasAuthority('manager:waitPakin:update')")
    @ApiOperation("组拖")
    @PostMapping("/waitPakin/merge")
@@ -163,7 +164,44 @@
            return R.error("跟踪码不能为空!!");
        }
        return R.ok(mobileService.unBind(param));
    }
    @ApiOperation("报检")
    @GetMapping("/asnOrder/inspect/{code}")
    @PreAuthorize("hasAuthority('manager:waitPakin:list')")
    public R getAsnOdrers(@PathVariable String code) {
        if (Objects.isNull(code)) {
            throw new CoolException("参数不能为空!!");
        }
        return mobileService.inspect(code, getLoginUserId());
    }
    @ApiOperation("提交报检")
    @GetMapping("/inspect/confirm/{id}")
    @PreAuthorize("hasAuthority('manager:waitPakin:list')")
    public R confirmInspect(@PathVariable String id) {
        if (Objects.isNull(id)) {
            throw new CoolException("参数不能为空!");
        }
        return  mobileService.confirmIspt(id);
    }
    @PreAuthorize("hasAuthority('manager:qlyInspect:list')")
    @PostMapping("/inspect/query")
    public R checkObjs(@RequestBody CheckObjParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        return mobileService.checkObjs(params);
    }
    @PreAuthorize("hasAuthority('manager:qlyInspect:update')")
    @PostMapping("/inspect/check/update")
    public R checkUpdate(@RequestBody QlyIsptItem params) {
        if (Objects.isNull(params)) {
            throw new CoolException("参数不能为空!!");
        }
        return mobileService.checkUpdate(params);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/CheckObjParams.java
New file
@@ -0,0 +1,23 @@
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;
@Data
@Accessors(chain = true)
@ApiModel(value = "CheckObjParams", description = "获取质检信息")
public class CheckObjParams implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("质检单")
    private String isptCode;
    @ApiModelProperty("物料编码")
    private String matnrCode;
}
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/CheckObjDto.java
New file
@@ -0,0 +1,39 @@
package com.vincent.rsf.server.api.entity.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
@ApiModel(value = "CheckObjDto", description = "PDA质检信息")
public class CheckObjDto implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("质检单")
    private String isptCode;
    @ApiModelProperty("物料编码")
    private String matnrCode;
    @ApiModelProperty("物料名称")
    private String maktx;
    @ApiModelProperty("单号")
    private String asnCode;
    @ApiModelProperty("供应商名称")
    private String splrName;
    @ApiModelProperty("供应商批次")
    private String splrBatch;
    @ApiModelProperty("收货数量")
    private Double rcptQty;
    @ApiModelProperty("合格数量")
    private Double safeQty;
    @ApiModelProperty("不合格数量")
    private Double disQty;
    @ApiModelProperty("图片路径")
    private String picPath;
    @ApiModelProperty("备注")
    private String memo;
}
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectDetlDto.java
New file
@@ -0,0 +1,28 @@
package com.vincent.rsf.server.api.entity.dto;
import com.vincent.rsf.server.manager.entity.IsptHistories;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
@ApiModel(value = "InspectDetlDto", description = "上报明细")
public class InspectDetlDto {
    @ApiModelProperty("单号")
    private String code;
    @ApiModelProperty("单号ID")
    private Long id;
    @ApiModelProperty("PO单号")
    private String poCode;
    @ApiModelProperty("明细")
    private List<InspectItemDto> items;
    @ApiModelProperty("上报历史")
    private List<IsptHistories> histories;
}
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InspectItemDto.java
New file
@@ -0,0 +1,31 @@
package com.vincent.rsf.server.api.entity.dto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel(value = "InspectItemDto", description = "PDA报检明细")
public class InspectItemDto {
    @ApiModelProperty("物料名称")
    private String maktx;
    @ApiModelProperty("分组编码")
    private String groupCode;
    @ApiModelProperty("分组名称")
    private String group;
    @ApiModelProperty("物料编码")
    private String matnrCode;
    @ApiModelProperty("采购单位")
    private String purUnit;
    @ApiModelProperty("采购数量")
    private Double purQty;
    @ApiModelProperty("供应商名称")
    private String suplierName;
    @ApiModelProperty("供应商编码")
    private String suplierCode;
}
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
@@ -46,6 +46,9 @@
    @ApiModelProperty("最大库存")
    private Double maxQty;
    @ApiModelProperty("已收货数量")
    private Double qty;
    @ApiModelProperty("平台行号")
    private String platformId;
rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -1,10 +1,12 @@
package com.vincent.rsf.server.api.service;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.api.controller.params.CheckObjParams;
import com.vincent.rsf.server.api.controller.params.OtherReceiptParams;
import com.vincent.rsf.server.api.controller.params.ReceiptParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.entity.QlyIsptItem;
import com.vincent.rsf.server.manager.entity.WaitPakin;
import com.vincent.rsf.server.system.controller.param.LoginParam;
import com.vincent.rsf.server.system.entity.Fields;
@@ -40,4 +42,12 @@
    WaitPakin mergeItems(WaitPakinParam waitPakin);
    WaitPakin unBind(WaitPakinParam param);
    R inspect(String code, Long loginUserId);
    R confirmIspt(String id);
    R checkObjs(CheckObjParams params);
    R checkUpdate(QlyIsptItem params);
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -4,8 +4,12 @@
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.params.CheckObjParams;
import com.vincent.rsf.server.api.controller.params.OtherReceiptParams;
import com.vincent.rsf.server.api.controller.params.ReceiptParams;
import com.vincent.rsf.server.api.entity.dto.CheckObjDto;
import com.vincent.rsf.server.api.entity.dto.InspectDetlDto;
import com.vincent.rsf.server.api.entity.dto.InspectItemDto;
import com.vincent.rsf.server.api.entity.dto.ReceiptDetlsDto;
import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
import com.vincent.rsf.server.api.service.MobileService;
@@ -14,6 +18,7 @@
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.mapper.*;
@@ -70,18 +75,22 @@
    private WarehouseAreasService warehouseAreasService;
    @Resource
    private AsnOrderItemMapper asnOrderItemMapper;
    @Resource
    private AsnOrderMapper asnOrderMapper;
    @Autowired
    private AsnOrderService asnOrderMapper;
    @Resource
    private MatnrMapper matnrMapper;
    @Resource
    private QlyInspectMapper qlyInspectMapper;
    @Autowired
    private QlyIsptItemService qlyIsptItemService;
    @Resource
    private StockItemMapper stockItemMapper;
    @Resource
    private PurchaseItemMapper purchaseItemMapper;
    @Resource
    private FieldsMapper fieldsMapper;
    @Autowired
    private IsptHistoriesMapper isptHistoriesMapper;
    @Autowired
    private AsnOrderLogService asnOrderLogService;
@@ -188,14 +197,14 @@
        String asnCode = receipts.stream().findFirst().get().getAsnCode();
        AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>()
        AsnOrder asnOrder = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
                .eq(AsnOrder::getCode, asnCode));
        if (Objects.isNull(asnOrder)) {
            throw new CoolException("数据错误:主单不存在!!");
        }
        asnOrder.setQty(receiptQty);
        if (asnOrderMapper.updateById(asnOrder) < 1) {
        if (!asnOrderMapper.updateById(asnOrder)) {
            throw new CoolException("已收货数量修改失败!!");
        }
@@ -308,7 +317,7 @@
     * @time 2025/3/19 19:53
     */
    private void operateOrderLogs(AsnOrder asnOrder) {
        if (asnOrderMapper.deleteById(asnOrder.getId()) < 1) {
        if (!asnOrderMapper.removeById(asnOrder.getId())) {
            throw new CoolException("原单据删除失败!!");
        }
@@ -370,7 +379,7 @@
     */
    @Override
    public List<AsnOrder> getAllAsnOrders() {
        List<AsnOrder> asnOrders = asnOrderMapper.selectList(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type));
        List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type));
        return asnOrders;
    }
@@ -421,6 +430,132 @@
    }
    /**
     * 报检功能
     * @param code
     * @param loginUserId
     * @return
     */
    @Override
    public R inspect(String code, Long loginUserId) {
        AsnOrder asnOrders = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, code));
        if (Objects.isNull(asnOrders)) {
            throw new CoolException("单据不存在!!");
        }
        InspectDetlDto detlDto = new InspectDetlDto();
        detlDto.setCode(asnOrders.getCode()).setId(asnOrders.getId()).setPoCode(asnOrders.getPoCode());
        List<AsnOrderItem> orderItems = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnCode, code));
        if (orderItems.isEmpty()) {
            detlDto.setItems(new ArrayList<>());
        } else {
            List<InspectItemDto> itemDtos = new ArrayList<>();
            orderItems.forEach(dto -> {
                InspectItemDto itemDto = new InspectItemDto();
                if (!Objects.isNull(dto.getMatnrCode())) {
                    Matnr matnr = matnrMapper.selectOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, dto.getMatnrCode()));
                    itemDto.setGroup(matnr.getGroupCode());
                }
                itemDto.setMaktx(dto.getMaktx())
                        .setMatnrCode(dto.getMatnrCode())
                        .setPurUnit(dto.getPurUnit())
                        .setSuplierCode(dto.getSplrCode())
                        .setSuplierName(dto.getSplrName())
                        .setPurQty(dto.getPurQty());
                itemDtos.add(itemDto);
            });
            detlDto.setItems(itemDtos);
        }
        List<IsptHistories> histories = isptHistoriesMapper.selectList(new LambdaQueryWrapper<IsptHistories>().eq(IsptHistories::getAsnId, asnOrders.getId()));
        detlDto.setHistories(histories);
        return R.ok(detlDto);
    }
    /**
     * @author Ryan
     * @description 提交报检
     * @param
     * @return
     * @time 2025/4/1 16:47
     */
    @Override
    public R confirmIspt(String id) {
        if (org.apache.commons.lang3.StringUtils.isBlank(id)) {
            throw new CoolException("参数不能为空!!");
        }
        AsnOrder asnOrder = asnOrderMapper.getById(id);
        if (Objects.isNull(asnOrder)) {
            throw new CoolException("单据不存在!!");
        }
        List<AsnOrder> orders = new ArrayList<>();
        orders.add(asnOrder);
        if (asnOrderMapper.notifyInspect(orders)) {
           return R.ok("上报成功!!");
        }else {
            return R.error("上报失败!!");
        }
    }
    /**
     * 通过物料,质检单获取需要质检单据
     * @param params
     * @return
     */
    @Override
    public R checkObjs(CheckObjParams params) {
        if (Objects.isNull(params.getIsptCode())) {
            throw new CoolException("质检单不能为空");
        }
        if (Objects.isNull(params.getMatnrCode())) {
            throw new CoolException("物料编码不能为空!");
        }
        QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>().eq(QlyInspect::getCode, params.getIsptCode()));
        if (Objects.isNull(inspect)) {
            throw new CoolException("质检单据不存在!!");
        }
        QlyIsptItem isptItem = qlyIsptItemService.getOne(new LambdaQueryWrapper<QlyIsptItem>()
                .eq(QlyIsptItem::getMatnrCode, params.getMatnrCode())
                .eq(QlyIsptItem::getIspectId, inspect.getId()));
        if (Objects.isNull(isptItem)) {
            throw new CoolException("质检单明细不存在!!");
        }
        CheckObjDto objDto = new CheckObjDto();
        objDto.setIsptCode(inspect.getCode())
                .setAsnCode(inspect.getAsnCode())
                .setMatnrCode(isptItem.getMatnrCode())
                .setMaktx(isptItem.getMaktx())
                .setDisQty(isptItem.getDisQty())
                .setRcptQty(isptItem.getRcptQty())
                .setSplrBatch(isptItem.getSplrBatch())
                .setSplrName(isptItem.getSplrName())
                .setPicPath(isptItem.getPicPath())
                .setMemo(isptItem.getMemo())
                .setSafeQty(isptItem.getSafeQty());
        return R.ok(objDto);
    }
    /**
     * 快速质检
     * @param params
     * @return
     */
    @Override
    public R checkUpdate(QlyIsptItem params) {
        if (Objects.isNull(params.getId()) || Objects.isNull(params.getIspectId())) {
            throw new CoolException("参数不能为空!!");
        }
        IsptItemsParams itemsParams = new IsptItemsParams();
        List<QlyIsptItem> items = new ArrayList<>();
        items.add(params);
        itemsParams.setIsptItem(items).setType("0");
        if (qlyIsptItemService.batchUpdate(itemsParams)) {
            return R.ok();
        } else {
            return R.error("保存失败!!");
        }
    }
    /**
     * 获取ReceiptDetlsDtos
     */
    private R getAsnOrderItem(List<AsnOrderItem> items) {
@@ -431,6 +566,7 @@
            detlsDto.setAsnCode(asnOrderItem.getAsnCode())
                    .setMaktx(asnOrderItem.getMaktx())
                    .setBarcode(asnOrderItem.getTrackCode())
                    .setQty(asnOrderItem.getQty())
                    .setPoCode(asnOrderItem.getPoCode())
                    .setAnfme(asnOrderItem.getAnfme())
                    .setPurQty(asnOrderItem.getPurQty())
rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
New file
@@ -0,0 +1,49 @@
package com.vincent.rsf.server.common;
import com.vincent.rsf.framework.generators.ReactGenerator;
import com.vincent.rsf.framework.generators.constant.SqlOsType;
/**
 * Created by vincent on 2019-06-04
 */
public class CodeBuilder {
    public static void main(String[] args) throws Exception {
        ReactGenerator generator = new ReactGenerator();
        generator.backendPrefixPath = "rsf-server/";
        generator.frontendPrefixPath = "rsf-admin/";
        generator.sqlOsType = SqlOsType.MYSQL;
        generator.url="192.168.4.24:3306/rsf";
        generator.username="root";
        generator.password="34821015";
//        generator.url="47.97.1.152:51433;databasename=jkasrs";
//        generator.username="sa";
//        generator.password="Zoneyung@zy56$";
        generator.table="man_ispt_histories";
        generator.tableDesc="任务工作档";
        generator.packagePath="com.vincent.rsf.server.manager";
        generator.build();
    }
/*
 CREATE TABLE `man_tablename` (
 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `code` VARCHAR(255) DEFAULT NULL COMMENT '编号',
 `name` VARCHAR(255) DEFAULT NULL COMMENT '名称(*)',
 `status` INT(1) NOT NULL DEFAULT '1' COMMENT '状态{1:正常,0:冻结}',
 `deleted` INT(1) NOT NULL DEFAULT '0' COMMENT '是否删除{1:是,0:否}',
 `tenant_id` INT(11) DEFAULT NULL COMMENT '租户[sys_tenant]',
 `create_by` BIGINT(20) DEFAULT NULL COMMENT '添加人员[sys_user]',
 `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
 `update_by` BIGINT(20) DEFAULT NULL COMMENT '修改人员[sys_user]',
 `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
 `memo` VARCHAR(255) DEFAULT NULL COMMENT '备注',
 PRIMARY KEY (`id`)
 ) ENGINE=INNODB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
 */
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/IsptHistoriesController.java
New file
@@ -0,0 +1,110 @@
package com.vincent.rsf.server.manager.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.common.annotation.OperationLog;
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.entity.IsptHistories;
import com.vincent.rsf.server.manager.service.IsptHistoriesService;
import com.vincent.rsf.server.system.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
@RestController
public class IsptHistoriesController extends BaseController {
    @Autowired
    private IsptHistoriesService isptHistoriesService;
    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
    @PostMapping("/isptHistories/page")
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<IsptHistories, BaseParam> pageParam = new PageParam<>(baseParam, IsptHistories.class);
        return R.ok().add(isptHistoriesService.page(pageParam, pageParam.buildWrapper(true)));
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
    @PostMapping("/isptHistories/list")
    public R list(@RequestBody Map<String, Object> map) {
        return R.ok().add(isptHistoriesService.list());
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
    @PostMapping({"/isptHistories/many/{ids}", "/isptHistoriess/many/{ids}"})
    public R many(@PathVariable Long[] ids) {
        return R.ok().add(isptHistoriesService.listByIds(Arrays.asList(ids)));
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
    @GetMapping("/isptHistories/{id}")
    public R get(@PathVariable("id") Long id) {
        return R.ok().add(isptHistoriesService.getById(id));
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:save')")
    @OperationLog("Create 任务工作档")
    @PostMapping("/isptHistories/save")
    public R save(@RequestBody IsptHistories isptHistories) {
        isptHistories.setCreateBy(getLoginUserId());
        isptHistories.setCreateTime(new Date());
        isptHistories.setUpdateBy(getLoginUserId());
        isptHistories.setUpdateTime(new Date());
        if (!isptHistoriesService.save(isptHistories)) {
            return R.error("Save Fail");
        }
        return R.ok("Save Success").add(isptHistories);
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:update')")
    @OperationLog("Update 任务工作档")
    @PostMapping("/isptHistories/update")
    public R update(@RequestBody IsptHistories isptHistories) {
        isptHistories.setUpdateBy(getLoginUserId());
        isptHistories.setUpdateTime(new Date());
        if (!isptHistoriesService.updateById(isptHistories)) {
            return R.error("Update Fail");
        }
        return R.ok("Update Success").add(isptHistories);
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:remove')")
    @OperationLog("Delete 任务工作档")
    @PostMapping("/isptHistories/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        if (!isptHistoriesService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
        return R.ok("Delete Success").add(ids);
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
    @PostMapping("/isptHistories/query")
    public R query(@RequestParam(required = false) String condition) {
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<IsptHistories> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(IsptHistories::getName, condition);
        }
        isptHistoriesService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
                item -> vos.add(new KeyValVo(item.getId(), item.getName()))
        );
        return R.ok().add(vos);
    }
    @PreAuthorize("hasAuthority('manager:isptHistories:list')")
    @PostMapping("/isptHistories/export")
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
        ExcelUtil.build(ExcelUtil.create(isptHistoriesService.list(), IsptHistories.class), response);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
@@ -126,6 +126,13 @@
    @OperationLog("Delete 质检信息")
    @PostMapping("/qlyInspect/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        if (Objects.isNull(ids) || ids.length < 1) {
            return R.error("能数不能为空!!");
        }
        List<QlyInspect> qlyInspects = qlyInspectService.list(new LambdaQueryWrapper<QlyInspect>().in(QlyInspect::getId, ids));
        if (!qlyInspects.isEmpty()) {
            return R.error("有明细列表存在!!");
        }
        if (!qlyInspectService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
@@ -114,7 +114,7 @@
    }
    @PreAuthorize("hasAuthority('manager:qlyIsptItem:update')")
    @ApiOperation("批量修改")
    @ApiOperation("快速质检")
    @PostMapping("/qlyIsptItem/batch/update")
    public R batchUpdate(@RequestBody IsptItemsParams params) {
        if (Objects.isNull(params)) {
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -91,11 +91,12 @@
        if (Objects.isNull(ids) || ids.length < 1) {
            return R.error("参数不能为空!!");
        }
        List<TaskItem> list = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, ids));
        if (!list.isEmpty()) {
            return R.error("有明细列表存在 !!");
        }
        if (!taskService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
        if (!taskItemService.remove(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, ids))) {
            return R.error("删除失败!!");
        }
        return R.ok("Delete Success").add(ids);
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
@@ -12,7 +12,9 @@
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.entity.WaitPakinItem;
import com.vincent.rsf.server.manager.service.TaskService;
import com.vincent.rsf.server.manager.service.WaitPakinItemService;
import com.vincent.rsf.server.manager.service.WaitPakinService;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
@@ -31,6 +33,9 @@
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private WaitPakinItemService waitPakinItemService;
    @Autowired
    private TaskService taskService;
@@ -96,6 +101,11 @@
    @OperationLog("Delete 组拖档")
    @PostMapping("/waitPakin/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
                .in(WaitPakinItem::getPakinId, ids));
        if (!pakinItems.isEmpty()) {
            return R.error("组拖档有明细任务");
        }
        if (!waitPakinService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
@@ -130,7 +140,7 @@
        if (Objects.isNull(waitPakin) || waitPakin.isEmpty()) {
            throw new CoolException("参数不能为空!!");
        }
        return  taskService.generateTasks(waitPakin);
        return  taskService.generateTasks(waitPakin, getLoginUserId());
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/IsptHistories.java
New file
@@ -0,0 +1,202 @@
package com.vincent.rsf.server.manager.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.entity.User;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("man_ispt_histories")
public class IsptHistories implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 单号
     */
    @ApiModelProperty(value= "单号")
    private String code;
    /**
     * 上报人员
     */
    @ApiModelProperty(value= "上报人员")
    private String operator;
    /**
     * 单据ID
     */
    @ApiModelProperty(value= "单据ID")
    private Long asnId;
    /**
     * 名称
     */
    @ApiModelProperty(value= "名称")
    private String name;
    /**
     * 状态 1: 正常  0: 冻结
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 冻结  ")
    private Integer status;
    /**
     * 是否删除 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
     * 租户
     */
    @ApiModelProperty(value= "租户")
    private Integer tenantId;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    public IsptHistories() {}
    public IsptHistories(String code,String operator,Long asnId,String name,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.code = code;
        this.operator = operator;
        this.asnId = asnId;
        this.name = name;
        this.status = status;
        this.deleted = deleted;
        this.tenantId = tenantId;
        this.createBy = createBy;
        this.createTime = createTime;
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.memo = memo;
    }
//    IsptHistories isptHistories = new IsptHistories(
//            null,    // 单号
//            null,    // 上报人员
//            null,    // 单据ID
//            null,    // 名称
//            null,    // 状态[非空]
//            null,    // 是否删除[非空]
//            null,    // 租户
//            null,    // 添加人员
//            null,    // 添加时间[非空]
//            null,    // 修改人员
//            null,    // 修改时间[非空]
//            null    // 备注
//    );
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return "正常";
            case 0:
                return "冻结";
            default:
                return String.valueOf(this.status);
        }
    }
    public String getCreateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.createBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.updateBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public Boolean getStatusBool(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return true;
            case 0:
                return false;
            default:
                return null;
        }
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
@@ -55,9 +55,8 @@
    @ApiModelProperty(value= "物料名称")
    private String maktx;
    @ApiModelProperty("源编码")
    private String sourceCode;
    private Long source;
    @ApiModelProperty("单据ID")
    private Long orderId;
@@ -119,7 +118,6 @@
     * 是否删除 1: 是  0: 否  
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/IsptHistoriesMapper.java
New file
@@ -0,0 +1,12 @@
package com.vincent.rsf.server.manager.mapper;
import com.vincent.rsf.server.manager.entity.IsptHistories;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface IsptHistoriesMapper extends BaseMapper<IsptHistories> {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/IsptHistoriesService.java
New file
@@ -0,0 +1,8 @@
package com.vincent.rsf.server.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.server.manager.entity.IsptHistories;
public interface IsptHistoriesService extends IService<IsptHistories> {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -9,5 +9,5 @@
public interface TaskService extends IService<Task> {
    R generateTasks(List<WaitPakin> waitPakin);
    R generateTasks(List<WaitPakin> waitPakin, Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -59,6 +59,9 @@
            throw new CoolException("ASN单据不能为空!!");
        }
        List<PoItemsDto> items = purchaseMapper.poList(asnIds);
        if (items.isEmpty()) {
            throw new CoolException("物料所属采购单据不存在!!");
        }
        if (reportMsgService.reportInspectNotify(items)) {
            return true;
        } else {
@@ -74,7 +77,6 @@
        List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
                .like(!Objects.isNull(params.get("maktx")), AsnOrderItem::getMaktx, params.get("maktx"))
                .eq(!Objects.isNull(params.get("matnrCode")), AsnOrderItem::getMatnrCode, params.get("matnrCode")));
        if (orderItems.isEmpty()) {
            return new ArrayList<>();
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/IsptHistoriesServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.vincent.rsf.server.manager.service.impl;
import com.vincent.rsf.server.manager.mapper.IsptHistoriesMapper;
import com.vincent.rsf.server.manager.entity.IsptHistories;
import com.vincent.rsf.server.manager.service.IsptHistoriesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("isptHistoriesService")
public class IsptHistoriesServiceImpl extends ServiceImpl<IsptHistoriesMapper, IsptHistories> implements IsptHistoriesService {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -1,7 +1,6 @@
package com.vincent.rsf.server.manager.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.server.api.entity.enums.OrderType;
import com.vincent.rsf.server.api.entity.enums.TaskStsType;
import com.vincent.rsf.framework.common.R;
@@ -13,7 +12,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.manager.utils.LocManageUtil;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.enums.LocStsType;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -30,22 +28,23 @@
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private TaskItemService taskItemService;
    @Autowired
    private WaitPakinItemService waitPakinItemService;
    /**
     * @param
     * @param loginUserId
     * @return
     * @author Ryan
     * @description 生成任务列表
     * @param
     * @return
     * @time 2025/3/29 15:59
     */
    @Override
    public R generateTasks(List<WaitPakin> waitPakin) {
    public R generateTasks(List<WaitPakin> waitPakin, Long loginUserId) {
        if (Objects.isNull(waitPakin) || waitPakin.isEmpty()) {
            throw new CoolException("参数不能为空!!");
        }
@@ -67,6 +66,8 @@
                    .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
                    .setTargLoc(LocManageUtil.getTargetLoc())
                    .setBarcode(pakin.getBarcode())
                    .setCreateBy(loginUserId)
                    .setUpdateBy(loginUserId)
                    .setTargSite(LocManageUtil.getTargetSite());
            if (!this.save(task)) {
@@ -82,7 +83,9 @@
                BeanUtils.copyProperties(item, taskItem);
                taskItem.setTaskId(task.getId())
                        .setOrderType(OrderType.ORDER_RECEIPT.type)
                        .setSourceCode(item.getAsnCode())
                        .setSource(item.getId())
                        .setCreateBy(loginUserId)
                        .setUpdateBy(loginUserId)
                        .setOrderId(item.getAsnId())
                        .setOrderItemId(item.getAsnItemId());
                taskItems.add(taskItem);
@@ -90,6 +93,9 @@
            if (!taskItemService.saveBatch(taskItems)) {
                throw new CoolException("任务明细保存失败!!");
            }
        });
        //TODO 任务生成完成需修改任务ASN订单状态为执行中,组拖删除需判断是否有子任务在执行
rsf-server/src/main/resources/mapper/manager/IsptHistoriesMapper.xml
File was renamed from rsf-server/src/main/resources/mapper/test/LocAreaMatMapper.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vincent.rsf.server.test.mapper.LocAreaMatMapper">
<mapper namespace="com.vincent.rsf.server.manager.mapper.IsptHistoriesMapper">
</mapper>
rsf-server/src/main/resources/mapper/test/LocAreaMatRelaMapper.xml
File was deleted
rsf-server/src/main/resources/mapper/test/LocMapper.xml
File was deleted
rsf-server/src/main/resources/mapper/test/QlyInspectMapper.xml
File was deleted