package com.bonus.repair.service; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Locale; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.bonus.core.DateTimeHelper; import com.bonus.core.StringHelper; import com.bonus.core.exception.ZeroAffectRowsException; import com.bonus.ma.beans.MachineBean; import com.bonus.ma.dao.MachineDao; import com.bonus.repair.beans.RepairDetailsBean; import com.bonus.repair.dao.RepairDetailsDao; import com.bonus.repairCheck.beans.RepairCheckDetailsBean; import com.bonus.repairCheck.dao.RepairCheckDetailsDao; import com.bonus.rm.beans.ReturnMaterialDetailsBean; import com.bonus.rm.dao.ReturnMaterialDetailsDao; import com.bonus.sys.BaseServiceImp; import com.bonus.sys.dao.UserDao; import com.bonus.wf.beans.TaskRecordBean; import com.bonus.wf.dao.TaskRecordDao; @Service("repair") public class RepairDetailsServiceImp extends BaseServiceImp implements RepairDetailsService { @Autowired UserDao uDao; @Autowired RepairDetailsDao dao; @Autowired MachineDao maDao; @Autowired ReturnMaterialDetailsDao rmDao; @Autowired TaskRecordDao trDao; @Autowired RepairCheckDetailsDao rcDao; @Override public List findRepairDevice(RepairDetailsBean o) { List list = new ArrayList(); if ("18".equals(o.getDefinitionId())) { list = dao.findRepairDevice(o); }else{ list = dao.findReturnRepairDevice(o); } return list; } @Override public List findRepairTask(RepairDetailsBean o) { List list = dao.findRepairTask(o); return list; } @Override public List findRepairTaskDetails(RepairDetailsBean o) { List list = dao.findRepairTaskDetails(o); return list; } @Override public void repairOperation(RepairDetailsBean o) { // 判断合格还是报废 if ("1".equals(o.getIsScrap())) { repairQualified(o); } else { // 报废1.添加2.修改机具状态3.添加报废明细 repairScrap(o); } } // 维修合格 public void repairQualified(RepairDetailsBean o) { // 1.修改机具状态,3.修改维修数量2.添加维修明细4.添加配件信息 String taskId = o.getTaskId(); String id = o.getId(); o.setRmStatus("5"); o.setBatchStatus("19"); if ("0".equals(o.getIsCount())) { updateDevStatus(o); // addRepairPart(o); addRepairDetails(o); updateRepairNum(o); o.setTaskId(taskId); o.setId(id); // buildRepairCheckTask(o); o.setTaskId(taskId); o.setId(id); //修改总任务状态 // updateIsFinish(o); } else { addRepairDetails(o); // addRepairPart(o); updateRepairNum(o); // buildRepairCheckTask(o); o.setTaskId(taskId); o.setId(id); // updateIsFinish(o); } } public void repairScrap(RepairDetailsBean o) { String taskId = o.getTaskId(); String id = o.getId(); o.setRmStatus("6"); o.setBatchStatus("10"); if ("0".equals(o.getIsCount())) { updateDevStatus(o); addRepairDetails(o); updateScrapNum(o); buildRepairCheckTask(o); o.setTaskId(taskId); o.setId(id); updateIsFinish(o); } else { addRepairDetails(o); updateScrapNum(o); buildRepairCheckTask(o); o.setTaskId(taskId); o.setId(id); updateIsFinish(o); } } // 修改机具状态 public void updateDevStatus(RepairDetailsBean o) { MachineBean maBean = new MachineBean(); maBean.setTypeId(o.getModelId()); maBean.setDeviceCode(o.getDeviceCode()); maBean.setBatchStatus(o.getBatchStatus()); maDao.updateMachineStatus(maBean); } // 修改维修数量 public void updateRepairNum(RepairDetailsBean o) { RepairDetailsBean bean = dao.findAlRepairNum(o); if ("0".equals(o.getIsCount())) { float nums = Float.parseFloat(bean.getAlRepairNum()); float alrepairNum = nums + 1; o.setAlRepairNum(alrepairNum + ""); } else { float alRepairNum = Float.parseFloat(bean.getAlRepairNum()); float operationNum = Float.parseFloat(o.getOperationNum()); float nums = operationNum + alRepairNum; o.setAlRepairNum(nums + ""); } boolean tf = isSure(o); if (tf) { o.setIsSure("1"); } else { o.setIsSure("0"); } o.setRepairTime(DateTimeHelper.getNowTime()); dao.updateNum(o); } // 修改报废数量 public void updateScrapNum(RepairDetailsBean o) { //查询维修报废数 RepairDetailsBean bean = dao.findScrapNum(o); if ("0".equals(o.getIsCount())) { float nums = Float.parseFloat(bean.getScrapNum()); float alrepairNum = nums + 1; o.setScrapNum(alrepairNum + ""); } else { float alRepairNum = Float.parseFloat(bean.getScrapNum()); float operationNum = Float.parseFloat(o.getScrapNum()); float nums = operationNum + alRepairNum; o.setScrapNum(nums + ""); } boolean tf = isSure(o); if (tf) { o.setIsSure("1"); } else { o.setIsSure("0"); } o.setRepairTime(DateTimeHelper.getNowTime()); dao.updateScrapNum(o); } // 判断是否符合已完成 public boolean isSure(RepairDetailsBean o) { RepairDetailsBean bean = dao.findInfoNums(o); if (bean == null) { return false; } else { float nums = Float.parseFloat(bean.getNums()); float repairNum = Float.parseFloat(o.getRepairNum()); if (repairNum > nums) { return false; } else { return true; } } } // 添加维修记录 //operationNum 维修操作数 //repairNum public void addRepairDetails(RepairDetailsBean o) { ReturnMaterialDetailsBean bean = new ReturnMaterialDetailsBean(); bean.setSupId(o.getTaskId()); bean.setCode(o.getDeviceCode()); bean.setModelId(o.getModelId()); bean.setOperationTime(DateTimeHelper.getNowTime()); bean.setRmStatus(o.getRmStatus()); bean.setState("6"); bean.setIsSplit("0"); if(o.getScrapUrl() != null || o.getScrapUrl() != "") bean.setScrapUrl(o.getScrapUrl()); if ("1".equals(o.getIsCount())) { //操作数 if (StringHelper.isNotEmpty(o.getOperationNum())) { bean.setMaNum(o.getOperationNum()); rmDao.insertInfo(bean); //报废数 if (StringHelper.isNotEmpty(o.getScrapNum())) { bean.setMaNum(o.getScrapNum()); bean.setScrapReason(o.getScrapReason()); rmDao.insertInfo(bean); } } else { bean.setMaNum(o.getScrapNum()); bean.setScrapReason(o.getScrapReason()); rmDao.insertInfo(bean); } } else { bean.setMaNum("1"); bean.setScrapReason(o.getScrapReason()); rmDao.insertInfo(bean); } RepairDetailsBean rdBean = dao.findAlRepairNum(o); if ("1".equals(o.getIsCount())) { float alRepairNum = Float.parseFloat(rdBean.getAlRepairNum()); float operationNum = 0; if ("0".equals(o.getIsScrap())) { operationNum = Float.parseFloat(o.getScrapNum()); }else{ operationNum = Float.parseFloat(o.getOperationNum()); } float nums = Float.parseFloat(o.getRepairNum()); if (StringHelper.isEmpty(o.getCheckId()) || "null".equals(o.getCheckId())) { if (nums == (alRepairNum + operationNum)) { RepairDetailsBean rBean = dao.findInfo(o); rBean.setRmStatus("7"); dao.updateInfo(rBean); } }else{ if (nums == (alRepairNum + operationNum)) { RepairDetailsBean rBean = dao.findCheckInfo(o); rBean.setRmStatus("7"); dao.updateInfo(rBean); } } } else { // 修改info表信息 if (StringHelper.isEmpty(o.getCheckId()) || "null".equals(o.getCheckId())) { RepairDetailsBean rBean = dao.findInfo(o); rBean.setRmStatus(o.getRmStatus()); dao.updateInfo(rBean); }else{ RepairDetailsBean rBean = dao.findCheckInfo(o); rBean.setRmStatus(o.getRmStatus()); dao.updateInfo(rBean); } } } /*// 添加维修配件 public void addRepairPart(RepairDetailsBean o) { if (StringHelper.isEmpty(o.getCheckId()) || "null".equals(o.getCheckId())) { RepairDetailsBean rBean = dao.findInfo(o); rBean.setRepairPart(o.getRepairPart()); dao.insertPart(rBean); }else{ RepairDetailsBean rBean = dao.findCheckInfo(o); rBean.setRepairPart(o.getRepairPart()); dao.insertPart(rBean); } }*/ public void buildRepairCheckTask(RepairDetailsBean o){ //1.判断是否满足检验任务建立2.满足建立检验任务 //查询维修数和报废shu RepairDetailsBean bean = dao.findRepairInfo(o); float scrapNum = Float.parseFloat(bean.getScrapNum()); float repairNum = Float.parseFloat(bean.getRepairNum()); float alRepairNum = Float.parseFloat(bean.getAlRepairNum()); if (repairNum == (scrapNum + alRepairNum)) { if (StringHelper.isEmpty(o.getCheckId()) || "null".equals(o.getCheckId())) { addRepairCheckTask(o); }else{ addReturnRepairCheckTask(o); } } } // 建立维修检验任务 1.taskId2.supId,modelId public void addRepairCheckTask(RepairDetailsBean o) { // 判断该退料任务下有无维修任务 TaskRecordBean bean = new TaskRecordBean(); // 未传值 bean.setTaskId(o.getSupId()); bean.setDefinitionId("20"); // 查询是否有任务 List list = trDao.findRepairTask(bean); if (list != null && list.size() > 0) { // 添加明细 RepairDetailsBean rdBean = new RepairDetailsBean(); rdBean.setModelId(o.getModelId()); rdBean.setTaskId(list.get(0).getTaskId()); rdBean.setRepairNum(o.getRepairNum()); rdBean.setId(o.getId()); addCheckDetails(rdBean); } else { // 建立任务 addRepairTask(o); } } public void addReturnRepairCheckTask(RepairDetailsBean o) { // 判断该退料任务下有无检验任务 TaskRecordBean bean = new TaskRecordBean(); // 未传值 bean.setTaskId(o.getSupId()); bean.setDefinitionId("24"); // 查询是否有任务 List list = trDao.findRepairTask(bean); if (list != null && list.size() > 0) { // 添加明细 RepairDetailsBean rdBean = new RepairDetailsBean(); rdBean.setModelId(o.getModelId()); rdBean.setTaskId(list.get(0).getTaskId()); rdBean.setRepairNum(o.getRepairNum()); rdBean.setId(o.getId()); addCheckDetails(rdBean); } else { // 建立任务 addReturnRepairTask(o); } } // 任务总表添加检验任务 public void addRepairTask(RepairDetailsBean o) { TaskRecordBean bean = new TaskRecordBean(); String number = findNumber(o); bean.setNumber(number); bean.setOperationTime(DateTimeHelper.getNowTime()); bean.setOperationUserId(o.getUserId()); bean.setDefinitionId("20"); bean.setProcessId("4"); bean.setIsFinish("0"); bean.setTaskId(o.getSupId()); trDao.insert(bean); // 添加明细 RepairDetailsBean rdBean = new RepairDetailsBean(); rdBean.setModelId(o.getModelId()); rdBean.setTaskId(bean.getId()); rdBean.setRepairNum(o.getRepairNum()); rdBean.setId(o.getId()); addCheckDetails(rdBean); } public void addReturnRepairTask(RepairDetailsBean o) { TaskRecordBean bean = new TaskRecordBean(); String number = findNumber(o); bean.setNumber(number); bean.setOperationTime(DateTimeHelper.getNowTime()); bean.setOperationUserId(o.getUserId()); bean.setDefinitionId("24"); bean.setProcessId("4"); bean.setIsFinish("0"); bean.setTaskId(o.getSupId()); trDao.insert(bean); // 添加明细 RepairDetailsBean rdBean = new RepairDetailsBean(); rdBean.setModelId(o.getModelId()); rdBean.setTaskId(bean.getId()); rdBean.setRepairNum(o.getRepairNum()); rdBean.setId(o.getId()); addCheckDetails(rdBean); } //添加任务明细 public void addCheckDetails(RepairDetailsBean o){ RepairCheckDetailsBean rcBean = new RepairCheckDetailsBean(); rcBean.setTaskId(o.getTaskId()); rcBean.setModelId(o.getModelId()); rcBean.setOperationTime(DateTimeHelper.getNowTime()); rcBean.setCheckNum(o.getRepairNum()); rcBean.setRepairId(o.getId()); //sql rcDao.insert(rcBean); } //生成检验单号 public String findNumber(RepairDetailsBean o) { String yearLast = new SimpleDateFormat("yy", Locale.CHINESE).format(Calendar.getInstance().getTime()); String nowDay = DateTimeHelper.getFormatNowMonthAndDay(); String operationTime = DateTimeHelper.getNowDate(); TaskRecordBean bean = new TaskRecordBean(); bean.setOperationTime(operationTime); bean.setDefinitionId("20"); String count = trDao.findNumber(bean); int str = Integer.parseInt(count) + 1; String counts = String.format("%03d", str); String code = "JY" + yearLast + nowDay + counts; return code; } //修改总任务状态 public void updateIsFinish(RepairDetailsBean o){ o.setIsSure("0"); List list = dao.findIsSure(o); if (list != null && list.size() > 0) { return; }else{ TaskRecordBean trBean = new TaskRecordBean(); trBean.setId(o.getTaskId()); trBean.setIsFinish("1"); trDao.update(trBean); } } @Override public List findTypeName(RepairDetailsBean o) { return dao.findTypeName(o); } @Override public List findModelName(RepairDetailsBean o) { return dao.findModelName(o); } //维修拆分 @Override public String repairSplit(RepairDetailsBean o) { String res = ""; try { List list = dao.getSplitListByTask(o); if(list != null && list.size() >0){ //创建检修任务 res = addCheckSplitTask(o,list);//返回 “存在维修检验任务” 或者 “拆分任务建立成功” if( res == "拆分任务建立成功"){ res = updateSplitStatus(o,list);//返回 “拆分状态修改完成” } }else{ res = "未查询到维修拆分的机具";//未查询到维修拆分的机具updateSplitStatusTwo } } catch (Exception e) { logger.error(e.toString(), e); res = "拆分过程中出现错误"; } return res; } //结束维修任务 @Override public String finishRepair(RepairDetailsBean o) { String res = ""; try{ // 查询wf_repair_details表中,(条件is_sure=1,taskId=#{taskId})的数据, // 若listIsSure不为空,(为空,则没有进行数据处理),不为空则进行过数据处理 List listIsSure = dao.getIsSureNum(o); if(listIsSure != null && listIsSure.size() >0){ // 查询wf_task_record,是否有拆分任务未结束的 返回的结果ListSplitNotFinish应为空 // 若ListSplitNotFinish不为空,则表示有维修子任务未完成,需要去完成才能继续进行之后的操作 //查询wf_task_record表中的sup_ID, RepairDetailsBean ListGetRepairSupId = dao.getRepairSupId(o); if(ListGetRepairSupId != null){ //根据SUP_ID查询检验单IS_FINISH= 0,IS_SPLIT is not NULL的数据 List listGetSplitNotFinish = dao.getSplitNotFinish(ListGetRepairSupId.getSupId()); if (listGetSplitNotFinish != null && listGetSplitNotFinish.size() >0) { //不为空则返回res值,进行信息提示,继续完成拆分任务,不能进行下一步 // res = "拆分任务未完成,请继续完成拆分任务,然后在进行结束维修"; }else{ //查询的list为空时,进行下一步 获得维修拆分剩余的操作数据 listOtherData List listOtherData = dao.getSplitListByTask(o); if (listOtherData != null && listOtherData.size() >0 ) { //listOtherData不为空时,则创建检验任务 res = NewCheckSplitTask(o,listOtherData);//方法重写 //结束任务,修改任务总状态,wf_task_record中的IS_FINISH状态改为1 updateIsFinish(o); }else { //listOtherData为空时,则结束任务,wf_task_record中的IS_FINISH状态改为1 updateIsFinish(o); } res = "维修任务结束"; } } }else{ res = "维修任务未结束,请继续完成维修任务"; } }catch (Exception e) { res = "结束维修任务时,出现错误!"; } return res; } private String addCheckSplitTask(RepairDetailsBean o, List list) { String res = ""; TaskRecordBean isTrue = trDao.checkTask(list.get(0).getSupId());//判断之前是否有过检验任务 if(isTrue != null){ String code = isTrue.getNumber(); res = "存在维修检验任务"+code;//存在维修检验任务 }else{ // 建立任务 TaskRecordBean bean = new TaskRecordBean(); String number = findNumber(o);//获取随机检验单号 bean.setNumber(number); bean.setOperationTime(DateTimeHelper.getNowTime()); bean.setOperationUserId(o.getUserId()); bean.setDefinitionId("20"); bean.setProcessId("4"); bean.setIsFinish("0"); bean.setIsSplit("0"); bean.setTaskId(list.get(0).getSupId()); trDao.insert(bean); String checkId = bean.getId(); for(RepairDetailsBean l : list){ RepairDetailsBean rdBean = new RepairDetailsBean(); rdBean.setModelId(l.getModelId()); rdBean.setTaskId(checkId); rdBean.setRepairNum(l.getRepairNum()); rdBean.setScrapNum(l.getScrapNum()); rdBean.setCheckNum(l.getCheckNum()); rdBean.setId(l.getId()); addCheckDetails(rdBean);//添加检验数据 //修改維修拆分数据 dao.updateSplitRepairNum(rdBean); } res = "拆分任务建立成功"; } return res; } private String NewCheckSplitTask(RepairDetailsBean o, List list) { String res = ""; try{ // 建立任务 TaskRecordBean bean = new TaskRecordBean(); String number = findNumber(o); bean.setNumber(number); bean.setOperationTime(DateTimeHelper.getNowTime()); bean.setOperationUserId(o.getUserId()); bean.setDefinitionId("20"); bean.setProcessId("4"); bean.setIsFinish("0"); bean.setTaskId(list.get(0).getSupId()); trDao.insert(bean); String checkId = bean.getId(); for(RepairDetailsBean l : list){ RepairDetailsBean rdBean = new RepairDetailsBean(); rdBean.setModelId(l.getModelId()); rdBean.setTaskId(checkId); rdBean.setRepairNum(l.getRepairNum()); rdBean.setScrapNum(l.getScrapNum()); rdBean.setCheckNum(l.getCheckNum()); rdBean.setId(l.getId()); addCheckDetails(rdBean);//添加检验数据 res = "添加检验数据成功"; } }catch (Exception e) { res = "添加检验数据失败"; } return res; } private String updateSplitStatus(RepairDetailsBean o, List list) { String res = "拆分任务建立失败"; int status = dao.updateSplitStatus(o); if (status > 0) { res = "拆分状态修改完成";//拆分状态修改完成 IS_SPLIT = 1 } return res; } @Override public List getRepairIndexList(RepairDetailsBean o) { String isFinsish = o.getIsFinsish(); if("0".equals(isFinsish)){ List list = dao.getRepairIndexList(o); return list; }else{ List rslist = new ArrayList<>(); List list = dao.getRepairedIndexList(o); for(RepairDetailsBean rb : list){ RepairDetailsBean bean = dao.getMaxRepairTime(rb); rb.setRepairTime(bean.getRepairTime()); rslist.add(rb); } ListSort(rslist); return rslist; } } @Override @Transactional public int submitNumRepair(RepairDetailsBean o) { int res = 0; try{ String isCount = o.getIsCount(); String repairIds = ""; //查询维修数据,匹配完成已修数据,获得repairId List list = dao.getMatchRepairList(o); if(list != null && list.size() >0){ repairIds = matchRepairData(o,list); } // 建立检验任务 String checkId = createCheckTask(o); //添加检验数据 if("1".equals(isCount)){ res = insertCheckNumData(o,checkId,repairIds); } }catch (Exception e) { res = -1; e.printStackTrace(); } return res; } private void updateBackRepairStatus(RepairDetailsBean o) { int res = 0; try{ o.setRmStatus("5"); res = dao.updateBackStatus(o); if (res == 0) { throw new ZeroAffectRowsException("修改维修合格rmStatus操作错误!"); } o.setBatchStatus("19"); res = dao.updateDeviceStatus(o); if (res == 0) { throw new ZeroAffectRowsException("修改维修合格DeviceStatus操作错误!"); } }catch (Exception e) { res = -1; e.printStackTrace(); } } private String matchRepairData(RepairDetailsBean o, List list) { int res = 0; String repairIds =""; try{ float paraRepairNum = o.getThisRepairNum(); String[] urls = o.getRepairUrls(); String deviceCode = o.getDeviceCode(); String repairPart = o.getRepairPart(); String userId = o.getUserId(); String maId = o.getMaId(); String typeId = o.getModelId(); for(RepairDetailsBean rb : list){ String repairId = rb.getId(); String taskId = rb.getTaskId(); String modelId = rb.getModelId(); float paraNum = rb.getParaNum(); RepairDetailsBean mtBean = new RepairDetailsBean(); mtBean.setId(repairId); mtBean.setTaskId(taskId); mtBean.setModelId(modelId); mtBean.setUserId(userId); mtBean.setDeviceCode(deviceCode); mtBean.setRepairTime(DateTimeHelper.currentDateTime()); mtBean.setUserIdArr(o.getUserIdArr()); mtBean.setUserArr(o.getUserArr()); if (Math.abs(paraRepairNum - paraNum) < 0.000001) { //修改维修合格数 al_repairNum + paraRepairNum, is_sure = 1 mtBean.setThisRepairNum(paraRepairNum); mtBean.setIsSure("1"); res = dao.updateRepairDetails(mtBean); if (res == 0) { throw new ZeroAffectRowsException("修改维修合格数 al_repairNum + paraRepairNum操作错误!"); } //插入维修记录 paraRepairNum, TYPE = 6 , RM_STATUS = 5 ,REMARK = repairPart mtBean.setInfoType("6"); mtBean.setRmStatus("5"); mtBean.setRepairPart(repairPart); res = dao.insertRepairRecord(mtBean); if (res == 0) { throw new ZeroAffectRowsException("插入维修记录 paraRepairNum操作错误!"); } if (urls != null) { for(int i = 0;i paraRepairNum){ //修改维修合格数 al_repairNum + paraRepairNum mtBean.setThisRepairNum(paraRepairNum); res = dao.updateRepairDetails(mtBean); if (res == 0) { throw new ZeroAffectRowsException("修改维修合格数 al_repairNum + paraRepairNum操作错误!"); } //插入维修记录paraNum mtBean.setInfoType("6"); mtBean.setRmStatus("5"); mtBean.setRepairPart(repairPart); res = dao.insertRepairRecord(mtBean); if (res == 0) { throw new ZeroAffectRowsException("插入维修记录paraNum操作错误!"); } if (urls.length>0) { for(int i = 0;i findRepairCodeList(RepairDetailsBean o) { return dao.findRepairCodeList(o); } @Override @Transactional public int submitCodeRepair(RepairDetailsBean o) { int res = 0; try{ String isCount = o.getIsCount(); String repairIds = ""; String[] urls = o.getRepairUrls(); String userIdArr = o.getUserIdArr(); String userArr = o.getUserArr(); //查询维修数据,匹配完成已修数据 List list = dao.getMatchRepairList(o); if(list != null && list.size() >0){ RepairDetailsBean [] arr = o.getArr(); for(int i=0; i< arr.length; i++){ //修改退料机具状态和机具状态 updateBackRepairStatus(arr[i]); arr[i].setUserArr(userArr); arr[i].setUserIdArr(userIdArr); arr[i].setRepairUrls(urls); repairIds += matchRepairData(arr[i],list); } } res = 1; }catch (Exception e) { logger.error(e.toString(), e); res = -1; } return res; } @Override @Transactional public int splitCodeRepair(RepairDetailsBean o) { int res = 0; try{ res = insertCheckCodeData(o); }catch (Exception e) { res = -1; } return res; } private int insertCheckCodeData(RepairDetailsBean o) { //查询设备提交数据 List list = dao.getRepairedCodeList(o); RepairDetailsBean bean = dao.getNumByModelId(o); if(list != null ){ // 建立检验任务 String checkId = createCheckTask(o); insertCheckCodeData(bean,list,checkId); } return 1; } private int insertCheckCodeData(RepairDetailsBean rdBean,List l, String checkId) { int res = 0; try{ String repairIds = ""; String checkNum = rdBean.getCheckNum(); String scrapNum = rdBean.getScrapNum(); for(RepairDetailsBean rb : l){ String repairId = rb.getTaskId(); rb.setCheckId(checkId); rb.setThisRepairNum(1); rb.setInfoType("8"); dao.updateIsSplitCode(rb); int info = dao.insertCheckRecord(rb); if (info == 0){ throw new ZeroAffectRowsException("生成wf_info_record数据"); } repairIds = repairId +","; } RepairCheckDetailsBean rcBean = new RepairCheckDetailsBean(); rcBean.setTaskId(checkId); rcBean.setModelId(l.get(0).getModelId()); rcBean.setOperationTime(DateTimeHelper.getNowTime()); rcBean.setRepairId(repairIds); rcBean.setCheckNum(checkNum+""); rcBean.setScrapNum(scrapNum+""); int check = rcDao.insertCheckDetails(rcBean); if (check == 0) { throw new ZeroAffectRowsException("创建检验单错误"); } }catch (Exception e) { res = -1; } return res; } @Override @Transactional public void submitNumScrap(RepairDetailsBean o) { int res = 0; try{ String isCount = o.getIsCount(); String repairIds = ""; //查询维修数据,匹配完成已修数据,获得repairId List list = dao.getMatchRepairList(o); if(list != null && list.size() >0){ repairIds = matchScrapData(o,list); } // 建立检验任务 String checkId = createCheckTask(o); //添加检验数据 if("1".equals(isCount)){ res = insertCheckNumData(o,checkId,repairIds); } }catch (Exception e) { res = -1; } } private String matchScrapData(RepairDetailsBean o, List list) { int res = 0; float paraRepairNum = o.getThisScrapNum(); String deviceCode = o.getDeviceCode(); String scrapUrl = o.getScrapUrl(); String userId = o.getUserId(); String repairPart = o.getScrapReson(); String repairIds =""; for(RepairDetailsBean rb : list){ String repairId = rb.getId(); String taskId = rb.getTaskId(); String modelId = rb.getModelId(); float paraNum = rb.getParaNum(); RepairDetailsBean mtBean = new RepairDetailsBean(); mtBean.setUserId(userId); mtBean.setId(repairId); mtBean.setTaskId(taskId); mtBean.setModelId(modelId); mtBean.setDeviceCode(deviceCode); mtBean.setScrapUrl(scrapUrl); mtBean.setRepairTime(DateTimeHelper.currentDateTime()); if (Math.abs(paraRepairNum - paraNum) < 0.000001) { //修改维修报废数据 scrap_num + paraRepairNum, is_sure = 1 mtBean.setThisScrapNum(paraRepairNum); mtBean.setIsSure("1"); res = dao.updateRepairDetails(mtBean); if (res == 0) { throw new ZeroAffectRowsException("修改维修报废数据 scrap_num + paraRepairNum错误"); } //插入维修记录 scrap_num, TYPE = 6 , RM_STATUS = 6 ,REMARK = repairPart mtBean.setInfoType("6"); mtBean.setRmStatus("6"); mtBean.setRepairPart(repairPart); res = dao.insertRepairRecord(mtBean); if (res == 0) { throw new ZeroAffectRowsException("插入维修记录 scrap_num错误"); } repairIds = repairId; break; }else if(paraNum < paraRepairNum){ //修改维修合格数 scrap_num + paraNum mtBean.setThisScrapNum(paraNum); res = dao.updateRepairDetails(mtBean); if (res == 0) { throw new ZeroAffectRowsException("修改维修报废数据 scrap_num + paraNum错误"); } //插入维修记录paraNum mtBean.setInfoType("6"); mtBean.setRmStatus("6"); mtBean.setRepairPart(repairPart); res = dao.insertRepairRecord(mtBean); if (res == 0) { throw new ZeroAffectRowsException("插入维修记录 scrap_num错误"); } paraRepairNum = paraRepairNum - paraNum; repairIds = repairId +","; }else if(paraNum > paraRepairNum){ //修改维修合格数 scrap_num + paraRepairNum mtBean.setThisScrapNum(paraRepairNum); res = dao.updateRepairDetails(mtBean); if (res == 0) { throw new ZeroAffectRowsException("修改维修报废数据 scrap_num + paraNum错误"); } //插入维修记录paraRepairNum mtBean.setInfoType("6"); mtBean.setRmStatus("6"); mtBean.setRepairPart(repairPart); res = dao.insertRepairRecord(mtBean); if (res == 0) { throw new ZeroAffectRowsException("插入维修报废记录 scrap_num错误"); } repairIds = repairId; break; }else{ //未匹配到数据 } } return repairIds; } @Override @Transactional public int submitCodeScrap(RepairDetailsBean o) { int res = 0; try{ String isCount = o.getIsCount(); String repairIds = ""; String repairPart = o.getScrapReason(); String scrapUrl = o.getScrapUrl(); //查询维修数据,匹配完成已修数据,获得repairId List list = dao.getMatchRepairList(o); if(list != null && list.size() >0){ RepairDetailsBean [] arr = o.getArr(); for(int i=0; i< arr.length; i++){ //修改退料机具状态和机具状态 arr[i].setScrapUrl(scrapUrl); arr[i].setRepairPart(repairPart); updateBackScrapStatus(arr[i]); repairIds += matchScrapData(arr[i],list); } } }catch (Exception e) { res = -1; } return res; } private int updateBackScrapStatus(RepairDetailsBean o) { int res = 0; try{ o.setRmStatus("6"); res = dao.updateBackStatus(o); if (res == 0) { throw new ZeroAffectRowsException("修改维修报废RmStatus错误"); } o.setBatchStatus("10"); if (res == 0) { throw new ZeroAffectRowsException("修改设备报废batchStatus错误"); } dao.updateDeviceStatus(o); }catch (Exception e) { res = -1; } return res; } @Override public List findRepairCodeListFinish(RepairDetailsBean o) { return dao.findRepairCodeListFinish(o); } @Override public List getRepairedNumList(RepairDetailsBean o) { // TODO Auto-generated method stub return dao.getRepairedNumList(o); } @Override public List getRepairDetails(RepairDetailsBean o) { return dao.getRepairDetails(o); } @Override public List getRepairMan(RepairDetailsBean o) { return dao.getRepairMan(o); } private void ListSort(List list) { Collections.sort(list, new Comparator() { @Override //定义一个比较器 public int compare(RepairDetailsBean o1, RepairDetailsBean o2) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { if (StringHelper.isEmpty(o1.getRepairTime())) { return 1; }else if (StringHelper.isEmpty(o2.getRepairTime())) { return -1; }else { Date dt1 = format.parse(o1.getRepairTime()); Date dt2 = format.parse(o2.getRepairTime()); if (dt2.getTime() > dt1.getTime()) { return 1; } else if (dt2.getTime() < dt1.getTime()) { return -1; } else { return 0; } } } catch (Exception e) { e.printStackTrace(); } return 0; } }); } }