zjj
3 天以前 0316d7fdfbd248bbccdc023cda44aef9994b0109
#盘点pda
2个文件已修改
4个文件已添加
213 ■■■■■ 已修改文件
rsf-admin/src/page/orders/asnOrder/POItemModal.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/SaveCheckDiffParams.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/POItemModal.jsx
@@ -345,7 +345,7 @@
                flex: 1,
                editable: true
            }))
            setColumns([...columns, ...cols, action])
            setColumns([...columns, ...cols])
        } else {
            notify(msg);
        }
@@ -396,7 +396,7 @@
                }}
                pageSizeOptions={[15, 25, 50, 100]}
                editMode="row"
                checkboxSelection
                onRowSelectionModelChange={handleSelectionChange}
                selectionModel={selectedRows}
                sx={{
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/SaveCheckDiffParams.java
New file
@@ -0,0 +1,18 @@
package com.vincent.rsf.server.api.controller.params;
import com.vincent.rsf.server.manager.entity.CheckDiffItem;
import com.vincent.rsf.server.manager.entity.TaskItem;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors
@ApiModel(value = "SaveCheckDiffParams", description = "保存盘点数据参数")
public class SaveCheckDiffParams {
    private String checkId;
    private String container;
    private List<CheckDiffItem> checkDiffItems;
}
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaCheckOrderController.java
New file
@@ -0,0 +1,54 @@
package com.vincent.rsf.server.api.controller.pda;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.api.controller.params.SaveCheckDiffParams;
import com.vincent.rsf.server.api.service.PdaCheckOrderService;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/pda")
@Api(tags = "pda盘点")
public class PdaCheckOrderController extends BaseController {
    @Autowired
    private PdaCheckOrderService pdaCheckOrderService;
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/getCheckList")
    @ApiOperation("查询盘点差异单列表")
    public R getCheckList(@RequestBody Map<String, String> map) {
        return pdaCheckOrderService.getCheckList(map.get("code"));
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/getCheckTaskItemList")
    @ApiOperation("查询盘点任务列表")
    public R getCheckTaskItemList(@RequestBody Map<String, String> map) {
        return pdaCheckOrderService.getCheckTaskItemList(map.get("barcode"),map.get("checkCode"));
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @GetMapping("/getCheckDiffReasonList")
    @ApiOperation("查询盘点差异原因")
    public R getCheckDiffReasonList() {
        return pdaCheckOrderService.getCheckDiffReasonList();
    }
    @PreAuthorize("hasAuthority('manager:task:list')")
    @PostMapping("/saveCheckDiff")
    @ApiOperation("保存盘点数据")
    public R saveCheckDiff(@RequestBody SaveCheckDiffParams saveCheckDiffParams) {
        return pdaCheckOrderService.saveCheckDiff(saveCheckDiffParams,getLoginUserId());
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaCheckOrderService.java
New file
@@ -0,0 +1,14 @@
package com.vincent.rsf.server.api.service;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.api.controller.params.SaveCheckDiffParams;
public interface PdaCheckOrderService {
    R getCheckList(String code);
    R getCheckTaskItemList(String barcode,String checkCode);
    R getCheckDiffReasonList();
    R saveCheckDiff(SaveCheckDiffParams saveCheckDiffParams,Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
New file
@@ -0,0 +1,121 @@
package com.vincent.rsf.server.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.SaveCheckDiffParams;
import com.vincent.rsf.server.api.service.PdaCheckOrderService;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.CheckDiffExceStatus;
import com.vincent.rsf.server.manager.enums.TaskStsType;
import com.vincent.rsf.server.manager.service.*;
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 com.vincent.rsf.server.system.service.DictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
public class PdaCheckOrderServiceImpl implements PdaCheckOrderService {
    @Autowired
    private CheckDiffService checkDiffService;
    @Autowired
    private CheckDiffItemService checkDiffItemService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private TaskItemService taskItemService;
    @Autowired
    private DictTypeService dictTypeService;
    @Autowired
    private DictDataService dictDataService;
    @Override
    public R getCheckList(String code) {
        LambdaQueryWrapper<CheckDiff> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(!Cools.isEmpty(code),CheckDiff::getOrderCode,code);
        List<CheckDiff> waveList = checkDiffService.list(lambdaQueryWrapper);
        return R.ok(waveList);
    }
    @Override
    public R getCheckTaskItemList(String barcode,String checkCode) {
        List<CheckDiffItem> checkDiffItems = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>()
                .eq(CheckDiffItem::getBarcode, barcode)
                .eq(CheckDiffItem::getOrderCode, checkCode)
        );
        if (checkDiffItems.isEmpty()){
            throw new CoolException("此条码不在当前盘点单中");
        }
        LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(Task::getBarcode, barcode);
        Task task = taskService.getOne(lambdaQueryWrapper);
        if (null == task){
            throw new CoolException("未找到容器号对应任务");
        }
        if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){
            return R.error("任务状态不是等待确认");
        }
        return R.ok(checkDiffItems);
    }
    @Override
    public R getCheckDiffReasonList() {
        List<DictData> list = dictDataService.list(new LambdaQueryWrapper<DictData>()
                .eq(DictData::getDictTypeCode, DictTypeCode.SYS_CHECK_DIFF_REASON)
        );
        return R.ok(list);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R saveCheckDiff(SaveCheckDiffParams params,Long loginUserId) {
        CheckDiff checkDiff = checkDiffService.getById(params.getCheckId());
        if (null == checkDiff){
            return R.error("未找到盘点差异单");
        }
        if (checkDiff.getExceStatus().equals(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val)){
            return R.error("该盘点单已完成");
        }
        for (CheckDiffItem checkDiffItem: params.getCheckDiffItems()){
            CheckDiffItem diffItem = checkDiffItemService.getById(checkDiffItem.getId());
            if (null == diffItem){
                return R.error("数据错误,未找到差异单明细");
            }
            if(!checkDiffItemService.updateById(checkDiffItem)){
                throw new CoolException("更新差异单明细失败");
            }
            checkDiff.setCheckQty(checkDiff.getCheckQty()+checkDiffItem.getCheckQty());
        }
        checkDiff.setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_HOLD.val);
        if(!checkDiffService.updateById(checkDiff)){
            throw new CoolException("更新差异单失败");
        }
        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getContainer()));
        if (null == task){
            throw new CoolException("数据错误,未找到容器码对应盘点任务");
        }
        task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
        task.setUpdateBy(loginUserId);
        task.setUpdateTime(new Date());
        if (!taskService.updateById(task)){
            throw new CoolException("更新任务失败");
        }
        return R.ok("盘点完成");
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -87,4 +87,6 @@
    public final static String SYS_CHECK_EXCE_STATUS =  "sys_check_exce_status";
    /**盘点差异单执行状态*/
    public final static String SYS_CHECK_DIFF_EXCE_STATUS =  "sys_check_diff_exce_status";
    public final static String SYS_CHECK_DIFF_REASON =  "sys_check_diff_reason";
}