From 61f34419e094f2363276d614a960b379cc456482 Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期二, 20 五月 2025 10:37:15 +0800 Subject: [PATCH] 业务代码合并 --- inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 387 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 245 insertions(+), 142 deletions(-) diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java index abb2686..ca9a5a9 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java +++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.inspect.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; @@ -8,34 +10,34 @@ import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; -import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; 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.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.*; +import com.ruoyi.common.utils.api.IfsApiUtils; import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.inspect.dto.*; import com.ruoyi.inspect.mapper.*; import com.ruoyi.inspect.pojo.*; import com.ruoyi.inspect.service.InsOrderService; +import com.ruoyi.inspect.service.InsOrderStateService; import com.ruoyi.inspect.service.InsProductService; import com.ruoyi.inspect.service.InsSampleService; import com.ruoyi.inspect.vo.InsOrderPrintingVo; -import com.ruoyi.inspect.vo.SampleDefectsFatherVo; -import com.ruoyi.system.mapper.CustomMapper; import com.ruoyi.system.mapper.UserMapper; import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; @@ -47,6 +49,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.Month; @@ -70,25 +73,23 @@ private InsSampleMapper insSampleMapper; private InsProductService insProductService; private InsProductMapper insProductMapper; - private InsProductUserMapper insProductUserMapper; private InsSampleUserMapper insSampleUserMapper; - private InsOrderStateMapper insOrderStateMapper; + private InsOrderStateService insOrderStateService; private UserMapper userMapper; private IfsInventoryQuantityMapper ifsInventoryQuantityMapper; - private CustomMapper customMapper; private final NumberGenerator<InsOrder> numberGenerator; private InsReportMapper insReportMapper; private InsUnqualifiedRetestProductMapper insUnqualifiedRetestProductMapper; private IfsApiUtils ifsApiUtils; private SpotCheckQuarterItemMapper spotCheckQuarterItemMapper; private StandardProductListMapper standardProductListMapper; + private StructureItemParameterMapper structureItemParameterMapper; //鑾峰彇妫�楠屼笅鍗曟暟鎹� @Override public IPage<SampleOrderDto> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto) { - //todo: 鍙湅鎴戝垽鏂叏閮�,涓汉,缁勭粐鐨勬潈闄� String laboratory = null; // 鍒ゆ柇鏄惁鏄叏閮� String isOrderAll = null; @@ -96,11 +97,15 @@ isOrderAll = "1"; sampleOrderDto.setState(null); } - IPage<SampleOrderDto> sampleOrderDtoIPage = insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); } + /** + * 鍒嗛厤妫�楠屼汉 + * + * @return + */ @Override @Transactional(rollbackFor = Exception.class) public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId, String sonLaboratory) { @@ -109,13 +114,15 @@ insOrder.setAppointed(StringUtils.isNotEmpty(appointed) ? LocalDate.parse(appointed) : null); insOrder.setSendTime(LocalDateTime.now()); insOrderMapper.updateById(insOrder); - List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId)); - List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList()); + List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)); + List<Integer> ids = insSamples.stream().map(InsSample::getId).collect(Collectors.toList()); List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() .in(InsProduct::getInsSampleId, ids) .eq(InsProduct::getState, 1) .select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory)); - for (InsProduct insProduct : insProducts) { + + // 鎵归噺娣诲姞妫�楠屼换鍔$姸鎬佽〃 + List<InsOrderState> insOrderStateList = insProducts.stream().map(insProduct -> { InsOrderState insOrderState = new InsOrderState(); insOrderState.setInsOrderId(orderId); try { @@ -124,8 +131,10 @@ throw new ErrorException("璇ユ楠屽崟鏈夋湭缁存姢瀹為獙瀹ょ殑妫�楠岄」鐩�"); } insOrderState.setInsState(0); - insOrderStateMapper.insert(insOrderState); - } + return insOrderState; + }).collect(Collectors.toList()); + insOrderStateService.saveBatch(insOrderStateList); + if (userId != null) { InsSampleUser insSampleUser = new InsSampleUser(); insSampleUser.setState(0); @@ -145,12 +154,63 @@ spotCheckQuarterItem.setSamplingUser(user.getName()); spotCheckQuarterItemMapper.updateById(spotCheckQuarterItem); } + return 1; + } + + + public static String getWeek(String dayStr) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + Date date = sdf.parse(dayStr); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); + int day = calendar.get(Calendar.DAY_OF_MONTH); + return getWeekDay(dayOfWeek); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static String getWeekDay(int dayOfWeek) { + switch (dayOfWeek) { + case Calendar.MONDAY: + return "鍛ㄤ竴"; + case Calendar.TUESDAY: + return "鍛ㄤ簩"; + case Calendar.WEDNESDAY: + return "鍛ㄤ笁"; + case Calendar.THURSDAY: + return "鍛ㄥ洓"; + case Calendar.FRIDAY: + return "鍛ㄤ簲"; + case Calendar.SATURDAY: + return "鍛ㄥ叚"; + case Calendar.SUNDAY: + return "鍛ㄦ棩"; + 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 @Transactional(rollbackFor = Exception.class) - public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder, List<List<Integer>> pairing) { + public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder) { // todo: 涓嬪崟鍒ゆ柇鎶芥牱璁″垝鐨勫敮涓�鎬� if (insOrder.getQuarterItemId() != null) { Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery() @@ -160,7 +220,6 @@ throw new ErrorException("璇ユ娊鏍疯鍒掑凡琚粦瀹氳繃"); } } - insOrder.setState(0); LocalDate appointed = insOrder.getAppointed(); @@ -286,9 +345,11 @@ .set(IfsInventoryQuantity::getInspectStatus, 0)); } + // 瀹℃牳妫�楠屽崟 upInsOrderOfState(insOrder); - upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�"); + // 鍒嗛厤妫�楠屼汉 + upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�"); // 鏍规嵁闆朵欢鍙峰垽鏂槸鍚︽槸杈呮潗 boolean isRaw = false; @@ -355,6 +416,9 @@ if (StringUtils.isBlank(product.getAsk()) || StringUtils.isBlank(product.getTell())) { throw new ErrorException("鏈夋楠岄」鐨勮姹傚�兼垨瑕佹眰鎻忚堪涓虹┖, 璇峰厛鍘绘爣鍑嗗簱閰嶇疆瑕佹眰鍊兼垨瑕佹眰鎻忚堪"); } + if (StringUtils.isBlank(product.getSonLaboratory())) { + throw new ErrorException("鏈夋楠岄」鐨勭殑瀛愬疄楠屽涓虹粦瀹�, 璇峰厛缁戝畾瀛愬疄楠屽"); + } insProductMapper.insert(product); } } @@ -379,6 +443,11 @@ return map; } + /** + * 瀹℃牳妫�楠屽崟 + * @param insOrder + * @return + */ @Override public int upInsOrderOfState(InsOrder insOrder) { insOrder.setExamineTime(LocalDateTime.now()); @@ -401,7 +470,7 @@ } // 鐢熸垚缂栧彿 String no = numberGenerator.generateNumberWithPrefix(3, - "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()), + "JCZX/NS-" + code + LimsDateUtil.resetDate(LocalDateTime.now()), InsOrder::getEntrustCode); // 鍒ゆ柇鏄惁鏄搴︽楠�, 鏄搴︽楠屽彇娑堝師鏉愭枡瀛e害妫�楠屼笅鍗� if (InsOrderTypeConstants.QUARTERLY_TEST.equals(order.getOrderType())) { @@ -446,16 +515,6 @@ Map<String, Object> map = new HashMap<>(); InsOrder insOrder = insOrderMapper.selectById(id); List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory); - for (SampleProductDto sampleProductDto : list) { - List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList()); - List<InsProductUser> insProductUsers = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery() - .in(InsProductUser::getInsProductId, ids)); - if (CollectionUtils.isNotEmpty(insProductUsers)) { - List<Integer> userIds = insProductUsers.stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList()); - String collect = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(",")); - sampleProductDto.setCheckName(collect); - } - } map.put("insOrder", insOrder); map.put("sampleProduct", list); //鏌ヨ鎵�鏈夎褰曟ā鐗堝幓閲� @@ -475,112 +534,12 @@ return productDto2IPage; } - @Override - public IPage<CostStatisticsDto> costStatistics(IPage<CostStatisticsDto> page, CostStatisticsDto costStatisticsDto) { - String dates = costStatisticsDto.getDates(); - String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); - costStatisticsDto.setDates(null); - - //todo:浠呯湅鑷繁 - - IPage<CostStatisticsDto> dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); - List<CostStatisticsDto> collect = dtoIPage.getRecords().stream().map(dto -> { - Set<String> uniqueTags = new HashSet<>(); - if (dto.getInspectionItem().contains(",")) { - for (String s : dto.getInspectionItem().split(",")) { - uniqueTags.add(s.split("@")[0]); - } - } else { - uniqueTags.add(dto.getInspectionItem().split("@")[0]); - } - dto.setInspectionItem(uniqueTags.toString()); - return dto; - }).collect(Collectors.toList()); - dtoIPage.setRecords(collect); - return dtoIPage; - } - - @Override - public Map<String, Object> costStatistics2(CostStatisticsDto costStatisticsDto) { - Map<String, Object> map = new HashMap<>(); - String dates = costStatisticsDto.getDates(); - String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); - costStatisticsDto.setDates(null); - List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); - double totalPrice = costStatisticsDtos.stream() - .filter(dto -> dto.getPrice() != null) // 杩囨护鎺変环鏍间负 null 鐨勫璞� - .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum()) - .sum(); - map.put("total", totalPrice); - return map; - } - - @Override - public Map<String, Object> selectSampleDefects(Page page, String inspectionItems, String orderNumber) { - List<SampleDefectsFatherVo> sampleDefectsFatherVos = insOrderMapper.selectSampleDefects(page, inspectionItems, orderNumber); - Map<String, Object> map = new HashMap<>(); - map.put("records", sampleDefectsFatherVos); - Long aLong = insOrderMapper.getCount(inspectionItems, orderNumber); - map.put("total", aLong); - return map; - } @Override public int updateStatus(Integer id) { return insOrderMapper.updateStatus(id); } - - @Override - public void export(CostStatisticsDto costStatisticsDto, HttpServletResponse response) throws IOException { - //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹� - String dates = costStatisticsDto.getDates(); - String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); - costStatisticsDto.setDates(null); - List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); - costStatisticsDtos = costStatisticsDtos.stream().map(dto -> { - Set<String> uniqueTags = new HashSet<>(); - if (dto.getInspectionItem().contains(",")) { - for (String s : dto.getInspectionItem().split(",")) { - uniqueTags.add(s.split("@")[0]); - } - } else { - uniqueTags.add(dto.getInspectionItem().split("@")[0]); - } - dto.setInspectionItem(uniqueTags.toString()); - return dto; - }).collect(Collectors.toList()); - - response.setContentType("application/vnd.ms-excel"); - response.setCharacterEncoding("UTF-8"); - // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 - String fileName = URLEncoder.encode("鏍峰搧璐圭敤缁熻瀵煎嚭", "UTF-8"); - response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); - Map<String, List<CostStatisticsDto>> groupByCompany = - costStatisticsDtos.stream().filter(e -> StrUtil.isNotEmpty(e.getCompany())) - .collect(Collectors.groupingBy(CostStatisticsDto::getCompany)); - try { - // 鏂板缓ExcelWriter - // 鏂板缓ExcelWriter - ExcelWriter excelWriter = - EasyExcel.write(response.getOutputStream()) - .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) - .build(); - for (Map.Entry<String, List<CostStatisticsDto>> companyDataEntry : groupByCompany.entrySet()) { - String sheetName = companyDataEntry.getKey(); - List<CostStatisticsDto> dataList = companyDataEntry.getValue(); - WriteSheet mainSheet = EasyExcel.writerSheet(sheetName) - .head(CostStatisticsDto.class) - .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) - .build(); - excelWriter.write(dataList, mainSheet); - } - // 鍏抽棴娴� - excelWriter.finish(); - } catch (IOException e) { - throw new RuntimeException("瀵煎嚭澶辫触"); - } - } /** * 鑾峰彇ifs搴撳瓨淇℃伅 @@ -664,7 +623,7 @@ ifsInventoryQuantity.setIsSource(1); ifsInventoryQuantity.setState(0); - IfsInventoryQuantity one = ifsInventoryQuantityMapper.selectOne(new LambdaQueryWrapper<IfsInventoryQuantity>() + Long count = ifsInventoryQuantityMapper.selectCount(new LambdaQueryWrapper<IfsInventoryQuantity>() .eq(IfsInventoryQuantity::getOrderNo, ifsInventoryQuantity.getOrderNo()) .eq(IfsInventoryQuantity::getLineNo, ifsInventoryQuantity.getLineNo()) .eq(IfsInventoryQuantity::getReleaseNo, ifsInventoryQuantity.getReleaseNo()) @@ -676,8 +635,7 @@ .eq(IfsInventoryQuantity::getWaivDevRejNo, ifsInventoryQuantity.getWaivDevRejNo()) .eq(IfsInventoryQuantity::getActivitySeq, ifsInventoryQuantity.getActivitySeq()) ); - if(Objects.isNull(one)) { - + if(count == 0) { ifsInventoryQuantity.setIsFirst(0); // 鏌ヨ浜т笟閾炬娴嬫暟鎹� String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(), @@ -917,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()); } @@ -952,7 +914,8 @@ // 鏌ヨ鏍囧噯鏍� List<StandardProductList> standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery() .eq(StandardProductList::getStandardMethodListId, insProduct.getStandardMethodListId()) - .eq(StandardProductList::getTree, tree)); + .eq(StandardProductList::getTree, tree) + .orderByAsc(StandardProductList::getSort)); for (StandardProductList standardProductList : standardProductLists) { standardProductList.setId(null); } @@ -977,6 +940,7 @@ product.setCreateUser(null); product.setUpdateTime(null); product.setUpdateUser(null); + product.setSection(null); product.setInsSampleId(omitOrderProductDto.getInsSampleId()); if (StringUtils.isBlank(product.getCableTag())) { product.setCableTag(null); @@ -1001,16 +965,21 @@ */ @Override public void rawAllInsOrderExport(SampleOrderDto sampleOrderDto, HttpServletResponse response) { - //鍒ゆ柇鍏ㄩ儴,涓汉,缁勭粐鐨勬潈闄� - //todo:浠呯湅鎴戣幏鍙栧綋鍓嶄汉鎵�灞炲疄楠屽id - String laboratory = null; - // 鍒ゆ柇鏄惁鏄叏閮� - String isOrderAll = null; - if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) { - isOrderAll = "1"; - sampleOrderDto.setState(null); + List<SampleOrderDto> sampleOrderDtoList = new ArrayList<>(); + if (StringUtils.isNotBlank(sampleOrderDto.getIds())) { + List<String> orderIds = StrUtil.split(sampleOrderDto.getIds(), ","); + sampleOrderDtoList = insOrderMapper.getInsOrderExportByIds(orderIds); + } else { + String laboratory = null; + // 鍒ゆ柇鏄惁鏄叏閮� + String isOrderAll = null; + if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) { + isOrderAll = "1"; + sampleOrderDto.setState(null); + } + sampleOrderDto.setIds(null); + sampleOrderDtoList = insOrderMapper.rawAllInsOrderExport(QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); } - List<SampleOrderDto> sampleOrderDtoList = insOrderMapper.rawAllInsOrderExport(QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); // 鍒ゆ柇鏄惁鏄笉鍚堟牸, 涓嶅悎鏍兼煡璇笉鍚堟牸椤� for (SampleOrderDto orderDto : sampleOrderDtoList) { @@ -1043,6 +1012,140 @@ } } + /** + * 淇敼鏍峰搧鍨嬪彿 + * @param insSample + */ + @Override + public void updateSampleModel(InsSample insSample) { + // 鍒ゆ柇褰撳墠璁㈠崟鏄惁鐢熸垚浜嗘姤鍛�, 鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀瑰崟鍙� + Long count = insReportMapper.selectCount(Wrappers.<InsReport>lambdaQuery() + .eq(InsReport::getInsOrderId, insSample.getInsOrderId())); + if (count > 0 ) { + throw new ErrorException("褰撳墠璁㈠崟宸茬粡鐢熸垚浜嗘姤鍛婁笉鑳戒慨鏀圭紪鍙�"); + } + + insSampleService.update(Wrappers.<InsSample>lambdaUpdate() + .eq(InsSample::getId, insSample.getId()) + .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()); + + // 鏌ヨ妫�楠岄」鍩虹琛�, 鏌ヨ鏄惁鏈夋湀搴�, 瀛e害, 骞村害鐨勬楠岄」 + 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": // 瀛e害 + 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>褰撳墠瀛e害杩樻湭杩涜鎶芥牱妫�娴�, 璇风湅鏄惁闇�瑕佹坊鍔犲綋鍓嶆楠岄」</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); + + } + } -- Gitblit v1.9.3