guoyujie
2025-08-11 a12834e87a110fbf1414e24eb574f2e87b29e03c
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -10,20 +10,16 @@
import com.example.erp.common.Constants;
import com.example.erp.dto.pp.OrderNumberTransferDTO;
import com.example.erp.entity.pp.*;
import com.example.erp.entity.sd.Order;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.sd.OrderProcessDetail;
import com.example.erp.entity.sd.*;
import com.example.erp.entity.userInfo.Log;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.exception.ServiceException;
import com.example.erp.mapper.mm.FinishedOperateLogMapper;
import com.example.erp.mapper.pp.*;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.mapper.sd.OrderDetailMapper;
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.sd.*;
import com.example.erp.mapper.userInfo.LogMapper;
import com.example.erp.service.mm.FinishedGoodsInventoryService;
import com.example.erp.service.sd.OrderProcessDetailService;
import com.example.erp.service.userInfo.LogService;
import com.example.erp.service.userInfo.SysErrorService;
@@ -71,6 +67,8 @@
    private final RestTemplate restTemplate;
    private final PatchLogMapper patchLogMapper;
    private final ReworkMapper reworkMapper;
    private final BasicDataMapper basicDataMapper;
    private final FinishedGoodsInventoryService finishedGoodsInventoryService;
    /*public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) {
@@ -218,6 +216,8 @@
    public Map<String, Object> SelectProcessSv(String userId) {
        Map<String, Object> map = new HashMap<>();
        String process = reportingWorkMapper.selectUserProcess(userId);
        //工序列表
        List<Map<String, Object>> processNameList = flowCardMapper.getProcessNameList();
        if (process==null) {
            map.put("process", reportingWorkMapper.SelectProcessMp());
        }
@@ -230,7 +230,7 @@
                map.put("process",reportingWorkMapper.getSelectProcessDuoqu() );
            }
        }
        map.put("processNameList", processNameList);
        return map;
    }
@@ -251,6 +251,8 @@
        reportingWork.setReportingWorkId(reportingWorkId);
        String[] processIdStr = reportingWork.getProcessId().split("/");
        reportingWork.setProcessId(processIdStr[0]);
        reportingWork.setThisWornQuantity(0);
        reportingWork.setThisCompletedQuantity(0);
        int reviewState = (int) reportingWorkJson.get("type");
        if (reviewState == 1) {//审核通过
@@ -266,15 +268,23 @@
        //是否线补 1现补 0未现补
        int isPatch = (reportingWorkJson.get("isPatch") != null) ? (int) reportingWorkJson.get("isPatch") : 0;
        reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(processIdStr[0],processIdStr[1],reportingWork.getThisProcess()));
        //主表插入
        reportingWorkMapper.insert(reportingWork);
        //副表循环插入,并且插入次破信息表。再根据次破信息修改订单玻璃流程表的完工数量与刺破数量
        final Integer[] maxTechnologyNumber = {0,0};
        reportingWorkDetails.forEach(reportingWorkDetail -> {
            //合片数量汇总减少
            if(Integer.parseInt(reportingWorkDetail.getTechnologyNumber()) > maxTechnologyNumber[0]){
                maxTechnologyNumber[0] = Integer.valueOf(reportingWorkDetail.getTechnologyNumber());
                maxTechnologyNumber[1]+=1;
            }
            reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity() + reportingWorkDetail.getCompletedQuantity());
            reportingWork.setThisWornQuantity(reportingWork.getThisWornQuantity() + reportingWorkDetail.getBreakageQuantity());
            int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
            reportingWorkDetail.setReportingWorkId(reportingWorkId);
            List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
            reportingWork.setNextProcess(orderProcessDetailMapper.selectNextProcess(processIdStr[0],processIdStr[1],reportingWork.getThisProcess(),reportingWorkDetail.getOrderNumber()));
            //次破明细表插入数据
            if (damageDetails != null && !damageDetails.isEmpty()) {
                damageDetails.forEach(damageDetail -> {
@@ -363,7 +373,7 @@
            }
            //更新流程卡表的报工数量
            if (Objects.equals(reportingWork.getNextProcess(), "")|| Objects.equals(reportingWork.getNextProcess(), null)) {
            if (reportingWork.getNextProcess() == null || reportingWork.getNextProcess().isEmpty()) {
                LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper =
                        new LambdaUpdateWrapper<>();
                flowCardLambdaUpdateWrapper
@@ -376,6 +386,13 @@
        });
        //获取报工工序是否为复合工程
        reportingWork.setThisCompletedQuantity(reportingWork.getThisCompletedQuantity()/maxTechnologyNumber[1]);
        reportingWorkMapper.update(reportingWork, new LambdaUpdateWrapper<ReportingWork>()
                .eq(ReportingWork::getId, reportingWork.getId()));
        //保存日志
        Log log = new Log();
@@ -401,7 +418,7 @@
        //获取报工工序是否为复合工程
        String laminating = reportingWorkMapper.getProcessLaminating(thisProcess);
//合片工序
if (laminating.equals("laminating")){
if (laminating.indexOf("step")!=-1){
    LambdaUpdateWrapper
                <ReportingWork> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper
@@ -429,6 +446,7 @@
                orderMapper.selectOne(new LambdaQueryWrapper<Order>()
                        .eq(Order::getOrderId, reportingWork.getOrderId())));
        reportingWork.setFlowCard(new FlowCard());
@@ -567,15 +585,29 @@
    }
    //报工管理查询
    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, java.sql.Date selectTime1, java.sql.Date selectTime2, String orderId, ReportingWork reportingWork) {
    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, List<String> selectDate, String orderId, ReportingWork reportingWork) {
        Integer offset = (pageNum - 1) * pageSize;
        if ("null".equals(orderId)) {
            orderId = "";
        }
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(3).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
        map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
        map.put("footSum" ,reportingWorkMapper.getFootSum(selectTime1, selectTime2, orderId,reportingWork));
        map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, startDate, endDate, orderId, reportingWork));
       // map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, startDate, endDate, orderId, reportingWork));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
@@ -595,6 +627,28 @@
            if (transferState !=3){
                //判断是否有补片返工数据
                if (countStates==0){
                    //当下工序未审核则删除本工序
                    ReportingWork reportingWork = reportingWorkMapper.selectOne(new LambdaQueryWrapper<ReportingWork>()
                            .eq(ReportingWork::getReportingWorkId, reportingWorkId));
                    //保存日志
                    Log log = new Log();
                    log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
                    log.setFunction("deleteWork报工删除");
                    log.setOperatorId(userId);
                    log.setOperator(userName);
                    if(reportingWork.getReviewedState()==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);
                        logService.saveLog(log);
                        return true;
                    }
                    //判断是否是入库工序
                    if (lastProcess.equals(thisProcess)) {//是入库工序
                        //查询该流程卡数量、可入库数量、已入库数量
@@ -621,12 +675,6 @@
                                }
                                //删除报工,将审核状态改为-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 {
@@ -642,15 +690,11 @@
                                //更新报工流程表数据
                                reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                            }
                            System.out.println(1);
                            //删除报工,将审核状态改为-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 {
@@ -664,8 +708,6 @@
            } else {
                return false;
            }
        } else {
            return false;
        }
@@ -681,6 +723,12 @@
        map.put("data", reportingWorkMapper.selectQualityTestingMp(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork));
        map.put("total", reportingWorkMapper.getQualityPageTotal(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork));
        return map;
    }
    public Map<String, Object>  qualityReviewSearchSv() {
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportingWorkMapper.qualityReviewSearchMp());
        return map;
    }
@@ -1156,8 +1204,56 @@
        date.add(startDate);
        date.add(endDate);
        Map<String, Object> result = new HashMap<>();
        result.put("data",orderProcessDetailMapper.selectShiftQuantitySv(creatorId, startDate, endDate));
        BasicData basicData = basicDataMapper
                .selectOne(new QueryWrapper<BasicData>()
                        .eq("basic_name", reportingWork.get("process"))
                        .last("limit 1")
                );
        result.put("data",orderProcessDetailMapper.selectShiftQuantitySv(creatorId, startDate, endDate,basicData==null?null:basicData.getNickname()));
        result.put("date",date);
        return result;
    }
}
    public Map<String, Object> selectReportingWorkRecordByPhoneSv(Map<String,Object> reportingWork) {
        List<LocalDateTime> dateList = (List<LocalDateTime>) reportingWork.get("searchDate");
        String startDate = LocalDate.now().minusDays(14).toString();
        String endDate = LocalDate.now().toString();
        if (dateList.get(0)!=null){
            startDate = String.valueOf(dateList.get(0));
        }
        if (dateList.get(1)!=null){
            endDate = String.valueOf(dateList.get(1));
        }
        List<String> date = new ArrayList<>();
        date.add(startDate);
        date.add(endDate);
        Map<String, Object> result = new HashMap<>();
        List<ReportingWork> reportingWorkList = reportingWorkMapper.selectList(
                new QueryWrapper<ReportingWork>().nested(
                                reportingWork.get("process")!=null,
                                wrapper-> wrapper.eq("creator_id",reportingWork.get("userId"))//当工序为空时,查询所有报工信息
                        )
                        .gt("reviewed_state",-1)
                        .between("date(reporting_work_time)",startDate,endDate)
                        .orderByDesc("id"));
        reportingWorkList.forEach(reportingWork1 -> {
            String Plies =  reportingWorkDetailMapper.getGlassPliesCount(reportingWork1.getReportingWorkId());
            reportingWork1.setProcessId(reportingWork1.getProcessId()+'/'+Plies);
        });
        result.put("data",reportingWorkList);
        result.put("date",date);
         return result;
    }
      public List<BasicDataProduce> selectEquipmentByProcessSv(String process) {
             return reportingWorkMapper.SelectWorkBasicDeviceMp(process);
          }
      public String saveWorkStorage(Map<String, Object> object) {
              //List<Map<String, Object>> flowCard = reportingWorkMapper.getStorageData();
              //finishedGoodsInventoryService.addSelectWarehousing(object);
              return null;
          }}