jiangping
2025-04-17 9b00b80c926b3d1b38b7ef9b682ee097345dde3f
server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -14,6 +14,7 @@
import com.doumee.core.utils.qiyeweixin.model.request.QywxTextCardMsgRequest;
import com.doumee.dao.business.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.WorkorderIndexNumVO;
import com.doumee.dao.web.dto.*;
import com.doumee.dao.web.vo.WorkOrderDataVO;
import com.doumee.service.business.WorkorderService;
@@ -168,18 +169,19 @@
                message = Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)?"同事":"供应商";
            }
            message = message + "-" + workorder.getMemberNames() + " " + DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") + workorder.getLocationName() + categoryName;
            textCard.setDescription(" <div class=\"normal\">"+message+"</div>");
            textCard.setDescription("<div class=\"normal\">"+message+"</div>");
        }else{
            textCard.setTitle(Constants.equalsInteger(workorder.getType(),Constants.ONE)?"【DCA上报】":"【跌绊滑风险上报】");
            if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){
                message = message + " <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":"任务已处理")) +"</div>";
                message = message + " <div class=\"normal\">"+  DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") +"/"+ workorder.getLocationName() +"/"+  categoryName+"</div>";
            }else{
                message = message + " <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":((Constants.equalsInteger(contentType,Constants.TWO)?"抄送给你":"已处理一项")))) +"</div>";
                message = message + " <div class=\"normal\">观察主题"+  categoryName +"</div>";
                message = message + " <div class=\"normal\">符合:"+ workorder.getDcaYesNum()  +" 不符合:"+workorder.getDcaNoNum()+"</div>";
                message = message + "  <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":((Constants.equalsInteger(contentType,Constants.TWO)?"抄送给你":"已处理一项")))) +"</div>";
                message = message + "  <div class=\"normal\">观察主题"+  categoryName +"</div>";
                message = message + "  <div class=\"normal\">符合:"+ workorder.getDcaYesNum()  +" 不符合:"+workorder.getDcaNoNum()+"</div>";
                if(Constants.equalsInteger(contentType,Constants.TWO)){
                    message = message + " <div class=\"normal\">说明:"+ csInfo +"</div>";
                    message = message + "  <div class=\"normal\">说明:"+ csInfo +"</div>";
                }
            }
            textCard.setDescription(message);
@@ -212,8 +214,8 @@
                multifile.setObjId(workorder.getId());
                multifile.setCreateDate(new Date());
                multifile.setObjType(Constants.multiFileType.upload);
                multifileMapper.insert(multifile);
            }
            multifileMapper.insert(multifileList);
        }
    }
@@ -1187,13 +1189,15 @@
     * @throws Exception
     */
    @Override
    public List<WorkOrderDataVO> getWorkOrderData(OrderDataDTO orderDataDTO) throws Exception {
    public List<WorkOrderDataVO> getWorkOrderData(OrderDataDTO orderDataDTO)  {
        if (Objects.isNull(orderDataDTO.getQueryType())||Objects.isNull(orderDataDTO.getOrderType())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String year = DateUtil.getNowYear();
        Integer nowMonth = DateUtil.getNowMonth();
        Integer quarter  = (nowMonth - 1) / 3 + 1;
//        Integer nowMonth = DateUtil.getNowMonth();
        Integer nowMonth = 12;
//        Integer quarter  = (nowMonth - 1) / 3 + 1;
        Integer quarter  =4;
        List<WorkOrderDataVO> workOrderDataVOList = new ArrayList<>();
        //查询今年所有的数据
        List<Workorder> workorderList = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
@@ -1208,17 +1212,25 @@
        if(Constants.equalsInteger(orderDataDTO.getQueryType(),Constants.ZERO)){
            for (int i = 1 ; i <= nowMonth; i++) {
                WorkOrderDataVO workOrderDataVO = new WorkOrderDataVO();
                String monthDay = year + "-" + org.apache.commons.lang3.StringUtils.leftPad(nowMonth.toString(),2,"0");
                String monthDay = year + "-" + org.apache.commons.lang3.StringUtils.leftPad(i+"",2,"0");
                List<Workorder> dataList = workorderList.stream().filter(j->DateUtil.formatDate(j.getCreateDate(),"yyyy-MM").equals(monthDay))
                        .collect(Collectors.toList());
                workOrderDataVO.setDateStr(monthDay);
                workOrderDataVO.setDateStr(i+"月");
                workOrderDataVO.setGcsTotal(Constants.ZERO);
                workOrderDataVO.setWtsTotal(Constants.ZERO);
                workOrderDataVO.setSheTotal(Constants.ZERO);
                workOrderDataVO.setDcaNoTotal(Constants.ZERO);
                workOrderDataVO.setDcaYesTotal(Constants.ZERO);
                workOrderDataVO.setUnCloseTotal(Constants.ZERO);
                workOrderDataVO.setTotal(Constants.ZERO);
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(dataList)){
                    workOrderDataVO.setTotal(dataList.size());
                    for(Workorder e :dataList){
                        if(Constants.equalsInteger(e.getType(),Constants.ONE)){
                            workOrderDataVO.setDcaYesTotal(workOrderDataVO.getDcaYesTotal()+Constants.formatIntegerNum(e.getDcaYesNum()));//DCA符合项
                            workOrderDataVO.setDcaNoTotal(workOrderDataVO.getDcaNoTotal()+Constants.formatIntegerNum(e.getDcaNoNum()));//DCA不符合项
                        }
                    }
                    workOrderDataVO.setGcsTotal(dataList.stream().filter(j->Constants.equalsInteger(j.getStatus(),Constants.WorkOrderStatus.close.getKey())).collect(Collectors.toList()).size());
                    workOrderDataVO.setSheTotal(dataList.stream().filter(j->Constants.equalsInteger(j.getStatus(),Constants.WorkOrderStatus.sheClose.getKey())).collect(Collectors.toList()).size());
                    workOrderDataVO.setWtsTotal(dataList.stream().filter(j->Constants.equalsInteger(j.getStatus(),Constants.WorkOrderStatus.wtsClose.getKey())).collect(Collectors.toList()).size());
@@ -1258,11 +1270,94 @@
                    workOrderDataVO.setUnCloseTotal(workOrderDataVO.getTotal() - workOrderDataVO.getSheTotal() - workOrderDataVO.getWtsTotal() - workOrderDataVO.getGcsTotal());
                }
                workOrderDataVOList.add(workOrderDataVO);
            }
        }
        return workOrderDataVOList;
    }
    /**
     * SHE / 跌绊滑报表
     * @return
     * @throws Exception
     */
    @Override
    public WorkorderIndexNumVO getIndexData(Workorder workorder) {
        WorkorderIndexNumVO model = new WorkorderIndexNumVO();
        List<WorkOrderDataVO> workOrderDataVOList = new ArrayList<>();
        //查询今年所有的数据
        List<Workorder> list = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
                        .select("type,count(id) as num")
                        .eq(Workorder::getIsdeleted,Constants.ZERO)
                        .groupBy(Workorder::getType  ));
        if(list !=null){
            for(Workorder w : list){
                if(Constants.equalsInteger(w.getType(),Constants.ZERO)){
                    //SHE
                    model.setSheNum(Constants.formatLongNum(w.getNum()));
                }else  if(Constants.equalsInteger(w.getType(),Constants.ONE)){
                    //DCA提交数
                    model.setDcaNum(Constants.formatLongNum(w.getNum()));
                }else   if(Constants.equalsInteger(w.getType(),Constants.TWO)){
                    //DCA子工单
                    model.setDcaChildNum(Constants.formatLongNum(w.getNum()));
                }else   if(Constants.equalsInteger(w.getType(),Constants.THREE)){
                    //跌绊滑
                    model.setDbhNum(Constants.formatLongNum(w.getNum()));
                }
            }
        }
        List<Workorder> todays = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
                        .select("type,count(id) as num")
                        .eq(Workorder::getIsdeleted,Constants.ZERO)
                        .apply("to_days(create_date)=to_days(now())")
                        .groupBy(Workorder::getType  ));
        if(todays !=null){
            for(Workorder w : todays){
                if(Constants.equalsInteger(w.getType(),Constants.ZERO)){
                    //SHE
                    model.setTodaySheNum(Constants.formatLongNum(w.getNum()));
                }else  if(Constants.equalsInteger(w.getType(),Constants.ONE)){
                    //DCA提交数
                    model.setTodayDcaNum(Constants.formatLongNum(w.getNum()));
                }else   if(Constants.equalsInteger(w.getType(),Constants.TWO)){
                    //DCA子工单
                    model.setTodayDcaChildNum(Constants.formatLongNum(w.getNum()));
                }else   if(Constants.equalsInteger(w.getType(),Constants.THREE)){
                    //跌绊滑
                    model.setTodayDbhNum(Constants.formatLongNum(w.getNum()));
                }
            }
        }
        List<Workorder> yeslist = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
                .select("type,count(id) as num")
                .eq(Workorder::getIsdeleted,Constants.ZERO)
                .in(Workorder::getStatus,Constants.THREE,Constants.FOUR,Constants.FIVE)
                .in(Workorder::getType,Constants.THREE,Constants.TWO)
                .groupBy(Workorder::getType  ));
        if(yeslist !=null){
            for(Workorder w : yeslist){
                if(Constants.equalsInteger(w.getType(),Constants.TWO)){
                    //DCA子工单已解决和未解决
                    model.setDcaChildYesNum(Constants.formatLongNum(w.getNum()));
                    model.setDcaChildNoNum(Constants.formatLongNum(model.getDcaChildNum()) -model.getDcaChildYesNum());
                }else   if(Constants.equalsInteger(w.getType(),Constants.THREE)){
                    //跌绊滑已解决和未解决
                    model.setDbhYesNum(Constants.formatLongNum(w.getNum()));
                    model.setDbhNoNum(Constants.formatLongNum(model.getDbhNum()) -model.getDbhYesNum());
                }
            }
        }
         Workorder  dcaList = workorderMapper.selectJoinOne(Workorder.class,new MPJLambdaWrapper<Workorder>()
                .select("sum(dca_yes_num) as dcaYesNum,sum(dca_no_num) as dcaNoNum")
                .eq(Workorder::getIsdeleted,Constants.ZERO)
                .eq(Workorder::getType,Constants.ONE) );
        if(dcaList !=null){
            //DCA符合项和不符合项统计
            model.setDcaYesNum((long)Constants.formatIntegerNum(dcaList.getDcaYesNum()));
            model.setDcaNoNum((long)Constants.formatIntegerNum(dcaList.getDcaNoNum()));
        }
        return model;
    }