inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
@@ -267,4 +267,10 @@ return Result.success(); } @ApiOperation(value = "查询当前时间是否没有该检测项的抽样计划") @PostMapping("/judgeNotSpotCheckOrder") public Result<?> judgeNotSpotCheckOrder(@RequestBody InsPlaceOrderDto insPlaceOrderDto) { return insOrderService.judgeNotSpotCheckOrder(insPlaceOrderDto.getSampleList(), insPlaceOrderDto.getInsOrder()); } } inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java
@@ -114,8 +114,7 @@ @ApiOperation(value = "保存检验内容") @PostMapping("/saveInsContext") public Result<?> saveInsContext(@RequestBody SaveInsContextDto saveInsContextDto) { Map<String, Object> param2 = JSON.parseObject(saveInsContextDto.getParam(), Map.class); insOrderPlanService.saveInsContext(param2, saveInsContextDto.getCurrentTable(), saveInsContextDto.getSampleId(), saveInsContextDto.getOrderId(), saveInsContextDto.getSonLaboratory()); insOrderPlanService.saveInsContext(saveInsContextDto); return Result.success(); } @@ -244,7 +243,8 @@ @GetMapping("/getBindingProductByProductId") public Result<List<InsProduct>> getBindingProductByProductId(Integer productId) { return Result.success(insProductService.list(Wrappers.<InsProduct>lambdaQuery() .eq(InsProduct::getBindingProductId, productId))); .eq(InsProduct::getBindingProductId, productId) .orderByAsc(InsProduct::getSort))); } inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto.java
@@ -13,8 +13,6 @@ @ApiModelProperty("检验项目") private List<InsProduct> insProduct; // private List<BushingDto> bushing; @ApiModelProperty("子样品配置") private List<SampleProductDto> childSampleList; @@ -23,8 +21,6 @@ @ApiModelProperty("辅助线芯配置") private InsulatingDto auxiliaryWireCore; // private SheathDto sheath; @ApiModelProperty("检验人") private String checkName; inspect-server/src/main/java/com/ruoyi/inspect/dto/SaveInsContextDto.java
@@ -1,19 +1,29 @@ package com.ruoyi.inspect.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 保存模板传参 */ @Data //保存检验内容传参 public class SaveInsContextDto { //模板内容 @ApiModelProperty("模板内容") private String param; //当前模板id @ApiModelProperty("当前模板id") private Integer currentTable; //当前样品id @ApiModelProperty("当前样品id") private Integer sampleId; //当前订单id @ApiModelProperty("当前订单id") private Integer orderId; //子试验室 @ApiModelProperty("子试验室") private String sonLaboratory; @ApiModelProperty("是否没有检验值") private Integer isNoTestValue; } inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.pojo.StructureTestObject; import com.ruoyi.inspect.dto.CostStatisticsDto; import com.ruoyi.inspect.dto.SampleOrderDto; import com.ruoyi.inspect.dto.SampleProductDto2; import com.ruoyi.inspect.dto.SampleProductExportDto; @@ -136,4 +135,13 @@ * @return */ List<SampleOrderDto> getInsOrderExportByIds(@Param("orderIds") List<String> orderIds); /** * 查询当前时间是否有该检测项的抽样计划订单 * @param itmeId 样品Id * @param startTime 开始时间 * @param endTime 结束时间 * @return */ Integer selectNotSpotCheckOrder(@Param("itmeId") Integer itmeId, @Param("startTime") String startTime, @Param("endTime") String endTime); } inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderPlanService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.inspect.dto.InsOrderPlanDTO; import com.ruoyi.inspect.dto.InsOrderPlanProductDto; import com.ruoyi.inspect.dto.SaveInsContextDto; import com.ruoyi.inspect.pojo.InsOrderFactoryVerify; import com.ruoyi.inspect.pojo.InsOrderFile; import com.ruoyi.inspect.pojo.InsProduct; @@ -25,7 +26,7 @@ boolean claimInsOrderPlan(InsOrderPlanDTO entity); void saveInsContext(Map<String, Object> insContext,Integer currentTable,Integer sampleId,Integer orderId,String sonLaboratory); void saveInsContext(SaveInsContextDto saveInsContextDto); Map<String, Object> doInsOrder(Integer id, String laboratory); inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.pojo.StandardProductList; import com.ruoyi.common.core.domain.Result; import com.ruoyi.inspect.pojo.InsOrder; import com.ruoyi.inspect.pojo.InsSample; import com.ruoyi.inspect.pojo.InsUnqualifiedRetestProduct; @@ -114,4 +115,12 @@ * @param insSample */ void updateSampleModel(InsSample insSample); /** * 查询当前时间是否没有该检测项的抽样计划 * @param sampleList * @param insOrder * @return */ Result judgeNotSpotCheckOrder(List<SampleProductDto> sampleList, InsOrder insOrder); } inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
@@ -476,6 +476,7 @@ template.write(os); os.flush(); os.close(); inputStream.close(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("导出失败"); @@ -669,6 +670,7 @@ template.write(os); os.flush(); os.close(); inputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -361,15 +361,16 @@ @Override @Transactional(rollbackFor = Exception.class) public void saveInsContext(Map<String, Object> insContext, Integer currentTable, Integer currentSampleId, Integer orderId, String sonLaboratory) { public void saveInsContext(SaveInsContextDto saveInsContextDto) { Map<String, Object> insContext = JSON.parseObject(saveInsContextDto.getParam(), Map.class); Integer userId = SecurityUtils.getUserId().intValue(); InsSample insSample = insSampleMapper.selectById(currentSampleId); InsSample insSample = insSampleMapper.selectById(saveInsContextDto.getSampleId()); insContext.forEach((k, v) -> { JSONObject jo = JSON.parseObject(JSON.toJSONString(v)); InsProduct insProduct = new InsProduct(); insProduct.setId(Integer.parseInt(k)); InsProduct product = insProductMapper.selectById(insProduct.getId()); if (currentTable.equals(product.getTemplateId()) && currentSampleId.equals(product.getInsSampleId())) { if (saveInsContextDto.getCurrentTable().equals(product.getTemplateId()) && saveInsContextDto.getSampleId().equals(product.getInsSampleId())) { List<InsProductResult> oldResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery() .eq(InsProductResult::getInsProductId, insProduct.getId())); InsProductResult newResult = new InsProductResult(); @@ -502,22 +503,31 @@ // 添加工时 // 判断是否只是参与计算值, 参与计算值实际没有填写 if (StringUtils.isNotBlank(newResult.getInsValue()) && !newResult.getInsValue().equals("[]")) { InsProduct finalInsProduct = insProductMapper.selectById(product.getId()); threadPoolTaskExecutor.execute(() -> { InsProduct finalInsProduct = insProductMapper.selectById(product.getId()); InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); this.addAuxiliary(userId, finalInsProduct, insOrder); }); } else { // 判断是否是没有检验值的内容 if (saveInsContextDto.getIsNoTestValue() != null && saveInsContextDto.getIsNoTestValue() == 1) { threadPoolTaskExecutor.execute(() -> { InsProduct finalInsProduct = insProductMapper.selectById(product.getId()); InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); this.addAuxiliary(userId, finalInsProduct, insOrder); }); } } } }); String sampleIdStr = insContext.keySet().stream().findFirst().orElse(null); if (sampleIdStr != null) { int count = insProductMapper.selectInsProductCountByOrderId(orderId); int count = insProductMapper.selectInsProductCountByOrderId(saveInsContextDto.getOrderId()); if (count == 0) { insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getInsOrderId, orderId) .eq(InsOrderState::getLaboratory, sonLaboratory) .eq(InsOrderState::getInsOrderId, saveInsContextDto.getOrderId()) .eq(InsOrderState::getLaboratory, saveInsContextDto.getSonLaboratory()) .set(InsOrderState::getInsState, 2)); } } @@ -605,20 +615,6 @@ */ private void getTemplateThing(InsOrder order, List<InsProduct> insProducts) { Set<Integer> set = new HashSet<>(); // 检验项分类+检验项+检验子项的拼接 // List<String> itemNameList = insProducts.stream().map(insProduct -> { // String itemName = ""; // if (StringUtils.isNotBlank(insProduct.getInspectionItemClass())) { // itemName += insProduct.getInspectionItemClass().trim(); // } // if (StringUtils.isNotBlank(insProduct.getInspectionItem())) { // itemName += insProduct.getInspectionItem().trim(); // } // if (StringUtils.isNotBlank(insProduct.getInspectionItemSubclass())) { // itemName += insProduct.getInspectionItemSubclass().trim(); // } // return itemName; // }).collect(Collectors.toList()); // 查询订单状态判断是否是查历史模板 if (order.getIsFirstSubmit() != null && order.getIsFirstSubmit().equals(1)) { InsOrderState insOrderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() @@ -822,10 +818,9 @@ // 5.发送消息通知给复核人 // 查询当前人信息 Integer userId = SecurityUtils.getUserId().intValue(); Map<String, String> userMap = insProductMapper.selectUserById(verifyUser); String userName = userMap.get("name"); String userName = insProductMapper.selectUserById(userId).get("name"); // 查询发送人信息 String sendUserAccount = userMap.get("account"); String sendUserAccount = insProductMapper.selectUserById(verifyUser).get("account"); InformationNotification info = new InformationNotification(); info.setCreateUser(userName); info.setMessageType("2"); @@ -967,13 +962,13 @@ * @param ifsInventoryQuantity * @param order */ private void addAnalysis(List<InsProduct> productList, IfsInventoryQuantity ifsInventoryQuantity, InsOrder order, String userName) { private void addAnalysis(List<InsProduct> productList, IfsInventoryQuantity ifsInventoryQuantity, InsOrder order, String sendUserAccount) { for (InsProduct insProduct : productList) { // 判断是否是数值类型 if (insProduct.getInspectionValueType().equals("1") && insProduct.getInsResult().equals(1)) { List<InsProductDeviationWarningDetail> insProductAnalysisDtoList = insProductMapper.selectAnalysis(insProduct, ifsInventoryQuantity.getSupplierName()); if (insProductAnalysisDtoList.size() < 5) { if (insProductAnalysisDtoList.size() < 10) { continue; } @@ -1034,10 +1029,10 @@ message += "\n检验项: " + insProduct.getInspectionItem() + insProduct.getInspectionItemSubclass(); message += "\n偏差超过了 10%"; // 发送给提交人 WxCpUtils.inform(userName, message, null); // todo: 发送给检测中心主任(固定死) WxCpUtils.inform("ZT-004704", message, null); // WxCpUtils.inform(sendUserAccount, message, null); // // // todo: 发送给检测中心主任(固定死) // WxCpUtils.inform("ZT-004704", message, null); } catch (Exception e) { e.printStackTrace(); log.error("偏差预警企业微信通知报错"); @@ -2015,7 +2010,7 @@ insReportMapper.delete(Wrappers.<InsReport>lambdaQuery() .eq(InsReport::getInsOrderId, insOrder.getId())); insReportMapper.insert(insReport); inputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } @@ -2568,6 +2563,7 @@ insReportMapper.delete(Wrappers.<InsReport>lambdaQuery() .eq(InsReport::getInsOrderId, insOrder.getId())); insReportMapper.insert(insReport); inputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } @@ -4242,6 +4238,11 @@ // 保存到附件里面 uploadFile(insOrderId, multipartFile); try { inputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } } inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -13,15 +13,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper; import com.ruoyi.basic.mapper.StandardProductListMapper; import com.ruoyi.basic.mapper.StructureItemParameterMapper; import com.ruoyi.basic.pojo.IfsInventoryQuantity; import com.ruoyi.basic.pojo.StandardProductList; import com.ruoyi.basic.pojo.StructureItemParameter; import com.ruoyi.basic.pojo.StructureTestObject; import com.ruoyi.common.constant.InsOrderTypeConstants; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.common.numgen.NumberGenerator; import com.ruoyi.common.utils.*; @@ -35,8 +38,6 @@ import com.ruoyi.inspect.service.InsProductService; import com.ruoyi.inspect.service.InsSampleService; import com.ruoyi.inspect.vo.InsOrderPrintingVo; import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHoursTemporary; import com.ruoyi.performance.service.AuxiliaryOutputWorkingHoursTemporaryService; import com.ruoyi.system.mapper.UserMapper; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; @@ -82,14 +83,13 @@ private IfsApiUtils ifsApiUtils; private SpotCheckQuarterItemMapper spotCheckQuarterItemMapper; private StandardProductListMapper standardProductListMapper; private AuxiliaryOutputWorkingHoursTemporaryService auxiliaryOutputWorkingHoursTemporaryService; private StructureItemParameterMapper structureItemParameterMapper; //获取检验下单数据 @Override public IPage<SampleOrderDto> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto) { //todo: 只看我判断全部,个人,组织的权限 String laboratory = null; // 判断是否是全部 String isOrderAll = null; @@ -155,53 +155,9 @@ spotCheckQuarterItemMapper.updateById(spotCheckQuarterItem); } // 创建工时暂存 // 缓存样品id, 编号map // addWorkingHoursTemporary(userId, insSamples, ids, order); return 1; } /** * 创建工时暂存 * @param userId * @param insSamples * @param ids * @param order */ private void addWorkingHoursTemporary(Integer userId, List<InsSample> insSamples, List<Integer> ids, InsOrder order) { Map<Integer, String> sampleMap = insSamples.stream().collect(Collectors.toMap(InsSample::getId, InsSample::getSampleCode)); List<InsProduct> insProductList = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() .in(InsProduct::getInsSampleId, ids) .eq(InsProduct::getState, 1)); List<AuxiliaryOutputWorkingHoursTemporary> outputWorkingHours = insProductList.stream().map(insProduct -> { AuxiliaryOutputWorkingHoursTemporary auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHoursTemporary(); auxiliaryOutputWorkingHours.setInspectionItemClass(insProduct.getInspectionItemClass());//检测项分类 auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//检测父项 auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//检测子项 auxiliaryOutputWorkingHours.setSample(sampleMap.get(insProduct.getInsSampleId()));//样品编号 auxiliaryOutputWorkingHours.setOrderId(order.getId());//订单id auxiliaryOutputWorkingHours.setOrderNo(order.getEntrustCode());//非加班委托单号 auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//非加班工时 auxiliaryOutputWorkingHours.setAmount(1);//非加班数量 auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : BigDecimal.ZERO));//产量工时 auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//工时分组 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//日期 LocalDateTime localDateTime = LocalDateTime.now(); DateTime parse = DateUtil.parse(localDateTime.format(formatter)); auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//星期 auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//周次 auxiliaryOutputWorkingHours.setCheck(userId);//检测人 auxiliaryOutputWorkingHours.setPrice(insProduct.getPrice());//单价 auxiliaryOutputWorkingHours.setSampleId(insProduct.getInsSampleId());//样品id auxiliaryOutputWorkingHours.setInsProductId(insProduct.getId());//检验项id return auxiliaryOutputWorkingHours; }).collect(Collectors.toList()); auxiliaryOutputWorkingHoursTemporaryService.saveBatch(outputWorkingHours); } public static String getWeek(String dayStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -237,6 +193,19 @@ default: return "未知"; } } // 如果你使用 Java 8+,也可以用 Stream API 简化代码: public List<StandardProductList> findMissingItemsWithStream(List<StandardProductList> standardList, List<InsProduct> insList) { Set<Integer> insIds = insList.stream() .map(InsProduct::getStructureItemParameterId) .collect(Collectors.toSet()); return standardList.stream() .filter(product -> !insIds.contains(product.getStructureItemParameterId())) .collect(Collectors.toList()); } @Override @@ -906,6 +875,10 @@ // 修改检验项 for (SampleProductDto sampleProductDto : insOrderUpdateDto.getSampleProduct()) { insSampleService.update(Wrappers.<InsSample>lambdaUpdate() .eq(InsSample::getId, sampleProductDto.getId()) .set(InsSample::getSpecialStandardMethod, sampleProductDto.getSpecialStandardMethod())); insProductService.updateBatchById(sampleProductDto.getInsProduct()); } @@ -1057,6 +1030,122 @@ .set(InsSample::getModel, insSample.getModel())); } /** * 查询当前时间是否没有该检测项的抽样计划 * @param sampleList * @param insOrder * @return */ @Override public Result judgeNotSpotCheckOrder(List<SampleProductDto> sampleList, InsOrder insOrder) { // todo: 下单判断抽样计划的唯一性 if (insOrder.getQuarterItemId() != null) { Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery() .eq(InsOrder::getQuarterItemId, insOrder.getQuarterItemId()) .notIn(InsOrder::getState, -1 ,2 ,3)); if (quarterItemCount > 0) { throw new ErrorException("该抽样计划已被绑定过"); } } // 判断是否是抽样检测 if (insOrder.getOrderType().equals(InsOrderTypeConstants.SPOT_CHECK)) { Set<String> monthMessageSet = new HashSet<>(); Set<String> quarterMessageSet = new HashSet<>(); Set<String> yearMessageSet = new HashSet<>(); String formatTime = "yyyy-MM-dd HH:mm:ss"; // 查询当前所有样品的检验项 for (SampleProductDto sampleProductDto : sampleList) { List<StandardProductList> standardProductList = getProductTreeBySampleId(sampleProductDto.getId()); Set<Integer> insIds = sampleProductDto.getInsProduct().stream() .map(InsProduct::getStructureItemParameterId) .collect(Collectors.toSet()); List<StandardProductList> productLists = standardProductList.stream() .filter(product -> !insIds.contains(product.getStructureItemParameterId())) .collect(Collectors.toList()); // 查询检验项基础表, 查询是否有月度, 季度, 年度的检验项 List<StructureItemParameter> itemParameterList = structureItemParameterMapper.selectList(Wrappers.<StructureItemParameter>lambdaQuery() .in(StructureItemParameter::getId, productLists.stream().map(StandardProductList::getStructureItemParameterId).collect(Collectors.toList()))); for (StructureItemParameter item : itemParameterList) { if (StringUtils.isNotBlank(item.getSpotCheckType())) { switch (item.getSpotCheckType()) { case "1": // 月度 // 查询当月是否有该检测项的抽样计划 // 当月开始时间 DateTime monthStart = DateUtil.beginOfMonth(DateUtil.date()); String monthStartTime = monthStart.toString(formatTime); // 当月结束时间 DateTime monthEnd = DateUtil.endOfMonth(DateUtil.date()); String monthEndTime = monthEnd.toString(formatTime); Integer count = insOrderMapper.selectNotSpotCheckOrder(item.getId(), monthStartTime, monthEndTime); if (count == 0) { String monthMessage = item.getInspectionItemClass() + item.getInspectionItem() + item.getInspectionItemSubclass(); monthMessageSet.add(monthMessage); } break; case "2": // 季度 DateTime quarterStart = DateUtil.beginOfQuarter(DateUtil.date()); String quarterStartTime = quarterStart.toString(formatTime); // 当月结束时间 DateTime quarterEnd = DateUtil.endOfQuarter(DateUtil.date()); String quarterEndTime = quarterEnd.toString(formatTime); Integer quarterCount = insOrderMapper.selectNotSpotCheckOrder(item.getId(), quarterStartTime, quarterEndTime); if (quarterCount == 0) { String quarterMessage = item.getInspectionItemClass() + item.getInspectionItem() + item.getInspectionItemSubclass(); quarterMessageSet.add(quarterMessage); } break; case "3": // 年度 DateTime yearStart = DateUtil.beginOfQuarter(DateUtil.date()); String yearStartTime = yearStart.toString(formatTime); // 当月结束时间 DateTime yearEnd = DateUtil.endOfQuarter(DateUtil.date()); String yearEndTime = yearEnd.toString(formatTime); Integer yearCount = insOrderMapper.selectNotSpotCheckOrder(item.getId(), yearStartTime, yearEndTime); if (yearCount == 0) { String yearMessage = item.getInspectionItemClass() + item.getInspectionItem() + item.getInspectionItemSubclass(); yearMessageSet.add(yearMessage); } break; } } } } String message = ""; if (CollectionUtils.isNotEmpty(monthMessageSet)) { message += StrUtil.format("<p>检验项<span style=\"color: red\">{}</span>当月还未进行抽样检测, 请查看是否需要添加当前检验项</p>", CollUtil.join(monthMessageSet, ", ")); } if (CollectionUtils.isNotEmpty(quarterMessageSet)) { message += StrUtil.format("<p>检验项<span style=\"color: red\">{}</span>当前季度还未进行抽样检测, 请看是否需要添加当前检验项</p>", CollUtil.join(quarterMessageSet, ", ")); } if (CollectionUtils.isNotEmpty(yearMessageSet)) { message += StrUtil.format("<p>检验项<span style=\"color: red\">{}</span>今年还未进行抽样检测, 请看是否需要添加当前检验项</p>", CollUtil.join(yearMessageSet, ", ")); } if (StringUtils.isNotBlank(message)) { return Result.success(false, message); } } return Result.success(true); } } inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
@@ -135,7 +135,8 @@ product.setTemplate(null); product.setStyle(null); return product; }).collect(Collectors.toList()); }).sorted((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort()) - (o2.getSort() == null ? 0 : o2.getSort())).collect(Collectors.toList()); return insProducts; } inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -455,4 +455,18 @@ GROUP BY io.id,type order by type desc,io.id desc </select> <!-- 查询当前时间是否有该检测项的抽样计划订单 --> <select id="selectNotSpotCheckOrder" resultType="java.lang.Integer"> select count(*) from (select io.id from ins_product ip left join ins_sample is2 on is2.id = ip.ins_sample_id left join ins_order io on io.id = is2.ins_order_id left join spot_check_quarter_item scqi on scqi.quarter_item_id = io.quarter_item_id where io.quarter_item_id is not null and scqi.spot_check_time between #{startTime} and #{endTime} and ip.structure_item_parameter_id = #{itmeId} group by io.id) a </select> </mapper> inspect-server/src/main/resources/static/report-template.docxBinary files differ