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/InsOrderService.java | 9 + inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java | 6 inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java | 10 + inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java | 2 inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderPlanService.java | 3 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java | 6 + inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto.java | 4 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java | 3 inspect-server/src/main/resources/mapper/InsOrderMapper.xml | 14 ++ inspect-server/src/main/java/com/ruoyi/inspect/dto/SaveInsContextDto.java | 22 ++- inspect-server/src/main/resources/static/report-template.docx | 0 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java | 187 +++++++++++++++++++++++-------- inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 63 +++++----- 13 files changed, 233 insertions(+), 96 deletions(-) diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java index 880fad5..5e20dcd 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java +++ b/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()); + } + } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java index 48acce4..7ef8737 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java +++ b/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))); } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto.java index 1ccf266..87e9b9a 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SampleProductDto.java +++ b/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; diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SaveInsContextDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SaveInsContextDto.java index f2e0ee7..ee4bd28 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SaveInsContextDto.java +++ b/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; } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java index 94a172a..7c91fc1 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java +++ b/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); } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderPlanService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderPlanService.java index b2b200d..1caa282 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderPlanService.java +++ b/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); diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java index a0a8192..ab022c5 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java +++ b/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); } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java index 3ac468f..357d1c7 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java +++ b/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); } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java index 68ad415..8d29eee 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java +++ b/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); + } } 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 a1d32e7..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 @@ -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()); + + // 鏌ヨ妫�楠岄」鍩虹琛�, 鏌ヨ鏄惁鏈夋湀搴�, 瀛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); + + } + } diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java index 6654ad3..2f7409b 100644 --- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java +++ b/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; } diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml index ad38e37..78234d5 100644 --- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml +++ b/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> diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx index 8b2b220..0502472 100644 --- a/inspect-server/src/main/resources/static/report-template.docx +++ b/inspect-server/src/main/resources/static/report-template.docx Binary files differ -- Gitblit v1.9.3