guoyuji
2024-08-01 ac1f5097b08b9db6531e8dfeff12c5caf251d98e
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -12,12 +12,17 @@
import com.example.erp.entity.pp.ReportingWorkDetail;
import com.example.erp.entity.sd.Order;
import com.example.erp.entity.sd.OrderProcessDetail;
import com.example.erp.entity.userInfo.Log;
import com.example.erp.exception.ServiceException;
import com.example.erp.mapper.pp.*;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.mapper.sd.OrderGlassDetailMapper;
import com.example.erp.mapper.sd.OrderMapper;
import com.example.erp.mapper.sd.OrderProcessDetailMapper;
import com.example.erp.mapper.userInfo.LogMapper;
import com.example.erp.service.sd.OrderProcessDetailService;
import com.example.erp.service.userInfo.LogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -48,8 +53,14 @@
    final
    OrderProcessDetailService orderProcessDetailService;
    final
    LogService logService;
    public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper) {
    final LogMapper logMapper;
    private final OrderGlassDetailMapper orderGlassDetailMapper;
    public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper) {
        this.reportingWorkMapper = reportingWorkMapper;
        this.basicDateProduceMapper = basicDateProduceMapper;
        this.damageDetailsMapper = damageDetailsMapper;
@@ -58,6 +69,9 @@
        this.orderProcessDetailService = orderProcessDetailService;
        this.orderMapper = orderMapper;
        this.flowCardMapper = flowCardMapper;
        this.logService = logService;
        this.logMapper = logMapper;
        this.orderGlassDetailMapper = orderGlassDetailMapper;
    }
    public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process) {
@@ -121,7 +135,23 @@
            map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr, technologyStr, process));
        } else {
            //不是第一道工序,查询报工数据
            map.put("Detail", reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process));
            List<Map<String,String>>  details = reportingWorkMapper.SelectReworlDetailMp(processIdStr, technologyStr, process);
            if(process.equals("中空")){
                String orderId = processIdStr.substring(0,10);
                details.forEach( detail -> {
                    Integer glassId = orderGlassDetailMapper.
                                                getMinIdByGroup(orderId,
                                                    String.valueOf(detail.get("order_number")),
                                                    String.valueOf(detail.get("group")));
                    int listGlassId = Integer.parseInt(String.valueOf(detail.get("glassId")));
                    if(listGlassId  !=glassId){
                        detail.put("rowClass","latter");
                    }
                });
            }
            map.put("Detail",details );
        }
        // 第一道工序(流程卡数+补片数量-完工数-次破数-返工未完成数-禁用数量)
@@ -280,6 +310,13 @@
        });
        //保存日志
        Log log = new Log();
        log.setContent(reportingWorkMap.toString());
        log.setFunction("saveReportingWork报工新增");
        log.setOperatorId((String) reportingWorkJson.get("userId"));
        log.setOperator((String) reportingWorkJson.get("userName"));
        logService.saveLog(log);
        return true;
    }
@@ -412,7 +449,7 @@
            //修改包装时修改库存数量
            if (reportingWork.getNextProcess()==null || reportingWork.getNextProcess().isEmpty()){
                //获取该报工修改后的可入库数量
                Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()));
                Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()),reportingWork.getThisProcess());
                //修改流程卡表库存数量
                flowCardMapper.updateInventory(reportingWork.getProcessId(),reportingWorkDetail.getOrderNumber(),reportingWorkDetail.getTechnologyNumber(),inventory);
            }
@@ -427,6 +464,14 @@
        //修改小片流程表数量为报工明细表数量
        //orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "add");
        //保存日志
        Log log = new Log();
        log.setContent(reportingWorkMap.toString());
        log.setFunction("updateReportingWork报工修改");
        log.setOperatorId((String) reportingWorkJson.get("userId"));
        log.setOperator((String) reportingWorkJson.get("userName"));
        logService.saveLog(log);
        return true;
    }
@@ -443,7 +488,7 @@
    }
    //删除报工
    public Boolean deleteWorkSv(String reportingWorkId, String processId, String thisProcess) {
    public Boolean deleteWorkSv(String reportingWorkId, String processId, String thisProcess, String userId, String userName) {
        if (!reportingWorkId.isEmpty() && !processId.isEmpty() && !thisProcess.isEmpty()) {
            //获取当前报工编号下工序
            String nextProcess = reportingWorkMapper.selectNextProcess(reportingWorkId);
@@ -451,54 +496,76 @@
            Integer count = reportingWorkMapper.selectCountByProcessId(processId, nextProcess);
            //获取最后一道工序
            String lastProcess = reportingWorkMapper.selectLastProcess(processId);
            //判断是否是入库工序
            if (lastProcess.equals(thisProcess)) {//是入库工序
                //查询该流程卡数量、可入库数量、已入库数量
                Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
                if (list.get("quantity") == list.get("receiptQuantity")) {
                    return false;
                } else {
                    //转换类型:已入库数量
                    Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
                    //转换类型:可入库数量
                    Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
                    //查询该报工编号本工序完工数量
                    Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
                    //当该工序完工数量小于等于已入库数量时
                    //可入库数量-已入库数量>=报工编号本工序完工数量
                    if (inventoryQuantity - receiptQuantity >= completedQuantity) {
            //获取是否有已补片或返工
            Integer countStates= Integer.valueOf(reportingWorkMapper.getPatchConditionMp(reportingWorkId));
            //判断是否有补片返工数据
            if (countStates==0){
                //判断是否是入库工序
                if (lastProcess.equals(thisProcess)) {//是入库工序
                    //查询该流程卡数量、可入库数量、已入库数量
                    Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
                    if (list.get("quantity") == list.get("receiptQuantity")) {
                        return false;
                    } else {
                        //转换类型:已入库数量
                        Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
                        //转换类型:可入库数量
                        Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
                        //查询该报工编号本工序完工数量
                        Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
                        //当该工序完工数量小于等于已入库数量时
                        //可入库数量-已入库数量>=报工编号本工序完工数量
                        if (inventoryQuantity - receiptQuantity >= completedQuantity) {
                            //查询当前报工编号完工次破数量的数据
                            List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                            for (Map<String, Object> item : workDateList) {
                                //更新流程卡可入库数量
                                reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
                                //更新报工流程表数据
                                reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                            }
                            //删除报工,将审核状态改为-1
                            reportingWorkMapper.deleteWork(reportingWorkId);
                            //保存日志
                            Log log = new Log();
                            log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
                            log.setFunction("deleteWork报工入库删除");
                            log.setOperatorId(userId);
                            log.setOperator(userName);
                            logService.saveLog(log);
                            return true;
                        } else {
                            return false;
                        }
                    }
                } else {//不是入库工序
                    if (count == 0) {
                        //查询当前报工编号完工次破数量的数据
                        List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                        for (Map<String, Object> item : workDateList) {
                            //更新流程卡可入库数量
                            reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
                            //更新报工流程表数据
                            reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                        }
                        //删除报工,将审核状态改为-1
                        reportingWorkMapper.deleteWork(reportingWorkId);
                        //保存日志
                        Log log = new Log();
                        log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
                        log.setFunction("deleteWork报工删除");
                        log.setOperatorId(userId);
                        log.setOperator(userName);
                        logService.saveLog(log);
                        return true;
                    } else {
                        return false;
                    }
                }
            } else {//不是入库工序
                if (count == 0) {
                    //查询当前报工编号完工次破数量的数据
                    List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                    for (Map<String, Object> item : workDateList) {
                        //更新报工流程表数据
                        reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                    }
                    //删除报工,将审核状态改为-1
                    reportingWorkMapper.deleteWork(reportingWorkId);
                    return true;
                } else {
                    return false;
                }
            }
            else {
                return false;
            }
        } else {
            return false;
@@ -536,4 +603,9 @@
        return map;
    }
    public String getPatchConditionSv(String reportingWorkId) {
        String count=reportingWorkMapper.getPatchConditionMp(reportingWorkId);
        return count;
    }
}