whycxzp
7 天以前 db0054d19f04a16db90af2dc77a8db8c9d743d0e
src/main/java/com/whyc/service/WorkflowMainService.java
@@ -11,6 +11,7 @@
import com.whyc.dto.Response;
import com.whyc.mapper.WorkflowMainMapper;
import com.whyc.pojo.db_user.User;
import com.whyc.pojo.web_site.WorkflowDevice;
import com.whyc.pojo.web_site.WorkflowLink;
import com.whyc.pojo.web_site.WorkflowMain;
import com.whyc.util.ActionUtil;
@@ -34,6 +35,9 @@
    @Autowired(required = false)
    private WorkflowLinkService linkService;
    @Autowired
    private WorkflowDeviceService deviceService;
    /**
@@ -107,7 +111,7 @@
        return null;
    }
    public void updateStatus(WorkflowMain main) {
    public void updateById(WorkflowMain main) {
        mapper.updateById(main);
    }
@@ -235,6 +239,8 @@
    /**
     * 通用提交方法,提交给角色-角色层
     * 如果related_id不为空,则需要特殊处理. 证明会影响到关联单据
     *
     * 涉及到新的问题需要解决,现场故障后,设备维修申请 或 报废申请 是多个,并存入工单设备表中. 并不只是单纯的数量. TODO ?自动化处理怎么更新
     */
    @Transactional
@@ -244,8 +250,8 @@
        Date now = new Date();
        WorkflowMain mainRelated = getById(main.getRelatedId());
        if(main.getRelatedId() != null) {
            if (main.getQuantity() > mainRelated.getQuantity()) {
                return new Response().setII(1, "入库数量不能大于维修申请关联单据的数量");
            if (main.getQuantity() > mainRelated.getQuantityUnprocessed()) {
                return new Response().setII(1, "入库数量不能大于维修申请关联单据的未处理数量");
            }
        }
        //主表插入
@@ -267,7 +273,17 @@
        main.setBeginTime(now);
        main.setStatus(mainStatus);
        main.setProcessStage(process.getStage());
        if(main.getType() == WorkflowTypeEnum.DEVICE_REPAIR.getType().intValue()){ //维修申请单,需填入
            main.setQuantityUnprocessed(main.getQuantity());
        }
        add(main);
        //主表关联的物料插入
        List<WorkflowDevice> deviceList = main.getDeviceList();
        for (WorkflowDevice device : deviceList) {
            device.setMainId(main.getId());
        }
        deviceService.addBatch(deviceList);
        //内存中去除已插入数据库的单号
        ServletContext application = ActionUtil.getApplication();
        List<String> orderIdList = (List<String>) application.getAttribute("orderIdList");
@@ -300,7 +316,7 @@
    private void checkRelatedAndDone(WorkflowMain main, Date now, WorkflowMain mainRelated, User user) {
        if(main.getRelatedId() != null){
            //判断是申请的入库,还是报废.
            if (main.getQuantity() < mainRelated.getQuantity()){ //说明需要自动生成入库或者报废单据
            if (main.getQuantity() < mainRelated.getQuantityUnprocessed()){ //说明需要自动生成入库或者报废单据
                //需要自动生成报废的申请
                WorkflowMain mainAuto = new WorkflowMain();
                WorkflowTypeEnum typeEnumAuto;
@@ -310,9 +326,10 @@
                mainAuto.setCreateUserId(user.getId());
                mainAuto.setCreateTime(now);
                mainAuto.setBeginTime(now);
                mainAuto.setQuantity(mainRelated.getQuantity()- main.getQuantity());
                mainAuto.setQuantity(mainRelated.getQuantityUnprocessed()- main.getQuantity());
                mainAuto.setProcessStage(processAuto.getStage());
                mainAuto.setStatus(statusAuto);
                mainAuto.setRelatedId(main.getRelatedId());
                if(main.getType() == WorkflowTypeEnum.DEVICE_IN.getType().intValue()) { //申请的入库
                    mainAuto.setTaskDesc("提交了维修后的入库申请,系统自动生成剩余数量的报废申请");
@@ -351,7 +368,8 @@
            }else{
                relatedMain.setEndReason("用户提交维修申请后的报废申请,维修流程结束");
            }
            updateStatus(relatedMain);
            relatedMain.setQuantityUnprocessed(0);
            updateById(relatedMain);
        }
    }
@@ -401,4 +419,14 @@
        update.set("process_level",processLevel).eq("id",mainId);
        mapper.update((WorkflowMain) ActionUtil.objeNull,update);
    }
    public void resetRepairStatus(Integer relatedId, Integer quantity) {
        UpdateWrapper<WorkflowMain> update = Wrappers.update();
        update.set("status",WorkflowEnum.MAIN_STATUS_WAIT_FOR_DEALING.getValue())
                .set("end_time",null)
                .set("end_reason",null)
                .set("quantity_unprocessed",quantity)
                .eq("id",relatedId);
        mapper.update((WorkflowMain) ActionUtil.objeNull,update);
    }
}