| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.mom.common.GetLook; |
| | | import com.yuanchu.mom.common.PrintChina; |
| | | import com.yuanchu.mom.dto.InsOrderPlanDTO; |
| | | import com.yuanchu.mom.dto.InsProductResultDto; |
| | | import com.yuanchu.mom.dto.SampleProductDto; |
| | | import com.yuanchu.mom.dto.SubmitPlanDto; |
| | | import com.yuanchu.mom.dto.*; |
| | | import com.yuanchu.mom.exception.ErrorException; |
| | | import com.yuanchu.mom.mapper.*; |
| | | import com.yuanchu.mom.pojo.*; |
| | |
| | | |
| | | @Override |
| | | public Object uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) { |
| | | InsOrder insOrder = insOrderMapper.selectById(orderId); |
| | | String urlString; |
| | | String pathName; |
| | | String path; |
| | |
| | | file.transferTo(new File(urlString)); |
| | | insOrderFile.setFileUrl(pathName); |
| | | insOrderFileMapper.insert(insOrderFile); |
| | | //如果是辐射试验(近场/远程上传的csv文件) |
| | | String[] split = filename.split("\\."); |
| | | if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("近场") && split[split.length - 1].equals("csv")) { |
| | | fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile); |
| | | } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("远场") && split[split.length - 1].equals("xlsx")) { |
| | | fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile); |
| | | }else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("电路试验") && split[split.length - 1].equals("xlsx") && filename.contains("交调")) { |
| | | dianLuUtils.readDianLuFile1(sampleId,insOrderFile); |
| | | } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("电路试验") && split[split.length - 1].equals("xlsx") && filename.contains("交调")) { |
| | | dianLuUtils.readDianLuFile1(sampleId, insOrderFile); |
| | | } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("电路试验") && split[split.length - 1].equals("csv") && filename.contains("驻波")) { |
| | | dianLuUtils.readDianLuFile2(sampleId, insOrderFile); |
| | | }else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("电路试验") && split[split.length - 1].equals("csv") && insOrder.getSampleType().equals("无源器件")) { |
| | | dianLuUtils.readDianLuFile3(sampleId, insOrderFile); |
| | | } |
| | | } catch (Exception e) { |
| | | System.err.println("附件上传错误"); |
| | | throw new ErrorException(e.getMessage()); |
| | | } |
| | | return 0; |
| | | } |
| | |
| | | .in(InsProductResult2::getInsProductId, insProductResultDtos.getInsProductResult2s().stream().map(InsProductResult2::getInsProductId).distinct().collect(Collectors.toList())) |
| | | .eq(InsProductResult2::getNum, orderState.getNum()) |
| | | .eq(InsProductResult2::getFrequency, insProductResultDtos.getFrequency())); |
| | | List<InsProductResult2> result2s = new ArrayList<>(); |
| | | List<InsProductUser> insProductUsers = new ArrayList<>(); |
| | | for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) { |
| | | InsProduct insProduct = new InsProduct(); |
| | | insProduct.setId(insProductResult2.getInsProductId());//项目id |
| | |
| | | } |
| | | result2.setCreateUser(userId); |
| | | result2.setUpdateUser(userId); |
| | | insProductResult2Mapper.insert(result2); |
| | | insProduct.setUpdateUser(userId); |
| | | insProductMapper.updateById(insProduct); |
| | | insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId())); |
| | | result2s.add(result2); |
| | | //insProductResult2Mapper.insert(result2); |
| | | //insProduct.setUpdateUser(userId); |
| | | //insProducts.add(insProduct); |
| | | //insProductMapper.updateById(insProduct); |
| | | insProductUsers.add(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId())); |
| | | //insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId())); |
| | | /*更新样品的检验状态*/ |
| | | insSample.setInsState(1); |
| | | Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() |
| | |
| | | //如果所有项目都有结论,那么该样品状态已检 |
| | | insSample.setInsState(2); |
| | | } |
| | | insSampleMapper.updateById(insSample); |
| | | } |
| | | insProductResult2Mapper.saveBatch(result2s); |
| | | insProductUserMapper.saveBatch(insProductUsers); |
| | | insSampleMapper.updateById(insSample); |
| | | /*判断该站点的检验项目是否全部已检*/ |
| | | int count = insProductMapper.selectInsProductCountByOrderId(insSample.getInsOrderId()); |
| | | if (count == 0) { |
| | |
| | | .set(InsOrderState::getInsState, 2)); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | //电路试验的保存检验内容(返回/提交) |
| | | @Override |
| | | public int saveInsContext2s(InsProductResultDtos insProductResultDtos) { |
| | | for (InsProductResultDto insProductResultDto : insProductResultDtos.getInsProductResultDtos()) { |
| | | saveInsContext2(insProductResultDto); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | //温湿度试验+功率试验的保存检验内容 |
| | |
| | | InsOrderUser insOrderUser = new InsOrderUser(); |
| | | insOrderUser.setInsOrderStateId(orderState.getId()); |
| | | insOrderUser.setSubmitUser(getLook.selectPowerByMethodAndUserId(null).get("userId")); |
| | | insOrderUser.setInsTime(orderState.getInsTime()); |
| | | insOrderUser.setSubmitTime(LocalDateTime.now()); |
| | | insOrderUser.setNum(orderState.getNum()); |
| | | insOrderUser.setNote(ObjectUtils.isNotEmpty(submitPlanDto.getNote()) ? submitPlanDto.getNote() : null); |
| | |
| | | info.setViewStatus(false); |
| | | info.setJumpPath("b1-inspect-order-plan"); |
| | | informationNotificationService.addInformationNotification(info); |
| | | // todo 企业微信消息推送@zss |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount(); |
| | | map.put("touser", account);//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔) |
| | | map.put("toparty", "");//接收部门id |
| | | map.put("totag", "");//消息标签id |
| | | map.put("msgtype", "text");//消息类型 text:文本 |
| | | map.put("agentid", 1000517);//应用id |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | hashMap.put("content", "您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode() + ",样品名称为:" + insSample.getSample() + |
| | | ",请前往LIMS系统查看。请点击<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>"); |
| | | map.put("text", hashMap);//消息内容 |
| | | map.put("safe", 0);//是否保密消息.0否 |
| | | map.put("enable_id_trans", 0);//是否开启id转译.0否 |
| | | map.put("enable_duplicate_check", 0);//是否开启重复消息检查.0否 |
| | | qywxApi.send(map); |
| | | //复核人--检验单相关负责人 |
| | | InsSampleUser insSampleUser = new InsSampleUser(); |
| | | insSampleUser.setUserId(submitPlanDto.getVerifyUser()); |
| | |
| | | insSampleUserMapper.insert(insSampleUser); |
| | | /*生成电路试验的站点报告并上传到附件中*/ |
| | | if (submitPlanDto.getLaboratory().equals("电路试验")) { |
| | | //wordUtils.generateWord(submitPlanDto.getTerm(), orderState); |
| | | //todo 电路站点报告 正式库部署放开 |
| | | try { |
| | | if (!insOrder.getSampleType().equals("无源器件")) { |
| | | wordUtils.generateWord(submitPlanDto.getTerm(), orderState); |
| | | } catch (Exception e) { |
| | | throw new ErrorException("电路试验的站点报告生成有误,请联系开发人员调整!"); |
| | | }else { |
| | | wordUtils.generateWord2(submitPlanDto.getTerm(), orderState); |
| | | } |
| | | //todo 电路站点报告 正式库部署放开 |
| | | // try { |
| | | // if (!insOrder.getSampleType().equals("无源器件")) { |
| | | // wordUtils.generateWord(submitPlanDto.getTerm(), orderState); |
| | | // }else { |
| | | // wordUtils.generateWord2(submitPlanDto.getTerm(), orderState); |
| | | // } |
| | | // } catch (Exception e) { |
| | | // throw new ErrorException("电路试验的站点报告生成有误,请联系开发人员调整!"); |
| | | // } |
| | | } |
| | | |
| | | /*生成产量工时*/ |
| | | //校验如果这个人这个检测项目已经添加过了则不需要再新增 |
| | | //首先判断当前人的当前时间是否是排班时间内,如果不是就是加班 |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // todo 企业微信消息推送@zss |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount(); |
| | | map.put("touser", account);//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔) |
| | | map.put("toparty", "");//接收部门id |
| | | map.put("totag", "");//消息标签id |
| | | map.put("msgtype", "text");//消息类型 text:文本 |
| | | map.put("agentid", 1000517);//应用id |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | hashMap.put("content", "您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode() + ",样品名称为:" + insSample.getSample() + |
| | | ",请前往LIMS系统查看。请点击<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>"); |
| | | map.put("text", hashMap);//消息内容 |
| | | map.put("safe", 0);//是否保密消息.0否 |
| | | map.put("enable_id_trans", 0);//是否开启id转译.0否 |
| | | map.put("enable_duplicate_check", 0);//是否开启重复消息检查.0否 |
| | | qywxApi.send(map); |
| | | return 1; |
| | | } |
| | | |
| | | @Override |
| | | public int cancelSubmitPlan(Integer orderStateId) { |
| | | InsOrderState orderState = insOrderStateMapper.selectById(orderStateId); |
| | | InsOrder insOrder = insOrderMapper.selectById(orderState.getInsOrderId()); |
| | | InsSample insSample = insSampleMapper.selectById(orderState.getInsSampleId()); |
| | | /*删除记录检验任务每次的备注信息*/ |
| | | insOrderUserMapper.delete(Wrappers.<InsOrderUser>lambdaQuery() |
| | | .eq(InsOrderUser::getInsOrderStateId,orderState.getId()) |
| | | .eq(InsOrderUser::getNum,orderState.getNum())); |
| | | //撤销提交 |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() |
| | | .eq(InsOrderState::getInsOrderId, orderState.getInsOrderId()) |
| | | .eq(InsOrderState::getInsSampleId, orderState.getInsSampleId()) |
| | | .eq(InsOrderState::getLaboratory, orderState.getLaboratory()) |
| | | .set(InsOrderState::getInsState, 2)); |
| | | Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); |
| | | //LIMS系统消息推送 |
| | | InformationNotification info = new InformationNotification(); |
| | | info.setCreateUser(insProductMapper.selectUserById(userId).get("name")); |
| | | info.setMessageType("2"); |
| | | info.setTheme("复核撤销通知"); |
| | | info.setContent("您有一条检验任务待复核已撤销的消息,订单号是:" + insOrder.getEntrustCode() + ",样品名称为:" + insSample.getSample()); |
| | | info.setSenderId(userId); |
| | | info.setConsigneeId(orderState.getVerifyUser()); |
| | | info.setViewStatus(false); |
| | | info.setJumpPath("b1-inspect-order-plan"); |
| | | informationNotificationService.addInformationNotification(info); |
| | | //删除复核人--检验单相关负责人 |
| | | insSampleUserMapper.delete(Wrappers.<InsSampleUser>lambdaQuery() |
| | | .eq(InsSampleUser::getState,1) |
| | | .eq(InsSampleUser::getSonLaboratory,orderState.getLaboratory()) |
| | | .eq(InsSampleUser::getUserId,orderState.getVerifyUser()) |
| | | .eq(InsSampleUser::getInsSampleId,orderState.getInsSampleId())); |
| | | //删除生成的报告 |
| | | if (orderState.getLaboratory().equals("电路试验")) { |
| | | List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery() |
| | | .eq(InsOrderFile::getType, 2) |
| | | .like(InsOrderFile::getFileName,"电路参数.docx") |
| | | .eq(InsOrderFile::getInsOrderId, insOrder.getId()) |
| | | .eq(InsOrderFile::getInsSampleId, orderState.getInsSampleId()) |
| | | .eq(InsOrderFile::getSonLaboratory, orderState.getLaboratory())); |
| | | for (InsOrderFile insOrderFile : insOrderFiles) { |
| | | File file = new File(wordUrl + "/" + insOrderFile.getFileUrl()); |
| | | file.delete(); |
| | | insOrderFileMapper.deleteById(insOrderFile.getId()); |
| | | } |
| | | } |
| | | |
| | | /*删除生成产量工时*/ |
| | | List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, insSample.getId())); |
| | | List<Integer> productIds = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList()); |
| | | auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery() |
| | | .eq(AuxiliaryOutputWorkingHours::getSample,insSample.getSampleCode()) |
| | | .in(AuxiliaryOutputWorkingHours::getInsProductId,productIds) |
| | | .eq(AuxiliaryOutputWorkingHours::getNum,orderState.getNum())); |
| | | |
| | | // todo 企业微信消息推送@zss |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | String account = userMapper.selectById(orderState.getVerifyUser()).getAccount(); |
| | | map.put("touser", account);//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔) |
| | | map.put("toparty", "");//接收部门id |
| | | map.put("totag", "");//消息标签id |
| | | map.put("msgtype", "text");//消息类型 text:文本 |
| | | map.put("agentid", 1000517);//应用id |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | hashMap.put("content", "您有一条复核的消息已撤销,订单号是:" + insOrder.getEntrustCode() + ",样品名称为:" + insSample.getSample() + |
| | | ",请前往LIMS系统查看。请点击<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>"); |
| | | map.put("text", hashMap);//消息内容 |
| | | map.put("safe", 0);//是否保密消息.0否 |
| | | map.put("enable_id_trans", 0);//是否开启id转译.0否 |
| | | map.put("enable_duplicate_check", 0);//是否开启重复消息检查.0否 |
| | | qywxApi.send(map); |
| | | return 0; |
| | | } |
| | | |
| | | public static String getWeek(String dayStr) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | try { |