feat(inspect): 完善检验订单状态管理和样品接收流程
- 更新订单状态枚举,新增已检验(4)和作废(5)状态
- 添加分包内容、分包单位、样品处置、结果评价、报告交付等委托要求字段
- 优化报告生成中的日期格式化逻辑和设备清单显示
- 添加委托要求必填校验和字段联动验证
- 实现新聚下单免审核直接进入样品接收流程
- 修复报告审核和批准人为同一人时的冲突检查
- 优化样品查询中的实验室参数过滤逻辑
- 更新CNAS流程中样品处置记录的数据源和处理逻辑
| | |
| | | continue; |
| | | } |
| | | Integer row = cell.getInteger("r"); |
| | | String item = value.getString("v"); |
| | | if (!StringUtils.hasText(item)) { |
| | | item = value.getString("m"); |
| | | } |
| | | String item = getCellText(value); |
| | | if (row == null || !StringUtils.hasText(item)) { |
| | | throw new BaseException("âæ£éªé¡¹âæ è®°æå¨åå
æ ¼å¿
须填忣éªé¡¹åç§°"); |
| | | } |
| | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 读å Luckysheet åå
æ ¼ææ¬ï¼å
¼å®¹æ®éææ¬å inlineStr 坿æ¬ã |
| | | */ |
| | | private static String getCellText(JSONObject value) { |
| | | String text = value.getString("v"); |
| | | if (StringUtils.hasText(text)) { |
| | | return text; |
| | | } |
| | | text = value.getString("m"); |
| | | if (StringUtils.hasText(text)) { |
| | | return text; |
| | | } |
| | | |
| | | JSONObject cellType = value.getJSONObject("ct"); |
| | | JSONArray segments = cellType == null ? null : cellType.getJSONArray("s"); |
| | | if (segments == null || segments.isEmpty()) { |
| | | return text; |
| | | } |
| | | StringBuilder richText = new StringBuilder(); |
| | | for (Object segmentObject : segments) { |
| | | if (segmentObject instanceof JSONObject) { |
| | | String segmentText = ((JSONObject) segmentObject).getString("v"); |
| | | if (segmentText != null) { |
| | | richText.append(segmentText); |
| | | } |
| | | } |
| | | } |
| | | return richText.toString(); |
| | | } |
| | | |
| | | private static boolean isInspectionItem(JSONObject value) { |
| | | JSONObject ps = value.getJSONObject("ps"); |
| | | return ps != null && INSPECTION_ITEM_MARK.equals(ps.getString("value")); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.process.listener; |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.inspect.event.NewJuOrderPlacedEvent; |
| | | import com.ruoyi.inspect.pojo.InsOrder; |
| | | import com.ruoyi.inspect.service.InsOrderService; |
| | | import com.ruoyi.process.mapper.InspectionOrderMapper; |
| | | import com.ruoyi.process.pojo.InspectionOrder; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.context.event.EventListener; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | /** |
| | | * æ°èæåä¸åæååï¼èªå¨çæä¸æ¡æ£éªå§æåã |
| | | */ |
| | | @Component |
| | | @AllArgsConstructor |
| | | public class NewJuOrderInspectionListener { |
| | | |
| | | private final InsOrderService insOrderService; |
| | | private final InspectionOrderMapper inspectionOrderMapper; |
| | | |
| | | @EventListener |
| | | public void onNewJuOrderPlaced(NewJuOrderPlacedEvent event) { |
| | | InsOrder order = insOrderService.getById(event.getInsOrderId()); |
| | | if (order == null) { |
| | | return; |
| | | } |
| | | // å¹çï¼å䏿å订åå·²ææ£éªå§æååè·³è¿ |
| | | Long count = inspectionOrderMapper.selectCount(Wrappers.<InspectionOrder>lambdaQuery() |
| | | .eq(InspectionOrder::getInsOrderId, order.getId())); |
| | | if (count > 0) { |
| | | return; |
| | | } |
| | | InspectionOrder inspectionOrder = new InspectionOrder(); |
| | | inspectionOrder.setInsOrderId(order.getId()); |
| | | inspectionOrder.setEntrustCode(order.getEntrustCode()); |
| | | // è¯æ ·åç§°ä¼å
忥åå±ç¤ºå段 |
| | | inspectionOrder.setSampleName(StringUtils.isNotBlank(order.getSampleView()) |
| | | ? order.getSampleView() : order.getSample()); |
| | | inspectionOrder.setProduction(order.getProduction()); |
| | | inspectionOrder.setQuantity(order.getTestQuantity()); |
| | | inspectionOrder.setCommissionDate(LocalDate.now()); |
| | | inspectionOrder.setCommissionUnit(order.getCompany()); |
| | | inspectionOrder.setCommissionUser(order.getPrepareUser()); |
| | | inspectionOrder.setCommissionPhone(order.getPhone()); |
| | | inspectionOrder.setSampleStatus("å®å¥½"); |
| | | // æ¯å¦çæ ·è¯ä¹è½¬æ¢ï¼ins 0å¦/1æ¯ -> cnas 1æ¯/2å¦ |
| | | inspectionOrder.setIsLeave(Integer.valueOf(1).equals(order.getIsLeave()) ? 1 : 2); |
| | | // æ ·åå¤ç½®ï¼1å§ææ¹åå/2æ£æµæ¹å¤ç½® -> processing 0å§æåä½åå/1å®éªå®¤å¤çï¼æªéæ¶æ²¿ç¨æ§å段 |
| | | if (Integer.valueOf(1).equals(order.getSampleDisposal())) { |
| | | inspectionOrder.setProcessing(0); |
| | | } else if (Integer.valueOf(2).equals(order.getSampleDisposal())) { |
| | | inspectionOrder.setProcessing(1); |
| | | } else { |
| | | inspectionOrder.setProcessing(order.getProcessing()); |
| | | } |
| | | // æ¥åäº¤ä»æ¹å¼ï¼1èªå -> send 1ï¼å
¶ä½ 0ï¼æªéæ¶æ²¿ç¨æ§å段 |
| | | if (order.getReportDelivery() != null) { |
| | | inspectionOrder.setSend(Integer.valueOf(1).equals(order.getReportDelivery()) ? 1 : 0); |
| | | } else { |
| | | inspectionOrder.setSend(order.getSend()); |
| | | } |
| | | // æ¥åæä»¶ä¸çº¦å®æ¶é´çææ¶ä¸ºç©ºï¼åç»å¨æ£éªå§æå页é¢ç¼è¾/ä¸ä¼ |
| | | inspectionOrderMapper.insert(inspectionOrder); |
| | | } |
| | | } |
| | |
| | | public class ProcessDeal implements Serializable { |
| | | |
| | | |
| | | @ApiModelProperty("主é®") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate dealTime; |
| | | |
| | | @ApiModelProperty("å建人") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Integer createUser; |
| | | |
| | | @ApiModelProperty("æ´æ°äºº") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Integer updateUser; |
| | | |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty("æ´æ°æ¶é´") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private LocalDateTime updateTime; |
| | | |
| | | @ApiModelProperty("å
³èçå岿»è¡¨id") |
| | | private Integer totaldealId; |
| | | |
| | | @ApiModelProperty("å
³èçæ ·åæ¥æ¶id") |
| | | @ApiModelProperty("å
³èçåå²å¤ç½®æ ·åid") |
| | | private Integer processSampleId; |
| | | |
| | | @ApiModelProperty("å
³èçæ£éªæ ·åid(ins_sample)") |
| | | private Integer insSampleId; |
| | | } |
| | |
| | | import com.ruoyi.common.utils.QueryWrappers; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.framework.exception.ErrorException; |
| | | import com.ruoyi.inspect.mapper.InsOrderMapper; |
| | | import com.ruoyi.inspect.mapper.InsSampleMapper; |
| | | import com.ruoyi.inspect.mapper.InsSampleReceiptMapper; |
| | | import com.ruoyi.inspect.pojo.InsOrder; |
| | | import com.ruoyi.inspect.pojo.InsSample; |
| | | import com.ruoyi.inspect.pojo.InsSampleReceipt; |
| | | import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; |
| | | import com.ruoyi.inspect.util.UserUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import com.ruoyi.process.dto.ProcessDealDto; |
| | | import com.ruoyi.process.mapper.InspectionOrderMapper; |
| | | import com.ruoyi.process.mapper.ProcessDealMapper; |
| | | import com.ruoyi.process.mapper.ProcessSampleMapper; |
| | | import com.ruoyi.process.mapper.ProcessTotaldealMapper; |
| | | import com.ruoyi.process.pojo.InspectionOrder; |
| | | import com.ruoyi.process.pojo.ProcessDeal; |
| | | import com.ruoyi.process.pojo.ProcessSample; |
| | | import com.ruoyi.process.pojo.ProcessTotaldeal; |
| | | import com.ruoyi.process.service.ProcessDealService; |
| | | import com.ruoyi.process.service.ProcessTotaldealService; |
| | |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Paths; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.YearMonth; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | private ProcessTotaldealMapper processTotaldealMapper; |
| | | |
| | | @Resource |
| | | private ProcessSampleMapper processSampleMapper; |
| | | |
| | | @Resource |
| | | private ProcessDealService processDealService; |
| | | |
| | | @Resource |
| | | private InspectionOrderMapper inspectionOrderMapper; |
| | | |
| | | @Resource |
| | | private ProcessDealMapper processDealMapper; |
| | |
| | | |
| | | @Resource |
| | | private UserMapper userMapper; |
| | | |
| | | @Resource |
| | | private InsOrderMapper insOrderMapper; |
| | | |
| | | @Resource |
| | | private InsSampleMapper insSampleMapper; |
| | | |
| | | @Resource |
| | | private InsSampleReceiptMapper insSampleReceiptMapper; |
| | | |
| | | @Override |
| | | public IPage<ProcessTotaldeal> pageProcessTotaldeal(Page page, ProcessTotaldeal processTotaldeal) { |
| | |
| | | |
| | | @Override |
| | | public int addProcessTotaldeal(String month) { |
| | | //æ°å¢æ»è¡¨ |
| | | ProcessTotaldeal processTotaldeal = new ProcessTotaldeal(); |
| | | //æ°å¢æ»è¡¨ï¼å䏿份å¤ç¨å·²ææ»è¡¨ï¼ |
| | | ProcessTotaldeal processTotaldeal; |
| | | List<ProcessTotaldeal> processTotaldeals = processTotaldealMapper.selectList(Wrappers.<ProcessTotaldeal>lambdaQuery() |
| | | .eq(ProcessTotaldeal::getMonth, month)); |
| | | if (processTotaldeals.size()<=0) { |
| | | processTotaldeal = new ProcessTotaldeal(); |
| | | processTotaldeal.setMonth(month);//æä»½ |
| | | processTotaldeal.setSubmitState("å¾
æäº¤"); |
| | | processTotaldealMapper.insert(processTotaldeal); |
| | | }else { |
| | | processTotaldeal=processTotaldeals.get(0); |
| | | } |
| | | //æ°å¢è¯¦æ
表 |
| | | //1.è·å该æä»½ç第ä¸å¤©åæåä¸å¤© |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); |
| | | YearMonth yearMonth = YearMonth.parse(month, formatter); |
| | | LocalDate firstDay = yearMonth.atDay(1); |
| | | LocalDate lastDay = yearMonth.atEndOfMonth(); |
| | | //2.æ¥è¯¢å¨è¿ä¸ªæ¶é´èå´å
çæææ ·åç»è®°çæ°æ® |
| | | List<ProcessSample> processSamples = processSampleMapper.selectList(Wrappers.<ProcessSample>lambdaQuery() |
| | | .between(ProcessSample::getLeaveDate, firstDay, lastDay)); |
| | | if (processSamples.size()>0){ |
| | | //è·åå¤çæ¹å¼ |
| | | InspectionOrder inspectionOrder = inspectionOrderMapper.selectById(processSamples.get(0).getInspectionOrderId()); |
| | | LocalDateTime startTime = yearMonth.atDay(1).atStartOfDay(); |
| | | LocalDateTime endTime = yearMonth.atEndOfMonth().atTime(LocalTime.MAX); |
| | | //2.该æä¸åçå§æåï¼æé¤åææï¼typeSource 为空è§ä¸ºæåï¼ |
| | | List<InsOrder> orders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery() |
| | | .ge(InsOrder::getCreateTime, startTime) |
| | | .le(InsOrder::getCreateTime, endTime)); |
| | | if (orders.isEmpty()) { |
| | | return 0; |
| | | } |
| | | //3.åªä¿çå·²çææ ·åæ¥æ¶è®°å½çå§æï¼å·²å®¡æ ¸åçï¼ |
| | | List<Integer> orderIds = orders.stream().map(InsOrder::getId).collect(Collectors.toList()); |
| | | List<InsSampleReceipt> receipts = insSampleReceiptMapper.selectList(Wrappers.<InsSampleReceipt>lambdaQuery() |
| | | .in(InsSampleReceipt::getInsOrderId, orderIds)); |
| | | Set<Integer> receiptOrderIds = receipts.stream().map(InsSampleReceipt::getInsOrderId).collect(Collectors.toSet()); |
| | | Map<Integer, InsOrder> orderMap = orders.stream() |
| | | .filter(order -> !Integer.valueOf(1).equals(order.getTypeSource())) |
| | | .filter(order -> receiptOrderIds.contains(order.getId())) |
| | | .collect(Collectors.toMap(InsOrder::getId, order -> order, (a, b) -> a)); |
| | | if (orderMap.isEmpty()) { |
| | | return 0; |
| | | } |
| | | //4.姿坹åºçæ ·å |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() |
| | | .in(InsSample::getInsOrderId, orderMap.keySet())); |
| | | if (samples.isEmpty()) { |
| | | return 0; |
| | | } |
| | | //5.å·²è¿å
¥ä»»ä½å¤ç½®æ¹æ¬¡çæ ·åè·³è¿ï¼è·¨æä¹ä¸ä¼éå¤å¸¦å
¥ï¼ |
| | | List<Integer> sampleIds = samples.stream().map(InsSample::getId).collect(Collectors.toList()); |
| | | Set<Integer> dealtSampleIds = processDealService.list(Wrappers.<ProcessDeal>lambdaQuery() |
| | | .select(ProcessDeal::getInsSampleId) |
| | | .in(ProcessDeal::getInsSampleId, sampleIds)) |
| | | .stream().map(ProcessDeal::getInsSampleId).filter(Objects::nonNull).collect(Collectors.toSet()); |
| | | List<ProcessDeal> processDeals = new ArrayList<>(); |
| | | for (ProcessSample processSample : processSamples) { |
| | | long count = processDealService.count(Wrappers.<ProcessDeal>lambdaQuery().eq(ProcessDeal::getProcessSampleId, processSample.getId())); |
| | | if (count>0){ |
| | | for (InsSample insSample : samples) { |
| | | if (dealtSampleIds.contains(insSample.getId())) { |
| | | continue; |
| | | } |
| | | InsOrder order = orderMap.get(insSample.getInsOrderId()); |
| | | ProcessDeal processDeal = new ProcessDeal(); |
| | | processDeal.setSampleName(processSample.getSampleName());//æ ·ååç§° |
| | | processDeal.setSampleCode(processSample.getSampleCode());//æ ·åç¼å· |
| | | processDeal.setSampleSupplier(processSample.getSampleSupplier());//便 ·åä½ |
| | | processDeal.setNum(processSample.getNum());//æ ·åæ°é |
| | | processDeal.setDealMethod(inspectionOrder.getProcessing()==1?"å®éªå®¤å¤ç":"å§æåä½åå");//å¤çæ¹å¼ |
| | | //æ ·ååç§°ä¼å
忥åå±ç¤ºå段 |
| | | processDeal.setSampleName(order != null && StringUtils.isNotBlank(order.getSampleView()) |
| | | ? order.getSampleView() : insSample.getSample()); |
| | | processDeal.setSampleCode(insSample.getSampleCode());//æ ·åç¼å· |
| | | processDeal.setSampleSupplier(order == null ? null : order.getCompany());//便 ·åä½=å§æåä½ |
| | | processDeal.setNum(insSample.getQuantity() == null ? 1 : insSample.getQuantity());//æ ·åæ°é |
| | | processDeal.setDealMethod(resolveDealMethod(order));//å¤çæ¹å¼=ä¸åæ¶éæ©çæ ·åå¤ç½® |
| | | processDeal.setDealTime(LocalDate.now());//æ¶é´=å½åæ¶é´ |
| | | processDeal.setTotaldealId(processTotaldeal.getId());//æ»è¡¨id |
| | | processDeal.setProcessSampleId(processSample.getId());//æ ·åæ¥æ¶id |
| | | processDeal.setInsSampleId(insSample.getId());//æ£éªæ ·åid |
| | | processDeals.add(processDeal); |
| | | } |
| | | if (!processDeals.isEmpty()) { |
| | | processDealService.saveBatch(processDeals); |
| | | } |
| | | return 0; |
| | | return processDeals.size(); |
| | | } |
| | | |
| | | /** |
| | | * å¤çæ¹å¼ï¼ä¸åæ¶çæ ·åå¤ç½® 1å§ææ¹åå 2æ£æµæ¹å¤ç½®ï¼åå²åæ è¯¥åæ®µæ¶åéæ§çå¤çæ¹å¼å段 |
| | | */ |
| | | private String resolveDealMethod(InsOrder order) { |
| | | if (order == null) { |
| | | return StringUtils.EMPTY; |
| | | } |
| | | if (Integer.valueOf(1).equals(order.getSampleDisposal())) { |
| | | return "å§æåä½åå"; |
| | | } |
| | | if (Integer.valueOf(2).equals(order.getSampleDisposal())) { |
| | | return "å®éªå®¤å¤ç"; |
| | | } |
| | | return Integer.valueOf(1).equals(order.getProcessing()) ? "å®éªå®¤å¤ç" : "å§æåä½åå"; |
| | | } |
| | | |
| | | @Override |
| | |
| | | @ApiOperation(value = "æ£éªåé
") |
| | | @PostMapping("/upInsOrder") |
| | | public Result<?> upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId,String sonLaboratory) { |
| | | return Result.success(insOrderService.upInsOrder(orderId, sampleId, appointed, userId,sonLaboratory)); |
| | | return Result.fail("è¯·å¨æ ·åæ¥æ¶é¡µé¢éæ©ä¸»æ£éªäººåæäº¤æ£éª"); |
| | | } |
| | | |
| | | @ApiOperation(value = "æ·»å æ£éªä¸åæ°æ®") |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.controller; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.core.domain.Result; |
| | | import com.ruoyi.inspect.dto.SampleReceiptActionDto; |
| | | import com.ruoyi.inspect.dto.SampleReceiptQueryDto; |
| | | import com.ruoyi.inspect.service.InsSampleReceiptService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | @RestController |
| | | @RequestMapping("/insSampleReceipt") |
| | | @Api(tags = "æ ·åæ¥æ¶") |
| | | @AllArgsConstructor |
| | | public class InsSampleReceiptController { |
| | | private final InsSampleReceiptService insSampleReceiptService; |
| | | |
| | | @ApiOperation("æ ·åæ¥æ¶å页") |
| | | @GetMapping("/page") |
| | | public Result page(Page<?> page, SampleReceiptQueryDto query) { |
| | | return Result.success(insSampleReceiptService.page(page, query)); |
| | | } |
| | | |
| | | @ApiOperation("æ ·åæ¥æ¶è¯¦æ
") |
| | | @GetMapping("/{id}") |
| | | public Result detail(@PathVariable Integer id) { |
| | | return Result.success(insSampleReceiptService.detail(id)); |
| | | } |
| | | |
| | | @ApiOperation("æäº¤æ£éª") |
| | | @PostMapping("/submit") |
| | | public Result submit(@RequestBody SampleReceiptActionDto dto) { |
| | | insSampleReceiptService.submit(dto); |
| | | return Result.success(); |
| | | } |
| | | |
| | | @ApiOperation("ææ¶æ ·å") |
| | | @PostMapping("/reject") |
| | | public Result reject(@RequestBody SampleReceiptActionDto dto) { |
| | | insSampleReceiptService.reject(dto); |
| | | return Result.success(); |
| | | } |
| | | |
| | | @ApiOperation("æ ·åæ¥æ¶å¯¼åº") |
| | | @GetMapping("/export") |
| | | public void export(SampleReceiptQueryDto query, HttpServletResponse response) { |
| | | insSampleReceiptService.export(query, response); |
| | | } |
| | | } |
| | |
| | | @ApiModelProperty("æ ·ååå·") |
| | | private String sampleModel; |
| | | |
| | | @ApiModelProperty("ææ´¾æ£éªäººid") |
| | | private String assign; |
| | | |
| | | @ExcelProperty(index = 4, value = "æ ·åæ°é") |
| | |
| | | @ApiModelProperty("æ¥åid") |
| | | private String reportId; |
| | | |
| | | @ApiModelProperty("ç³»ç»çææ¥åå°å") |
| | | @TableField("`url`") |
| | | private String url; |
| | | |
| | | @ApiModelProperty("æå¨ä¸ä¼ æ¥åå°å") |
| | | private String urlS; |
| | | |
| | | @ApiModelProperty("ä¸å人å§å") |
| | | private String name; |
| | | |
| | | @ExcelProperty(index = 5, value = "æ£éªäºº") |
| | |
| | | @ApiModelProperty("åå®éªå®¤") |
| | | private String sonLaboratory; |
| | | |
| | | @ApiModelProperty("æ ·ååç§°ï¼åææåæ ·ååæ®µï¼æå忥åå±ç¤ºå段ï¼") |
| | | private String sampleStr; |
| | | |
| | | |
| | |
| | | @ApiModelProperty("订åid(导åºç¨)") |
| | | private String ids; |
| | | |
| | | @ApiModelProperty("ææ¶åå ") |
| | | private String sampleRejectRemark; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.dto; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class SampleReceiptActionDto { |
| | | |
| | | @ApiModelProperty("æ ·åæ¥æ¶è®°å½ID") |
| | | private Integer receiptId; |
| | | |
| | | @ApiModelProperty("主æ£éªäººID") |
| | | private Integer mainInspectorId; |
| | | |
| | | @ApiModelProperty("æ¥æ¶å¤æ³¨ï¼ææ¶æ¶ä¸ºææ¶å¤æ³¨") |
| | | private String remark; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.dto; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @ExcelIgnoreUnannotated |
| | | public class SampleReceiptPageDto { |
| | | |
| | | @ApiModelProperty("æ ·åæ¥æ¶è®°å½ID") |
| | | private Integer receiptId; |
| | | @ApiModelProperty("å§æåID") |
| | | private Integer orderId; |
| | | @ApiModelProperty("æ ·åID") |
| | | private Integer sampleId; |
| | | @ApiModelProperty("æ ·åæ¥æ¶ç¶æ 0å¾
æ¥æ¶ 1å·²æäº¤æ£éª 2å·²ææ¶ 3已忶") |
| | | private Integer status; |
| | | @ExcelProperty(value = "æ ·ååç§°", index = 0) |
| | | @ApiModelProperty("æ ·ååç§°") |
| | | private String sampleName; |
| | | @ExcelProperty(value = "æ ·åç¼å·", index = 1) |
| | | @ApiModelProperty("æ ·åç¼å·") |
| | | private String sampleCode; |
| | | @ExcelProperty(value = "æ£æµé¡¹ç®", index = 2) |
| | | @ApiModelProperty("æ£æµé¡¹ç®") |
| | | private String inspectionItem; |
| | | @ExcelProperty(value = "å§æç¼å·", index = 3) |
| | | @ApiModelProperty("å§æç¼å·") |
| | | private String entrustCode; |
| | | @ExcelProperty(value = "æ¹æ³æ å", index = 4) |
| | | @ApiModelProperty("æ¹æ³æ å") |
| | | private String methodStandard; |
| | | @ApiModelProperty("主æ£éªäººID") |
| | | private Integer mainInspectorId; |
| | | @ExcelProperty(value = "主æ£äººç¾å", index = 5) |
| | | @ApiModelProperty("主æ£éªäººå§å") |
| | | private String mainInspectorName; |
| | | @ExcelProperty(value = "夿³¨", index = 6) |
| | | @ApiModelProperty("æ¥æ¶å¤æ³¨") |
| | | private String remark; |
| | | @ExcelProperty(value = "ææ¶å¤æ³¨", index = 7) |
| | | @ApiModelProperty("ææ¶å¤æ³¨") |
| | | private String rejectRemark; |
| | | @ApiModelProperty("æ¥æ¶å¤çæ¶é´") |
| | | private LocalDateTime receiveTime; |
| | | @ApiModelProperty("æ¥æ¶å¤ç人") |
| | | private String receiveUserName; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.dto; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class SampleReceiptQueryDto { |
| | | |
| | | @ApiModelProperty("æ ·åæ¥æ¶ç¶æ 0å¾
æ¥æ¶ 1å·²æäº¤æ£éª 2å·²ææ¶ 3已忶") |
| | | private Integer status; |
| | | @ApiModelProperty("å§æç¼å·") |
| | | private String entrustCode; |
| | | @ApiModelProperty("æ ·åç¼å·") |
| | | private String sampleCode; |
| | | @ApiModelProperty("æ ·ååç§°") |
| | | private String sampleName; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.event; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * æ°èç´ç»æ¨¡æ¿ä¸åæåäºä»¶ã |
| | | */ |
| | | @Data |
| | | @AllArgsConstructor |
| | | public class NewJuOrderPlacedEvent { |
| | | |
| | | private Integer insOrderId; |
| | | } |
| | |
| | | public interface InsOrderMapper extends BaseMapper<InsOrder> { |
| | | |
| | | //è·åæ£éªä¸åæ°æ® |
| | | IPage<SampleOrderDto> selectInsOrderPage(@Param("page") IPage<InsOrder> page, @Param("ew") QueryWrapper<SampleOrderDto> ew, @Param("laboratory") String laboratory, @Param("isOrderAll") String isOrderAll); |
| | | IPage<SampleOrderDto> selectInsOrderPage(@Param("page") IPage<InsOrder> page, @Param("ew") QueryWrapper<SampleOrderDto> ew, @Param("laboratory") String laboratory, @Param("isOrderAll") String isOrderAll, @Param("receiptSubmitted") String receiptSubmitted); |
| | | |
| | | |
| | | String getLaboratoryCode(@Param("name") String name); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.inspect.dto.SampleReceiptPageDto; |
| | | import com.ruoyi.inspect.dto.SampleReceiptQueryDto; |
| | | import com.ruoyi.inspect.pojo.InsSampleReceipt; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface InsSampleReceiptMapper extends BaseMapper<InsSampleReceipt> { |
| | | |
| | | IPage<SampleReceiptPageDto> selectPage(Page<?> page, @Param("query") SampleReceiptQueryDto query); |
| | | |
| | | SampleReceiptPageDto selectDetail(@Param("id") Integer id); |
| | | |
| | | InsSampleReceipt selectForUpdate(@Param("id") Integer id); |
| | | |
| | | int insertIgnore(@Param("orderId") Integer orderId, @Param("sampleId") Integer sampleId); |
| | | |
| | | List<SampleReceiptPageDto> selectExportList(@Param("query") SampleReceiptQueryDto query); |
| | | } |
| | |
| | | @ApiModelProperty("æ¯å¦çæ ·") |
| | | private Integer isLeave; |
| | | |
| | | @ApiModelProperty("ç¶æ:-1:åæææ¤å 1ï¼æ£éªå¤ç 0ï¼å¾
å®¡æ ¸ 2ï¼éå 3ï¼æ¤é") |
| | | @ApiModelProperty("ç¶æ:-1:åæææ¤å 0:å¾
å®¡æ ¸ 1:æ ·åæ¥æ¶/æ£éªå¤ç 2:éå 3:æ¤é 4:å·²æ£éª 5:ä½åº") |
| | | private Integer state; |
| | | |
| | | @ExcelProperty(index = 7, value = "夿³¨") |
| | |
| | | private Integer prepareUserId; |
| | | |
| | | @ExcelProperty(index = 12, value = "å§æäºº") |
| | | @ApiModelProperty("å§æäºº") |
| | | private String prepareUser; |
| | | |
| | | @ApiModelProperty(name = "å§æäººè±æ") |
| | |
| | | @ApiModelProperty("馿¬¡ä¿åæ£éªæ¨¡æ¿å¼æ¶é´") |
| | | private LocalDateTime firstInspectDate; |
| | | |
| | | @ApiModelProperty("åå
å
容 0æ 1æ") |
| | | private Integer subcontractType; |
| | | |
| | | @ApiModelProperty("åå
åä½ä¿¡æ¯") |
| | | private String subcontractCompany; |
| | | |
| | | @ApiModelProperty("æ ·åå¤ç½® 1å§ææ¹åå 2æ£æµæ¹å¤ç½®") |
| | | private Integer sampleDisposal; |
| | | |
| | | @ApiModelProperty("å¯¹ç»æè¯ä»· 0å¦ 1æ¯") |
| | | private Integer resultEvaluation; |
| | | |
| | | @ApiModelProperty("æ¥åäº¤ä»æ¹å¼ 1èªå 2å¿«é 3çµåä¼ é") |
| | | private Integer reportDelivery; |
| | | |
| | | @ApiModelProperty("æ¥åå¯éå°å") |
| | | private String reportAddress; |
| | | |
| | | @ApiModelProperty("æ¶ä»¶äººåçµè¯") |
| | | private String reportReceiver; |
| | | |
| | | @ApiModelProperty("æ ·æºå(é¤äºå
¶ä»æåå¤è¿ä¸ªå段å¿
é,ç¨äºä¼ä¸å¾®ä¿¡æ¨é)") |
| | | @TableField(exist = false) |
| | | private Integer issueUser; |
| | |
| | | /** |
| | | * |
| | | */ |
| | | @ApiModelProperty("主é®") |
| | | @TableId(type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | |
| | | @ApiModelProperty("模æ¿å
容") |
| | | private String thing; |
| | | |
| | | @ApiModelProperty("ç»å®çæ ååºäºçº§æ åID") |
| | | private Integer standardTreeId; |
| | | |
| | | @ApiModelProperty("å建人") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Integer createUser; |
| | | |
| | |
| | | /** |
| | | * |
| | | */ |
| | | @ApiModelProperty("主é®") |
| | | @TableId(type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | |
| | | /** |
| | | * å¤é®ï¼æ£éªåid |
| | | */ |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @ApiModelProperty("æ£éªåid") |
| | | private Integer insOrderId; |
| | | |
| | | /** 0ï¼æ£æµæ¥åï¼ä»
æ£æµæ°æ®ï¼ï¼1ï¼æ£éªæ¥åï¼å«å¤å®ç»æï¼ */ |
| | |
| | | /** |
| | | * ç³»ç»çææ¥åå°å |
| | | */ |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @ApiModelProperty("ç³»ç»çææ¥åå°å") |
| | | private String url; |
| | | |
| | | /** |
| | |
| | | /** |
| | | * æå¨ä¸ä¼ æ¥åå°å |
| | | */ |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @ApiModelProperty("æå¨ä¸ä¼ æ¥åå°å") |
| | | private String urlS; |
| | | |
| | | /** |
| | | * ä¸´æ¶æ¥åå°å |
| | | */ |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @ApiModelProperty("ä¸´æ¶æ¥åå°å") |
| | | private String tempUrlPdf; |
| | | |
| | | /** |
| | |
| | | /** |
| | | * å¤é®ï¼ç¨æ·idï¼æäº¤äººï¼ |
| | | */ |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @ApiModelProperty("æäº¤äººç¨æ·id") |
| | | private Integer writeUserId; |
| | | |
| | | /** |
| | | * å¤é®ï¼ç¨æ·idï¼æ¹åäººï¼ |
| | | */ |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @ApiModelProperty("æ¹åäººç¨æ·id") |
| | | private Integer ratifyUserId; |
| | | |
| | | /** |
| | | * å¤é®ï¼ç¨æ·idï¼å®¡æ ¸äººï¼ |
| | | */ |
| | | @ApiModelProperty("å建æ¶é´") |
| | | @ApiModelProperty("å®¡æ ¸äººç¨æ·id") |
| | | private Integer examineUserId; |
| | | |
| | | @ApiModelProperty("å建人") |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Integer createUser; |
| | | |
| | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty("æ´æ°äºº") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Integer updateUser; |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | @TableName("ins_sample_receipt") |
| | | public class InsSampleReceipt { |
| | | |
| | | @ApiModelProperty("主é®") |
| | | @TableId(type = IdType.AUTO) |
| | | private Integer id; |
| | | @ApiModelProperty("å§æåID") |
| | | private Integer insOrderId; |
| | | @ApiModelProperty("æ ·åID") |
| | | private Integer insSampleId; |
| | | @ApiModelProperty("æ ·åæ¥æ¶ç¶æ 0å¾
æ¥æ¶ 1å·²æäº¤æ£éª 2å·²ææ¶ 3已忶") |
| | | private Integer status; |
| | | @ApiModelProperty("主æ£éªäººID") |
| | | private Integer mainInspectorId; |
| | | @ApiModelProperty("æ¥æ¶å¤ç人ID") |
| | | private Integer receiveUserId; |
| | | @ApiModelProperty("æ¥æ¶å¤çæ¶é´") |
| | | private LocalDateTime receiveTime; |
| | | @ApiModelProperty("æäº¤æ£éªæ¶é´") |
| | | private LocalDateTime submitTime; |
| | | @ApiModelProperty("ææ¶å¤æ³¨") |
| | | private String rejectRemark; |
| | | @ApiModelProperty("å建人") |
| | | private Integer createUser; |
| | | @ApiModelProperty("å建æ¶é´") |
| | | private LocalDateTime createTime; |
| | | @ApiModelProperty("æ´æ°äºº") |
| | | private Integer updateUser; |
| | | @ApiModelProperty("æ´æ°æ¶é´") |
| | | private LocalDateTime updateTime; |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.inspect.pojo.InsOrderTemplate; |
| | | import com.ruoyi.inspect.vo.InsOrderTemplateDetailVo; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | |
| | | List<InsOrderTemplate> selectInsOrderTemplate(String company); |
| | | |
| | | String selectInsOrderTemplateById(Integer id); |
| | | InsOrderTemplateDetailVo selectInsOrderTemplateById(Integer id); |
| | | |
| | | int delInsOrderTemplate(Integer id); |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.inspect.dto.SampleReceiptActionDto; |
| | | import com.ruoyi.inspect.dto.SampleReceiptPageDto; |
| | | import com.ruoyi.inspect.dto.SampleReceiptQueryDto; |
| | | import com.ruoyi.inspect.pojo.InsSampleReceipt; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | public interface InsSampleReceiptService extends IService<InsSampleReceipt> { |
| | | |
| | | IPage<SampleReceiptPageDto> page(Page<?> page, SampleReceiptQueryDto query); |
| | | |
| | | SampleReceiptPageDto detail(Integer id); |
| | | |
| | | void submit(SampleReceiptActionDto dto); |
| | | |
| | | void reject(SampleReceiptActionDto dto); |
| | | |
| | | void export(SampleReceiptQueryDto query, HttpServletResponse response); |
| | | } |
| | |
| | | // æ¥è¯¢è®¢åId |
| | | InsOrder order = insOrderMapper.selectFirstSubmit(dto.getId()); |
| | | if (order == null) { |
| | | return BeanUtil.isEmpty(insProducts) ? null : insProducts; |
| | | return BeanUtil.isEmpty(insProducts) ? Collections.emptyList() : insProducts; |
| | | } |
| | | insProducts = mergeDirectTemplateSnapshots(order, dto.getId(), dto.getLaboratory(), insProducts); |
| | | if (BeanUtil.isEmpty(insProducts)) { |
| | | return null; |
| | | return Collections.emptyList(); |
| | | } |
| | | getTemplateThing(order, insProducts, dto.getLaboratory()); |
| | | return insProducts; |
| | |
| | | if (snapshots.isEmpty()) { |
| | | return source; |
| | | } |
| | | InsSample sample = insSampleMapper.selectById(sampleId); |
| | | boolean directTemplateOrder = source.stream() |
| | | .anyMatch(product -> product.getTemplateRowIndex() != null) |
| | | || isDirectTemplateSample(order, sample); |
| | | if (!directTemplateOrder) { |
| | | return source; |
| | | } |
| | | |
| | | Map<Integer, List<InsProduct>> productsByTemplate = source.stream() |
| | | .filter(product -> product.getTemplateId() != null) |
| | | .collect(Collectors.groupingBy(InsProduct::getTemplateId, LinkedHashMap::new, Collectors.toList())); |
| | |
| | | firstInspectDate = submitTime; |
| | | } |
| | | |
| | | String insTime = firstInspectDate.format(DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥")) + "-" |
| | | + submitTime.format(DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥")); |
| | | String testStartDate = firstInspectDate.format(DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥")); |
| | | String testEndDate = submitTime.format(DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥")); |
| | | String insTime = formatReportTestDate(firstInspectDate, submitTime); |
| | | |
| | | String insTimeEn = monthNames[firstInspectDate.getMonthValue() - 1] + " " + firstInspectDate.format(DateTimeFormatter.ofPattern("dd, yyyy")) + "-" |
| | | + monthNames[submitTime.getMonthValue() - 1] + " " + submitTime.format(DateTimeFormatter.ofPattern("dd, yyyy")); |
| | |
| | | put("batch", finalBatchNo); |
| | | put("phone", defaultReportText(insOrder.getPhone(), "/")); |
| | | put("testDate", insTime); |
| | | put("testStartDate", testStartDate); |
| | | put("testEndDate", testEndDate); |
| | | put("entrustNo", defaultReportText(insOrder.getEntrustCode(), "/")); |
| | | put("sampling", "/"); |
| | | put("standard", finalStandardMethodText); |
| | |
| | | if (CollectionUtils.isEmpty(deviceList)) { |
| | | return "/"; |
| | | } |
| | | Set<String> lines = new LinkedHashSet<>(); |
| | | int sequence = 1; |
| | | Set<String> equipmentItems = new LinkedHashSet<>(); |
| | | for (Map<String, String> device : deviceList) { |
| | | String name = getMapText(device, "deviceName", "device_name"); |
| | | String managementNumber = getMapText(device, "managementNumber", "management_number"); |
| | | String line = sequence++ + ". " + defaultReportText(name, "/"); |
| | | String item = defaultReportText(name, "/"); |
| | | if (StringUtils.isNotBlank(managementNumber)) { |
| | | line += "ï¼" + managementNumber; |
| | | item += "ï¼" + managementNumber; |
| | | } |
| | | lines.add(line); |
| | | equipmentItems.add(item); |
| | | } |
| | | List<String> items = new ArrayList<>(equipmentItems); |
| | | List<String> lines = new ArrayList<>(); |
| | | for (int i = 0; i < items.size(); i++) { |
| | | String punctuation = i == items.size() - 1 ? "ã" : "ï¼"; |
| | | lines.add((i + 1) + ". " + items.get(i) + punctuation); |
| | | } |
| | | return String.join("\n", lines); |
| | | } |
| | |
| | | .collect(Collectors.toList()); |
| | | |
| | | String temperature = formatConditionRange(temperatures, order.getTemperature(), "â"); |
| | | String humidity = formatConditionRange(humidities, order.getHumidity(), "%"); |
| | | String humidity = formatConditionRange(humidities, order.getHumidity(), "%RH"); |
| | | return Stream.of(temperature, humidity) |
| | | .filter(StringUtils::isNotBlank) |
| | | .collect(Collectors.joining(" ")); |
| | |
| | | return StringUtils.isNotBlank(fallback) ? fallback : "/"; |
| | | } |
| | | |
| | | private static String formatReportTestDate(LocalDateTime startTime, LocalDateTime endTime) { |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyå¹´MMæddæ¥"); |
| | | if (startTime.toLocalDate().equals(endTime.toLocalDate())) { |
| | | return startTime.format(formatter); |
| | | } |
| | | return startTime.format(formatter) + "è³" + endTime.format(formatter); |
| | | } |
| | | |
| | | /** |
| | | * 计ç®è¡¨æ ¼å宽度 |
| | | * |
| | |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.context.ApplicationEventPublisher; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Isolation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | private StandardTemplateService standardTemplateService; |
| | | private InsOrderStandardTemplateMapper insOrderStandardTemplateMapper; |
| | | private InsOrderTemplateDeviceMapper insOrderTemplateDeviceMapper; |
| | | private InsSampleReceiptMapper insSampleReceiptMapper; |
| | | private ApplicationEventPublisher applicationEventPublisher; |
| | | |
| | | |
| | | |
| | |
| | | isOrderAll = "1"; |
| | | sampleOrderDto.setState(null); |
| | | } |
| | | return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); |
| | | // æ£éªä¸ï¼æ°èä¸åå
å®¡æ ¸å³åçï¼éæ ·åæ¥æ¶æäº¤åï¼ins_sample_receipt.status=1ï¼æå±ç¤º |
| | | String receiptSubmitted = sampleOrderDto.getState() != null && sampleOrderDto.getState() == 1 ? "1" : null; |
| | | return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, |
| | | isOrderAll, receiptSubmitted); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | if (userId != null) { |
| | | Set<String> assignedLaboratories = StringUtils.isBlank(sonLaboratory) |
| | | ? taskLaboratories |
| | | : Collections.singleton(sonLaboratory); |
| | | for (String laboratory : assignedLaboratories) { |
| | | InsSampleUser insSampleUser = new InsSampleUser(); |
| | | insSampleUser.setState(0); |
| | | insSampleUser.setUserId(userId); |
| | | insSampleUser.setInsSampleId(orderId); |
| | | insSampleUser.setSonLaboratory(directTemplateOrder |
| | | ? DIRECT_TEMPLATE_LABORATORY : sonLaboratory); |
| | | insSampleUser.setSonLaboratory(laboratory); |
| | | insSampleUserMapper.insert(insSampleUser); |
| | | } |
| | | } |
| | | |
| | | // å¤æè®¢åææ²¡æç»å®æ½æ ·è®¡å |
| | |
| | | // å®¡æ ¸æ£éªå |
| | | upInsOrderOfState(insOrder); |
| | | |
| | | // åé
æ£éªäºº |
| | | String sonLaboratory = insOrder.getTypeSource().equals(1)?"åææ":"æåå®éªå®¤"; |
| | | upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), sonLaboratory); |
| | | // å®¡æ ¸éè¿åä»
è¿å
¥æ ·åæ¥æ¶ï¼ç±æ ·åæ¥æ¶é¡µé¢éæ©ä¸»æ£éªäººååå建æ£éªä»»å¡ã |
| | | |
| | | //æ¯å¦ä¸ºåææä¸å |
| | | if(insOrder.getTypeSource().equals(1)){ |
| | |
| | | if (StringUtils.isBlank(sampleCode) || sampleCode.length() < 2) { |
| | | throw new ErrorException("æ ·åç¼å·ä¸è½ä¸ºç©ºä¸ä¸è½å°äº2ä½"); |
| | | } |
| | | // å§æè¦æ±åæ®µæ ¡éªï¼åç»åéå¿
éï¼åå
/å¿«éèå¨å¿
å¡« |
| | | InsOrder reqOrder = dto.getInsOrder(); |
| | | if (reqOrder.getSubcontractType() == null || reqOrder.getSampleDisposal() == null |
| | | || reqOrder.getResultEvaluation() == null || reqOrder.getReportDelivery() == null) { |
| | | throw new ErrorException("è¯·éæ©åå
å
å®¹ãæ ·åå¤ç½®ãå¯¹ç»æè¯ä»·åæ¥åäº¤ä»æ¹å¼"); |
| | | } |
| | | if (Integer.valueOf(1).equals(reqOrder.getSubcontractType()) |
| | | && StringUtils.isBlank(reqOrder.getSubcontractCompany())) { |
| | | throw new ErrorException("åå
å
å®¹ä¸ºææ¶ï¼åå
åä½ä¿¡æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | if (Integer.valueOf(2).equals(reqOrder.getReportDelivery())) { |
| | | if (StringUtils.isBlank(reqOrder.getReportAddress())) { |
| | | throw new ErrorException("æ¥åäº¤ä»æ¹å¼ä¸ºå¿«éæ¶ï¼æ¥åå¯éå°åä¸è½ä¸ºç©º"); |
| | | } |
| | | if (StringUtils.isBlank(reqOrder.getReportReceiver())) { |
| | | throw new ErrorException("æ¥åäº¤ä»æ¹å¼ä¸ºå¿«éæ¶ï¼æ¶ä»¶äººåçµè¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | StandardTree standard = standardTreeService.getById(dto.getStandardTreeId()); |
| | | if (standard == null || StringUtils.isBlank(standard.getSample()) |
| | | || standard.getSampleType() != null || standard.getModel() != null) { |
| | |
| | | |
| | | InsOrder order = dto.getInsOrder(); |
| | | order.setId(null); |
| | | order.setState(0); |
| | | // æ°èä¸åå
å®¡æ ¸ï¼ç´æ¥åçï¼ä¸å峿µè½¬å°æ ·åæ¥æ¶ |
| | | order.setState(1); |
| | | order.setExamineTime(LocalDateTime.now()); |
| | | order.setIsExemption(0); |
| | | order.setFactory(null); |
| | | order.setLaboratory(standard.getLaboratory()); |
| | |
| | | // æ°è订åçç¯å¢æ¡ä»¶ç±æ£éªä»»å¡å¡«åï¼é¿å
ä¸åæ¨¡æ¿ææµè§å¨ç¼å带å
¥æ§å¼ã |
| | | order.setTemperature(null); |
| | | order.setHumidity(null); |
| | | // æªå½ä¸è卿¡ä»¶æ¶æ¸
ç©ºå¯¹åºææ¬å段ï¼é¿å
模æ¿å¿«ç
§ææµè§å¨ç¼å带å
¥æ§å¼ã |
| | | if (!Integer.valueOf(1).equals(order.getSubcontractType())) { |
| | | order.setSubcontractCompany(null); |
| | | } |
| | | if (!Integer.valueOf(2).equals(order.getReportDelivery())) { |
| | | order.setReportAddress(null); |
| | | order.setReportReceiver(null); |
| | | } |
| | | insOrderMapper.insert(order); |
| | | |
| | | InsSample sample = new InsSample(); |
| | |
| | | insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate() |
| | | .eq(InsOrder::getId, order.getId()) |
| | | .set(InsOrder::getEntrustCode, entrustCode)); |
| | | // å
å®¡æ ¸åç±ä¸åçæå¾
æ¥æ¶çæ ·åæ¥æ¶è®°å½ï¼ä¸»æ£éªäººä»å¨æ ·åæ¥æ¶é¡µé¢éæ©åæå建æ£éªä»»å¡ |
| | | insSampleReceiptMapper.insertIgnore(order.getId(), sample.getId()); |
| | | // åäºå¡å
åå¸ä¸åäºä»¶ï¼ç± cnas-process èªå¨çææ£éªå§æåï¼çå¬å¨å¼å¸¸ä¼è¿å¸¦ä¸ååæ» |
| | | applicationEventPublisher.publishEvent(new com.ruoyi.inspect.event.NewJuOrderPlacedEvent(order.getId())); |
| | | return order.getId(); |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int upInsOrderOfState(InsOrder insOrder) { |
| | | insOrder.setExamineTime(LocalDateTime.now()); |
| | | if (insOrder.getState() == 1) { |
| | |
| | | |
| | | insOrder.setEntrustCode(no); |
| | | } |
| | | return insOrderMapper.updateById(insOrder); |
| | | int updated = insOrderMapper.updateById(insOrder); |
| | | if (updated > 0 && Integer.valueOf(1).equals(insOrder.getState())) { |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() |
| | | .eq(InsSample::getInsOrderId, insOrder.getId()) |
| | | .orderByAsc(InsSample::getId)); |
| | | if (samples.size() != 1) { |
| | | throw new ErrorException("å§æåå¿
é¡»ä¸åªè½å
å«ä¸ä¸ªæ ·åï¼ä¸è½è¿å
¥æ ·åæ¥æ¶æµç¨"); |
| | | } |
| | | insSampleReceiptMapper.insertIgnore(insOrder.getId(), samples.get(0).getId()); |
| | | } |
| | | return updated; |
| | | } |
| | | |
| | | /** |
| | |
| | | insOrder.setState(1); |
| | | |
| | | upInsOrderOfState(insOrder); |
| | | upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "åææ"); |
| | | // å®¡æ ¸éè¿åä»
è¿å
¥æ ·åæ¥æ¶ï¼ç±æ ·åæ¥æ¶é¡µé¢éæ©ä¸»æ£éªäººååå建æ£éªä»»å¡ã |
| | | |
| | | return insOrder.getId(); |
| | | } |
| | |
| | | package com.ruoyi.inspect.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.dto.StandardTreeTemplateBindingVo; |
| | | import com.ruoyi.basic.service.StandardTreeService; |
| | | import com.ruoyi.inspect.mapper.InsOrderTemplateMapper; |
| | | import com.ruoyi.inspect.pojo.InsOrderTemplate; |
| | | import com.ruoyi.inspect.service.InsOrderTemplateService; |
| | | import com.ruoyi.inspect.vo.InsOrderTemplateDetailVo; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | implements InsOrderTemplateService { |
| | | |
| | | private InsOrderTemplateMapper insOrderTemplateMapper; |
| | | |
| | | private StandardTreeService standardTreeService; |
| | | |
| | | @Override |
| | | public int addInsOrderTemplate(InsOrderTemplate insOrderTemplate) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public String selectInsOrderTemplateById(Integer id) { |
| | | return insOrderTemplateMapper.selectById(id).getThing(); |
| | | public InsOrderTemplateDetailVo selectInsOrderTemplateById(Integer id) { |
| | | InsOrderTemplate template = insOrderTemplateMapper.selectById(id); |
| | | InsOrderTemplateDetailVo vo = new InsOrderTemplateDetailVo(); |
| | | if (template == null) { |
| | | vo.setTemplateBindings(new ArrayList<>()); |
| | | return vo; |
| | | } |
| | | vo.setThing(template.getThing()); |
| | | // ä¼å
忍¡æ¿å䏿ä¹
åçæ åIDï¼å岿°æ®åéå°ä»è¡¨åå¿«ç
§ addObj.standardTreeId è§£æ |
| | | Integer standardTreeId = template.getStandardTreeId(); |
| | | if (standardTreeId == null) { |
| | | standardTreeId = parseStandardTreeId(template.getThing()); |
| | | } |
| | | vo.setStandardTreeId(standardTreeId); |
| | | if (standardTreeId != null) { |
| | | List<StandardTreeTemplateBindingVo> bindings = standardTreeService.selectTemplateBindings(standardTreeId); |
| | | vo.setTemplateBindings(bindings == null ? new ArrayList<>() : bindings); |
| | | } else { |
| | | vo.setTemplateBindings(new ArrayList<>()); |
| | | } |
| | | return vo; |
| | | } |
| | | |
| | | private Integer parseStandardTreeId(String thing) { |
| | | if (StringUtils.isBlank(thing)) { |
| | | return null; |
| | | } |
| | | try { |
| | | JSONObject addObj = JSON.parseObject(thing).getJSONObject("addObj"); |
| | | return addObj == null ? null : addObj.getInteger("standardTreeId"); |
| | | } catch (Exception ignored) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | return insOrderTemplateMapper.deleteById(id); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | import com.alibaba.excel.ExcelWriter; |
| | | import com.alibaba.excel.write.metadata.WriteSheet; |
| | | import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; |
| | | import com.aspose.words.FontSettings; |
| | | import com.aspose.words.License; |
| | | import com.aspose.words.SaveFormat; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | |
| | | @Slf4j |
| | | public class InsReportServiceImpl extends ServiceImpl<InsReportMapper, InsReport> |
| | | implements InsReportService { |
| | | static { |
| | | // Linux æå¡å¨ç¼ºå°ä¸æåä½ï¼æ¥å转 PDF æ¶ä¸æä¼åææ¹åï¼å°æ¨¡æ¿å使 å°å° Noto CJK å
åºã |
| | | FontSettings.addFontSubstitutes("å®ä½", "Noto Serif CJK SC"); |
| | | FontSettings.addFontSubstitutes("é»ä½", "Noto Sans CJK SC"); |
| | | } |
| | | |
| | | private static final int DETECTION_REPORT = 0; |
| | | private static final int INSPECTION_REPORT = 1; |
| | | |
| | |
| | | if (userId == null) { |
| | | throw new ErrorException("ç¼ºå°æ¹å人"); |
| | | } |
| | | if (Objects.equals(insReport.getExamineUserId(), userId)) { |
| | | throw new ErrorException("å®¡æ ¸äººåæ¹å人ä¸è½ä¸ºåä¸äººï¼è¯·éæ°éæ©æ¹å人"); |
| | | } |
| | | } |
| | | insReport.setRatifyUserId(userId);//æ¹å人 |
| | | //è·åå®¡æ ¸äººçç¾åå°å |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int ratifyReport(Integer id, Integer isRatify, String ratifyTell) { |
| | | InsReport insReport = insReportMapper.selectById(id); |
| | | if (Objects.equals(insReport.getExamineUserId(), SecurityUtils.getUserId().intValue())) { |
| | | throw new ErrorException("å®¡æ ¸äººåæ¹å人ä¸è½ä¸ºåä¸äººï¼è¯·éæ°éæ©æ¹å人"); |
| | | } |
| | | insReport.setIsRatify(isRatify); |
| | | if (ObjectUtils.isNotEmpty(ratifyTell)) { |
| | | insReport.setRatifyTell(ratifyTell); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.service.impl; |
| | | |
| | | import com.alibaba.excel.EasyExcel; |
| | | import com.alibaba.excel.ExcelWriter; |
| | | import com.alibaba.excel.write.metadata.WriteSheet; |
| | | import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; |
| | | 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.common.utils.SecurityUtils; |
| | | import com.ruoyi.framework.exception.ErrorException; |
| | | import com.ruoyi.inspect.dto.SampleReceiptActionDto; |
| | | import com.ruoyi.inspect.dto.SampleReceiptPageDto; |
| | | import com.ruoyi.inspect.dto.SampleReceiptQueryDto; |
| | | import com.ruoyi.inspect.mapper.InsOrderMapper; |
| | | import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper; |
| | | import com.ruoyi.inspect.mapper.InsProductMapper; |
| | | import com.ruoyi.inspect.mapper.InsSampleMapper; |
| | | import com.ruoyi.inspect.mapper.InsSampleReceiptMapper; |
| | | import com.ruoyi.inspect.mapper.InsSampleUserMapper; |
| | | import com.ruoyi.inspect.pojo.InsOrder; |
| | | import com.ruoyi.inspect.pojo.InsOrderStandardTemplate; |
| | | import com.ruoyi.inspect.pojo.InsProduct; |
| | | import com.ruoyi.inspect.pojo.InsSample; |
| | | import com.ruoyi.inspect.pojo.InsSampleReceipt; |
| | | import com.ruoyi.inspect.pojo.InsSampleUser; |
| | | import com.ruoyi.inspect.service.InsOrderService; |
| | | import com.ruoyi.inspect.service.InsOrderStateService; |
| | | import com.ruoyi.inspect.service.InsSampleReceiptService; |
| | | import com.ruoyi.system.mapper.UserMapper; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class InsSampleReceiptServiceImpl extends ServiceImpl<InsSampleReceiptMapper, InsSampleReceipt> |
| | | implements InsSampleReceiptService { |
| | | private final InsSampleReceiptMapper receiptMapper; |
| | | private final InsOrderMapper insOrderMapper; |
| | | private final InsOrderStandardTemplateMapper insOrderStandardTemplateMapper; |
| | | private final InsSampleMapper insSampleMapper; |
| | | private final InsProductMapper insProductMapper; |
| | | private final InsSampleUserMapper insSampleUserMapper; |
| | | private final InsOrderStateService insOrderStateService; |
| | | private final InsOrderService insOrderService; |
| | | private final UserMapper userMapper; |
| | | |
| | | @Override |
| | | public com.baomidou.mybatisplus.core.metadata.IPage<SampleReceiptPageDto> page(Page<?> page, SampleReceiptQueryDto query) { |
| | | return receiptMapper.selectPage(page, query); |
| | | } |
| | | |
| | | @Override |
| | | public SampleReceiptPageDto detail(Integer id) { |
| | | return receiptMapper.selectDetail(id); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void submit(SampleReceiptActionDto dto) { |
| | | if (dto == null || dto.getReceiptId() == null || dto.getMainInspectorId() == null) { |
| | | throw new ErrorException("è¯·éæ©ä¸»æ£éªäºº"); |
| | | } |
| | | InsSampleReceipt receipt = receiptMapper.selectForUpdate(dto.getReceiptId()); |
| | | ensurePending(receipt); |
| | | InsOrder order = insOrderMapper.selectById(receipt.getInsOrderId()); |
| | | if (order == null || !Integer.valueOf(1).equals(order.getState())) { |
| | | throw new ErrorException("è¯¥å§æå½åç¶æä¸å
è®¸æ ·åæ¥æ¶"); |
| | | } |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() |
| | | .eq(InsSample::getInsOrderId, order.getId()).orderByAsc(InsSample::getId)); |
| | | if (samples.size() != 1 || !samples.get(0).getId().equals(receipt.getInsSampleId())) { |
| | | throw new ErrorException("è¯¥å§æçæ ·åæ°éå¼å¸¸ï¼è¯·æ£æ¥ä¸åæ°æ®"); |
| | | } |
| | | InsSample sample = samples.get(0); |
| | | // åªèµ°æ°èç´ç»æ¨¡æ¿æµç¨ï¼å§æåå¿
须已ç»å®åå§è®°å½æ¨¡æ¿ï¼ä¸åæ¶çæè®¢å模æ¿å¿«ç
§ï¼ |
| | | Long snapshotCount = insOrderStandardTemplateMapper.selectCount(Wrappers.<InsOrderStandardTemplate>lambdaQuery() |
| | | .eq(InsOrderStandardTemplate::getInsOrderId, order.getId())); |
| | | if (snapshotCount == 0) { |
| | | throw new ErrorException("è¯¥å§ææªç»å®åå§è®°å½æ¨¡æ¿ï¼ä¸è½æäº¤æ£éª"); |
| | | } |
| | | Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, sample.getId()).eq(InsProduct::getState, 1)); |
| | | if (productCount == 0) { |
| | | throw new ErrorException("è¯¥å§ææªç»å®æ£éªé¡¹ç®ï¼ä¸è½æäº¤æ£éª"); |
| | | } |
| | | if (userMapper.selectById(dto.getMainInspectorId()) == null) { |
| | | throw new ErrorException("主æ£éªäººä¸å卿已åç¨"); |
| | | } |
| | | if (insOrderStateService.count(Wrappers.lambdaQuery(com.ruoyi.inspect.pojo.InsOrderState.class) |
| | | .eq(com.ruoyi.inspect.pojo.InsOrderState::getInsOrderId, order.getId())) > 0 |
| | | || insSampleUserMapper.selectCount(Wrappers.<InsSampleUser>lambdaQuery() |
| | | .eq(InsSampleUser::getInsSampleId, order.getId())) > 0) { |
| | | throw new ErrorException("è¯¥å§æå·²è¿å
¥æ£éªä»»å¡ï¼ä¸è½éå¤æäº¤"); |
| | | } |
| | | String appointed = LocalDateTime.now().plusHours(insProductMapper.selectOrderManDay(order.getId())) |
| | | .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | insOrderService.upInsOrder(order.getId(), sample.getId(), appointed, dto.getMainInspectorId(), null); |
| | | receipt.setStatus(1); |
| | | receipt.setMainInspectorId(dto.getMainInspectorId()); |
| | | receipt.setReceiveUserId(SecurityUtils.getUserId().intValue()); |
| | | receipt.setReceiveTime(LocalDateTime.now()); |
| | | receipt.setSubmitTime(LocalDateTime.now()); |
| | | receiptMapper.updateById(receipt); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void reject(SampleReceiptActionDto dto) { |
| | | if (dto == null || dto.getReceiptId() == null || StringUtils.isBlank(dto.getRemark())) { |
| | | throw new ErrorException("è¯·å¡«åææ¶å¤æ³¨"); |
| | | } |
| | | if (dto.getRemark().trim().length() > 500) { |
| | | throw new ErrorException("ææ¶å¤æ³¨ä¸è½è¶
è¿500个å符"); |
| | | } |
| | | InsSampleReceipt receipt = receiptMapper.selectForUpdate(dto.getReceiptId()); |
| | | ensurePending(receipt); |
| | | if (insOrderStateService.count(Wrappers.lambdaQuery(com.ruoyi.inspect.pojo.InsOrderState.class) |
| | | .eq(com.ruoyi.inspect.pojo.InsOrderState::getInsOrderId, receipt.getInsOrderId())) > 0) { |
| | | throw new ErrorException("è¯¥å§æå·²è¿å
¥æ£éªä»»å¡ï¼ä¸è½ææ¶"); |
| | | } |
| | | receipt.setStatus(2); |
| | | receipt.setRejectRemark(dto.getRemark().trim()); |
| | | receipt.setReceiveUserId(SecurityUtils.getUserId().intValue()); |
| | | receipt.setReceiveTime(LocalDateTime.now()); |
| | | receiptMapper.updateById(receipt); |
| | | InsOrder order = new InsOrder(); |
| | | order.setId(receipt.getInsOrderId()); |
| | | order.setState(5); |
| | | insOrderMapper.updateById(order); |
| | | } |
| | | |
| | | private void ensurePending(InsSampleReceipt receipt) { |
| | | if (receipt == null || !Integer.valueOf(0).equals(receipt.getStatus())) { |
| | | throw new ErrorException("è¯¥æ ·åæ¥æ¶è®°å½å·²è¢«å¤çï¼è¯·å·æ°åéè¯"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void export(SampleReceiptQueryDto query, HttpServletResponse response) { |
| | | List<SampleReceiptPageDto> list = receiptMapper.selectExportList(query); |
| | | response.setContentType("application/vnd.ms-excel"); |
| | | response.setCharacterEncoding("UTF-8"); |
| | | try { |
| | | String fileName = URLEncoder.encode("æ ·åæ¥æ¶å¯¼åº", "UTF-8"); |
| | | response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); |
| | | ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) |
| | | .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); |
| | | WriteSheet sheet = EasyExcel.writerSheet(0, "æ ·åæ¥æ¶å¯¼åº").head(SampleReceiptPageDto.class).build(); |
| | | excelWriter.write(list, sheet); |
| | | excelWriter.finish(); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException("导åºå¤±è´¥"); |
| | | } |
| | | } |
| | | } |
| | |
| | | @ApiModelProperty("æ£æµç¼å·") |
| | | private String entrustCode; |
| | | |
| | | @ApiModelProperty("æ ·åç¼ç ") |
| | | private String sampleCode; |
| | | |
| | | @ApiModelProperty("æ ·åæ°é") |
| | | private String testQuantity; |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.inspect.vo; |
| | | |
| | | import com.ruoyi.basic.dto.StandardTreeTemplateBindingVo; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** 姿忍¡æ¿è¯¦æ
ï¼è¡¨åå¿«ç
§ + ç»å®çæ å + 该æ åä¸çåå§è®°å½æ¨¡æ¿ã */ |
| | | @Data |
| | | public class InsOrderTemplateDetailVo { |
| | | |
| | | @ApiModelProperty("表åå¿«ç
§JSON") |
| | | private String thing; |
| | | |
| | | @ApiModelProperty("ç»å®çæ ååºäºçº§æ åID") |
| | | private Integer standardTreeId; |
| | | |
| | | @ApiModelProperty("æ åç»å®çåå§è®°å½æ¨¡æ¿") |
| | | private List<StandardTreeTemplateBindingVo> templateBindings = new ArrayList<>(); |
| | | } |
| | |
| | | GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model, |
| | | u.name, |
| | | testing_name, |
| | | ip.son_laboratory |
| | | ip.son_laboratory, |
| | | isr.reject_remark AS sample_reject_remark |
| | | FROM |
| | | ins_order io |
| | | LEFT JOIN |
| | | ins_sample isa ON io.id = isa.ins_order_id |
| | | left join ins_product ip on ip.ins_sample_id = isa.id |
| | | LEFT JOIN ins_sample_receipt isr ON isr.ins_order_id = io.id |
| | | LEFT JOIN |
| | | ins_sample_user isau ON isau.ins_sample_id = io.id |
| | | LEFT JOIN |
| | |
| | | ORDER BY ins_sample_id) isu ON isu.ins_sample_id = io.id |
| | | where (io.ifs_inventory_id IS NULL OR TRIM(io.ifs_inventory_id) = '') |
| | | <if test="isOrderAll != null and isOrderAll != ''"> |
| | | AND io.state in (1, 4) |
| | | AND io.state in (1, 4, 5) |
| | | </if> |
| | | <if test="receiptSubmitted != null and receiptSubmitted != ''"> |
| | | AND isr.status = 1 |
| | | </if> |
| | | <if test="laboratory!=null and laboratory!=''"> |
| | | AND io.laboratory=#{laboratory} |
| | |
| | | GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model, |
| | | io2.prepare_user, |
| | | io2.entrust_code, |
| | | GROUP_CONCAT(DISTINCT isa.sample_code SEPARATOR ' ') AS sample_code, |
| | | io2.test_quantity, |
| | | io2.ins_state, |
| | | JSON_OBJECT( |
| | |
| | | from ( <include refid="selectInsOrderExport"/> |
| | | where (io.ifs_inventory_id IS NULL OR TRIM(io.ifs_inventory_id) = '') |
| | | <if test="isOrderAll != null and isOrderAll != ''"> |
| | | AND io.state in (1, 4) |
| | | AND io.state in (1, 4, 5) |
| | | </if> |
| | | <if test="laboratory!=null and laboratory!=''"> |
| | | AND io.laboratory=#{laboratory} |
| | |
| | | left join ins_product ip on isa.id = ip.ins_sample_id |
| | | left join ins_product_result ipr on ip.id = ipr.ins_product_id |
| | | where ins_order_id = #{id} |
| | | <if test="laboratory != null and laboratory != ''"> |
| | | and ( |
| | | (ip.state = 1 and ip.son_laboratory = #{laboratory}) |
| | | or ( |
| | |
| | | ) |
| | | ) |
| | | ) |
| | | </if> |
| | | </select> |
| | | <select id="getSampleEn" resultType="java.lang.String"> |
| | | select name_en |
| | |
| | | left join ins_product_result ipr on ip.id = ipr.ins_product_id |
| | | where ins_sample_id = #{id} |
| | | and state = 1 |
| | | <if test="laboratory != null and laboratory != ''"> |
| | | and ip.son_laboratory = #{laboratory} |
| | | </if> |
| | | and ins_fiber_id is null |
| | | and ins_fibers_id is null |
| | | and (standard_method_list_id is not null or template_row_index is not null) |
| | | and template_id is not null |
| | | /* çµç¼é
ç½®æ è¯ */ |
| | | <if test="cableTag == null or cableTag == ''"> |
| | | and ip.cable_tag is null |
| | |
| | | left join ins_product_result ipr on ip.id = ipr.ins_product_id |
| | | where ins_sample_id = #{id} |
| | | and state = 1 |
| | | <if test="laboratory != null and laboratory != ''"> |
| | | and ip.son_laboratory = #{laboratory} |
| | | </if> |
| | | and ins_fiber_id is null |
| | | and ins_fibers_id is null |
| | | and (standard_method_list_id is not null or template_row_index is not null) |
| | | and template_id is not null |
| | | and ip.raw_material_tag = #{rawMaterialTag} |
| | | order by sort asc |
| | | </select> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.inspect.mapper.InsSampleReceiptMapper"> |
| | | <sql id="receiptColumns"> |
| | | r.id receipt_id, r.ins_order_id order_id, r.ins_sample_id sample_id, r.status, |
| | | isa.sample sample_name, isa.sample_code, io.entrust_code, |
| | | COALESCE(iost.method_standard, sm.code) method_standard, |
| | | ip.inspection_item, r.main_inspector_id, u.name main_inspector_name, |
| | | COALESCE(isa.remark, io.remark) remark, r.reject_remark, r.receive_time, |
| | | ru.name receive_user_name |
| | | </sql> |
| | | <select id="selectPage" resultType="com.ruoyi.inspect.dto.SampleReceiptPageDto"> |
| | | SELECT |
| | | <include refid="receiptColumns"/> |
| | | FROM ins_sample_receipt r |
| | | JOIN ins_order io ON io.id = r.ins_order_id |
| | | JOIN ins_sample isa ON isa.id = r.ins_sample_id |
| | | LEFT JOIN standard_method sm ON sm.id = isa.standard_method_list_id |
| | | LEFT JOIN ( |
| | | SELECT ins_order_id, |
| | | GROUP_CONCAT(DISTINCT number ORDER BY sort SEPARATOR '\n') method_standard |
| | | FROM ins_order_standard_template |
| | | GROUP BY ins_order_id |
| | | ) iost ON iost.ins_order_id = io.id |
| | | LEFT JOIN ( |
| | | SELECT ins_sample_id, |
| | | GROUP_CONCAT(DISTINCT inspection_item ORDER BY sort SEPARATOR '\n') inspection_item |
| | | FROM ins_product |
| | | WHERE state = 1 |
| | | GROUP BY ins_sample_id |
| | | ) ip ON ip.ins_sample_id = isa.id |
| | | LEFT JOIN user u ON u.id = r.main_inspector_id |
| | | LEFT JOIN user ru ON ru.id = r.receive_user_id |
| | | WHERE 1 = 1 |
| | | <if test="query.status != null">AND r.status = #{query.status}</if> |
| | | <if test="query.entrustCode != null and query.entrustCode != ''">AND io.entrust_code LIKE CONCAT('%', |
| | | #{query.entrustCode}, '%') |
| | | </if> |
| | | <if test="query.sampleCode != null and query.sampleCode != ''">AND isa.sample_code LIKE CONCAT('%', |
| | | #{query.sampleCode}, '%') |
| | | </if> |
| | | <if test="query.sampleName != null and query.sampleName != ''">AND isa.sample LIKE CONCAT('%', |
| | | #{query.sampleName}, '%') |
| | | </if> |
| | | GROUP BY r.id |
| | | ORDER BY r.create_time DESC |
| | | </select> |
| | | <select id="selectDetail" resultType="com.ruoyi.inspect.dto.SampleReceiptPageDto"> |
| | | SELECT <include refid="receiptColumns"/> |
| | | FROM ins_sample_receipt r |
| | | JOIN ins_order io ON io.id = r.ins_order_id |
| | | JOIN ins_sample isa ON isa.id = r.ins_sample_id |
| | | LEFT JOIN standard_method sm ON sm.id = isa.standard_method_list_id |
| | | LEFT JOIN ( |
| | | SELECT ins_order_id, |
| | | GROUP_CONCAT(DISTINCT number ORDER BY sort SEPARATOR '\n') method_standard |
| | | FROM ins_order_standard_template |
| | | GROUP BY ins_order_id |
| | | ) iost ON iost.ins_order_id = io.id |
| | | LEFT JOIN ( |
| | | SELECT ins_sample_id, |
| | | GROUP_CONCAT(DISTINCT inspection_item ORDER BY sort SEPARATOR '\n') inspection_item |
| | | FROM ins_product |
| | | WHERE state = 1 |
| | | GROUP BY ins_sample_id |
| | | ) ip ON ip.ins_sample_id = isa.id |
| | | LEFT JOIN user u ON u.id = r.main_inspector_id |
| | | LEFT JOIN user ru ON ru.id = r.receive_user_id |
| | | WHERE r.id = #{id} |
| | | GROUP BY r.id |
| | | </select> |
| | | <select id="selectExportList" resultType="com.ruoyi.inspect.dto.SampleReceiptPageDto"> |
| | | SELECT <include refid="receiptColumns"/> |
| | | FROM ins_sample_receipt r |
| | | JOIN ins_order io ON io.id = r.ins_order_id |
| | | JOIN ins_sample isa ON isa.id = r.ins_sample_id |
| | | LEFT JOIN standard_method sm ON sm.id = isa.standard_method_list_id |
| | | LEFT JOIN ( |
| | | SELECT ins_order_id, |
| | | GROUP_CONCAT(DISTINCT number ORDER BY sort SEPARATOR '\n') method_standard |
| | | FROM ins_order_standard_template |
| | | GROUP BY ins_order_id |
| | | ) iost ON iost.ins_order_id = io.id |
| | | LEFT JOIN ( |
| | | SELECT ins_sample_id, |
| | | GROUP_CONCAT(DISTINCT inspection_item ORDER BY sort SEPARATOR '\n') inspection_item |
| | | FROM ins_product |
| | | WHERE state = 1 |
| | | GROUP BY ins_sample_id |
| | | ) ip ON ip.ins_sample_id = isa.id |
| | | LEFT JOIN user u ON u.id = r.main_inspector_id |
| | | LEFT JOIN user ru ON ru.id = r.receive_user_id |
| | | WHERE 1 = 1 |
| | | <if test="query.status != null"> AND r.status = #{query.status}</if> |
| | | <if test="query.entrustCode != null and query.entrustCode != ''"> AND io.entrust_code LIKE CONCAT('%', #{query.entrustCode}, '%')</if> |
| | | <if test="query.sampleCode != null and query.sampleCode != ''"> AND isa.sample_code LIKE CONCAT('%', #{query.sampleCode}, '%')</if> |
| | | <if test="query.sampleName != null and query.sampleName != ''"> AND isa.sample LIKE CONCAT('%', #{query.sampleName}, '%')</if> |
| | | GROUP BY r.id |
| | | ORDER BY r.create_time DESC |
| | | </select> |
| | | <select id="selectForUpdate" resultType="com.ruoyi.inspect.pojo.InsSampleReceipt"> |
| | | SELECT * FROM ins_sample_receipt WHERE id = #{id} FOR UPDATE |
| | | </select> |
| | | <insert id="insertIgnore"> |
| | | INSERT IGNORE INTO ins_sample_receipt(ins_order_id, ins_sample_id, status, create_time, update_time) |
| | | VALUES(#{orderId}, #{sampleId}, 0, NOW(), NOW()) |
| | | </insert> |
| | | </mapper> |