|  |  |  | 
|---|
|  |  |  | result.setStartNum(workorderExtMapper.selectCount(param)); | 
|---|
|  |  |  | param.setStatusList(new ArrayList<>()); | 
|---|
|  |  |  | param.getStatusList().add(Constants.WORKORDER_STATUS.done); | 
|---|
|  |  |  | param.getStatusList().add(Constants.WORKORDER_STATUS.producing); | 
|---|
|  |  |  | param.getStatusList().add(Constants.WORKORDER_STATUS.check); | 
|---|
|  |  |  | //进行中数量 | 
|---|
|  |  |  | result.setIngNum(workorderExtMapper.selectCount(param)); | 
|---|
|  |  |  | 
|---|
|  |  |  | tModle.setUrgent(w.getUrgent()); | 
|---|
|  |  |  | tModle.setUpdateTime(w.getUpdateTime()); | 
|---|
|  |  |  | tModle.setRemark(w.getRemark()); | 
|---|
|  |  |  | tModle.setQualifiedNum(0); | 
|---|
|  |  |  | tModle.setUnqualifiedNum(0); | 
|---|
|  |  |  | tModle.setQualifiedNum(w.getQualifiedNum()); | 
|---|
|  |  |  | tModle.setUnqualifiedNum(w.getUnqualifiedNum()); | 
|---|
|  |  |  | tModle.setProUserId(w.getProUserId()); | 
|---|
|  |  |  | tModle.setProUserName(w.getProUserName()); | 
|---|
|  |  |  | tModle.setProUserName(w.getProUserName()); | 
|---|
|  |  |  | tModle.setCreateUser(w.getCreateUser()); | 
|---|
|  |  |  | tModle.setCreateUserName(w.getCreateUserName()); | 
|---|
|  |  |  | if(w.getProUserId()!=null){ | 
|---|
|  |  |  | //查询班组信息 | 
|---|
|  |  |  | QueryCompanyUserExtDTO queryCompanyUserExtDTO = new QueryCompanyUserExtDTO(); | 
|---|
|  |  |  | 
|---|
|  |  |  | //产出日期 | 
|---|
|  |  |  | tModle.setProduceDate(r.getCreateTime()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.equalsInteger(r.getDoneType(),Constants.ZERO)){ | 
|---|
|  |  |  | //                                if(Constants.equalsInteger(r.getDoneType(),Constants.ZERO)){ | 
|---|
|  |  |  | //如果是合格产出 | 
|---|
|  |  |  | tModle.setQualifiedNum(tModle.getQualifiedNum()+Constants.formatBigdecimal(r.getNum()).intValue()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //                                    tModle.setQualifiedNum(tModle.getQualifiedNum()+Constants.formatBigdecimal(r.getNum()).intValue()); | 
|---|
|  |  |  | //                                }else{ | 
|---|
|  |  |  | //如果是不良品 | 
|---|
|  |  |  | tModle.setUnqualifiedNum(tModle.getUnqualifiedNum()+Constants.formatBigdecimal(r.getNum()).intValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                                    tModle.setUnqualifiedNum(tModle.getUnqualifiedNum()+Constants.formatBigdecimal(r.getNum()).intValue()); | 
|---|
|  |  |  | //                                } | 
|---|
|  |  |  | //如果是合格产出 | 
|---|
|  |  |  | tModle.setQualifiedNum(tModle.getQualifiedNum()); | 
|---|
|  |  |  | //如果是不良品 | 
|---|
|  |  |  | tModle.setUnqualifiedNum(tModle.getUnqualifiedNum()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | * @param param | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | //    @Async | 
|---|
|  |  |  | public void statisticNum(Workorder param){ | 
|---|
|  |  |  | if(param.getPlanId()== null){ | 
|---|
|  |  |  | if(param.getId()== null){ | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.create) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.material) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.check) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.done)){ | 
|---|
|  |  |  | //统计已分配未报工数量 | 
|---|
|  |  |  | distributeNoDoneNum += Constants.formatIntegerNum(order.getPlanNum()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.baogong) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing) | 
|---|
|  |  |  | || Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.instock)){ | 
|---|
|  |  |  | doneNum += Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum()); | 
|---|
|  |  |  | int tNum =Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum()); | 
|---|
|  |  |  | 
|---|
|  |  |  | && item.getOmodel()!=null | 
|---|
|  |  |  | && (Constants.equalsInteger(item.getOmodel().getStatus() ,Constants.WORKORDER_STATUS.baogong) | 
|---|
|  |  |  | ||Constants.equalsInteger(item.getOmodel().getStatus() ,Constants.WORKORDER_STATUS.instock))){ | 
|---|
|  |  |  | //如果是产出 | 
|---|
|  |  |  | if(Constants.equalsInteger(item.getDoneType(),Constants.ZERO)){ | 
|---|
|  |  |  | //如果是合格产出,累计数量 | 
|---|
|  |  |  | qulifiedNum += Constants.formatBigdecimal(item.getNum()).intValue(); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //如果是不良产出,累计数量 | 
|---|
|  |  |  | unqulifiedNum += Constants.formatBigdecimal(item.getNum()).intValue(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //如果是合格产出,累计数量 | 
|---|
|  |  |  | qulifiedNum += Constants.formatBigdecimal(BigDecimal.valueOf(item.getQualifiedNum())).intValue(); | 
|---|
|  |  |  | //如果是不良产出,累计数量 | 
|---|
|  |  |  | unqulifiedNum += Constants.formatBigdecimal(BigDecimal.valueOf(item.getUnqualifiedNum())).intValue(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if(!Objects.isNull(plan.getWorkPlansId())){ | 
|---|
|  |  |  | //更新主订单数据信息 | 
|---|
|  |  |  | if(plansMapper.selectCount(new QueryWrapper<Plans>() | 
|---|
|  |  |  | .in("STATUS",0,1,4) | 
|---|
|  |  |  | .in("STATUS",0,1,4,5) | 
|---|
|  |  |  | .eq("DELETED",Constants.ZERO) | 
|---|
|  |  |  | .ne("id",p.getId()) | 
|---|
|  |  |  | .eq("WORK_PLANS_ID",plan.getWorkPlansId()))<=Constants.ZERO){ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | public void statisticNumAsync(Workorder param){ | 
|---|
|  |  |  | if(param.getPlanId()== null){ | 
|---|
|  |  |  | if(param.getId()== null){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Workorder wModel = new Workorder(); | 
|---|
|  |  |  | wModel.setDeleted(Constants.ZERO); | 
|---|
|  |  |  | wModel.setId(param.getId()); | 
|---|
|  |  |  | wModel = workorderExtMapper.selectOne(wModel); | 
|---|
|  |  |  | if(wModel== null){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.setPlanId(wModel.getPlanId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Plans plan = plansExtMapper.selectById(param.getPlanId()); | 
|---|
|  |  |  | if(plan == null){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | JSONObject json = new JSONObject(); | 
|---|
|  |  |  | QueryWorkorderExtDTO qw = new QueryWorkorderExtDTO(); | 
|---|
|  |  |  | qw.setPlanId(param.getPlanId()); | 
|---|
|  |  |  | qw.setDeleted(Constants.ZERO); | 
|---|
|  |  |  | //查询全部工单数据 | 
|---|
|  |  |  | List<WorkorderExtListVO> orderList = workorderExtMapper.selectList(qw); | 
|---|
|  |  |  | //已完工数量 | 
|---|
|  |  |  | int doneNum=0; | 
|---|
|  |  |  | //已分配数量 | 
|---|
|  |  |  | //已报工工单(包括工单状态:已报工、已入库)的完工数量(包括:合格、不良、报废) | 
|---|
|  |  |  | //+未报工工单(包括工单状态:已创建、已备料、已检验、已完工)的已分配数量 | 
|---|
|  |  |  | int distributNum=0; | 
|---|
|  |  |  | //已分配未报工数量=未报工工单(工单状态:已创建、已备料、已检验、已完工)的计划生产数量之和; | 
|---|
|  |  |  | int distributeNoDoneNum=0; | 
|---|
|  |  |  | //合格数量=已报工工单(工单状态:已报工、已入库)产出为合格的数量之和; | 
|---|
|  |  |  | int qulifiedNum=0; | 
|---|
|  |  |  | //不良数量=已报工工单(工单状态:已报工、已入库)产出为不良的数量之和; | 
|---|
|  |  |  | int unqulifiedNum =0; | 
|---|
|  |  |  | int allOrderNum =0; | 
|---|
|  |  |  | if(orderList!=null && orderList.size()>0){ | 
|---|
|  |  |  | QueryWorkorderRecordExtDTO rw = new QueryWorkorderRecordExtDTO(); | 
|---|
|  |  |  | rw.setPlanId(param.getPlanId()); | 
|---|
|  |  |  | rw.setDeleted(Constants.ZERO); | 
|---|
|  |  |  | //查询全部工单产出和投料数据 | 
|---|
|  |  |  | List<WorkorderRecordExtListVO> allRecordList = workorderRecordExtMapper.selectListNew(rw); | 
|---|
|  |  |  | for(WorkorderExtListVO order : orderList){ | 
|---|
|  |  |  | if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.cancel)){ | 
|---|
|  |  |  | //取消的工单不累计数量 | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.create) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.material) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.check) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.done)){ | 
|---|
|  |  |  | //统计已分配未报工数量 | 
|---|
|  |  |  | distributeNoDoneNum += Constants.formatIntegerNum(order.getPlanNum()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.baogong) | 
|---|
|  |  |  | ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing) | 
|---|
|  |  |  | || Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.instock)){ | 
|---|
|  |  |  | doneNum += Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum()); | 
|---|
|  |  |  | int tNum =Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum()); | 
|---|
|  |  |  | distributNum += tNum; | 
|---|
|  |  |  | allOrderNum += tNum; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | distributNum += Constants.formatIntegerNum(order.getPlanNum()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<WorkorderRecordExtListVO> rList = getRecordListById(order.getId(),allRecordList); | 
|---|
|  |  |  | if(rList!=null){ | 
|---|
|  |  |  | for(WorkorderRecordExtListVO item : rList){ | 
|---|
|  |  |  | if(Constants.equalsInteger(item.getType(),Constants.WORKORDER_RECORD_TYPE.produce) | 
|---|
|  |  |  | && item.getOmodel()!=null | 
|---|
|  |  |  | && (Constants.equalsInteger(item.getOmodel().getStatus() ,Constants.WORKORDER_STATUS.baogong) | 
|---|
|  |  |  | ||Constants.equalsInteger(item.getOmodel().getStatus() ,Constants.WORKORDER_STATUS.instock))){ | 
|---|
|  |  |  | //如果是合格产出,累计数量 | 
|---|
|  |  |  | qulifiedNum += Constants.formatBigdecimal(BigDecimal.valueOf(item.getQualifiedNum())).intValue(); | 
|---|
|  |  |  | //如果是不良产出,累计数量 | 
|---|
|  |  |  | unqulifiedNum += Constants.formatBigdecimal(BigDecimal.valueOf(item.getUnqualifiedNum())).intValue(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | json.put(Constants.STATISTIC.distributeNoDone,distributeNoDoneNum); | 
|---|
|  |  |  | json.put(Constants.STATISTIC.done,doneNum); | 
|---|
|  |  |  | json.put(Constants.STATISTIC.distribute,distributNum); | 
|---|
|  |  |  | json.put(Constants.STATISTIC.qulified,qulifiedNum); | 
|---|
|  |  |  | json.put(Constants.STATISTIC.unqulified,unqulifiedNum); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | UpdateWrapper updateWrapper = new UpdateWrapper(); | 
|---|
|  |  |  | Plans p = new Plans(); | 
|---|
|  |  |  | p.setId(param.getPlanId()); | 
|---|
|  |  |  | p.setStatisticInfo(json.toJSONString()); | 
|---|
|  |  |  | p.setUpdateTime(DateUtil.getCurrentDate()); | 
|---|
|  |  |  | if( Constants.formatIntegerNum(plan.getNum())  <= allOrderNum){ | 
|---|
|  |  |  | //如果满足计划已完工,更新计划状态 | 
|---|
|  |  |  | p.setStatus(Constants.PLAN_STATUS.done); | 
|---|
|  |  |  | if(!Objects.isNull(plan.getWorkPlansId())){ | 
|---|
|  |  |  | //更新主订单数据信息 | 
|---|
|  |  |  | if(plansMapper.selectCount(new QueryWrapper<Plans>() | 
|---|
|  |  |  | .in("STATUS",0,1,4,5) | 
|---|
|  |  |  | .eq("DELETED",Constants.ZERO) | 
|---|
|  |  |  | .ne("id",p.getId()) | 
|---|
|  |  |  | .eq("WORK_PLANS_ID",plan.getWorkPlansId()))<=Constants.ZERO){ | 
|---|
|  |  |  | WorkPlans  workPlans = workPlansExtMapper.selectById(plan.getWorkPlansId()); | 
|---|
|  |  |  | if(!Objects.isNull(workPlans)){ | 
|---|
|  |  |  | workPlans.setStatus(Constants.WORKPLANHISTORY_TYPE.done); | 
|---|
|  |  |  | workPlans.setUpdateTime(new Date()); | 
|---|
|  |  |  | workPlansExtMapper.updateById(workPlans); | 
|---|
|  |  |  | planHistoryExtMapper.insert(initPlanHistoryByModel(workPlans,null,Constants.WORKPLANHISTORY_TYPE.done)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | plan.getWorkPlansId(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | updateWrapper.set("STATUS",p.getStatus()); | 
|---|
|  |  |  | if(Constants.equalsInteger(plan.getStatus(),Constants.PLAN_STATUS.distribute)){ | 
|---|
|  |  |  | //如果已分配 | 
|---|
|  |  |  | planHistoryExtMapper.insertBatch(Arrays.asList(PlansExtServiceImpl.initHistoryByModel(plan,null,Constants.PLANHISTORY_TYPE.done))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //          planHistoryService.create(PlansExtServiceImpl.initHistoryByModel(plan,null,Constants.PLANHISTORY_TYPE.done)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //更新统计信息 | 
|---|
|  |  |  | //        plansExtMapper.updateById(p); | 
|---|
|  |  |  | updateWrapper.eq("ID",param.getPlanId()); | 
|---|
|  |  |  | updateWrapper.set("STATISTIC_INFO",json.toJSONString()); | 
|---|
|  |  |  | updateWrapper.set("UPDATE_TIME",DateUtil.getCurrentDate()); | 
|---|
|  |  |  | plansExtMapper.update(null,updateWrapper); | 
|---|
|  |  |  | //        Workorder order = new Workorder(); | 
|---|
|  |  |  | //        order.setUpdateTime(DateUtil.getCurrentDate()); | 
|---|
|  |  |  | //        //已关闭 | 
|---|
|  |  |  | //        order.setId(param.getId()); | 
|---|
|  |  |  | //        workorderExtMapper.updateById(order); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 检测数据有效性 | 
|---|
|  |  |  | * @param param | 
|---|