From c935e18fab3604e493de29b164ea4019244bb182 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 21 五月 2026 17:59:58 +0800
Subject: [PATCH] 对外Mes查询外购订单零件批次属性接口开发
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java | 127 +++++++++++++++++++++++++++++++++--------
1 files changed, 101 insertions(+), 26 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
index d4c2a25..fd57189 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
@@ -1,6 +1,9 @@
package com.ruoyi.inspect.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -10,6 +13,8 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.enums.ContractType;
import com.ruoyi.common.oa.OAProcess;
import com.ruoyi.common.oa.OAProperty;
import com.ruoyi.common.oa.OAResult;
@@ -18,6 +23,7 @@
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.PushOADto;
import com.ruoyi.inspect.dto.UnqualifiedHandlerDto;
+import com.ruoyi.inspect.excel.InsUnqualifiedHandlerExcelData;
import com.ruoyi.inspect.mapper.InsOrderMapper;
import com.ruoyi.inspect.mapper.InsUnqualifiedHandlerMapper;
import com.ruoyi.inspect.pojo.CommonOa;
@@ -28,19 +34,23 @@
import com.ruoyi.inspect.service.InsUnqualifiedHandlerFileService;
import com.ruoyi.inspect.service.InsUnqualifiedHandlerService;
import com.ruoyi.inspect.vo.UnqualifiedHandlerVO;
-import com.ruoyi.system.mapper.UserMapper;
-import com.ruoyi.system.service.UserService;
+import com.ruoyi.system.service.ISysDictTypeService;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* @author 27233
@@ -60,11 +70,55 @@
private InsUnqualifiedHandlerFileService insUnqualifiedHandlerFileService;
@Resource
private InsOrderMapper insOrderMapper;
+ @Resource
+ private ISysDictTypeService sysDictTypeService;
@Override
public IPage<UnqualifiedHandlerVO> pageList(Page page, UnqualifiedHandlerDto unqualifiedHandlerDto) {
- return baseMapper.selectPageList(page, QueryWrappers.queryWrappers(unqualifiedHandlerDto));
+ String feedbackStartDate = unqualifiedHandlerDto.getFeedbackStartTime();
+ String feedbackEndDate = unqualifiedHandlerDto.getFeedbackEndTime();
+ unqualifiedHandlerDto.setFeedbackStartTime(null);
+ unqualifiedHandlerDto.setFeedbackEndTime(null);
+ return baseMapper.selectPageList(page, QueryWrappers.queryWrappers(unqualifiedHandlerDto),feedbackStartDate,feedbackEndDate);
+ }
+
+ @Override
+ public void exportUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto, HttpServletResponse response) {
+ response.reset();
+ try{
+ //鏌ヨ瀛楀吀
+ List<SysDictData> materialPropType = sysDictTypeService.selectDictDataByType("material_prop_type");//鐗╂枡灞炴��
+ List<SysDictData> categoriesNoConformities = sysDictTypeService.selectDictDataByType("categories_no_conformities");//涓嶅悎鏍煎垎绫�
+ List<SysDictData> attributionNoConformities = sysDictTypeService.selectDictDataByType("attribution_no_conformities");// 涓嶅悎鏍煎綊灞�
+ //鏌ヨ涓嶅悎鏍煎鐞嗚褰�
+ IPage<UnqualifiedHandlerVO> pageList = pageList(new Page<>(-1, -1), unqualifiedHandlerDto);
+ List<InsUnqualifiedHandlerExcelData> records = pageList.getRecords().stream().map(m->{
+ InsUnqualifiedHandlerExcelData handlerExcelData = new InsUnqualifiedHandlerExcelData();
+ BeanUtil.copyProperties(m,handlerExcelData);
+ handlerExcelData.setMaterialProp(materialPropType.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getMaterialProp())).findFirst().orElse(new SysDictData()).getDictLabel());
+ handlerExcelData.setClassification(categoriesNoConformities.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getClassification())).findFirst().orElse(new SysDictData()).getDictLabel());
+ handlerExcelData.setOffGradeAscription(attributionNoConformities.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getOffGradeAscription())).findFirst().orElse(new SysDictData()).getDictLabel());
+ return handlerExcelData;
+ }).collect(Collectors.toList());
+ //璁剧疆response
+ String fileName = "涓嶅悎鏍煎鐞嗚褰�" + ExcelTypeEnum.XLSX.getValue();
+ fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+ //瀵煎嚭
+
+ EasyExcel.write(response.getOutputStream(), InsUnqualifiedHandlerExcelData.class)
+ .sheet()
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .doWrite(records);
+ }catch (Exception e){
+ e.printStackTrace();
+ throw new RuntimeException("涓嶅悎鏍煎鐞嗚褰曞鍑哄け璐�");
+ }
+
}
@Override
@@ -72,25 +126,33 @@
//鑾峰彇涓嶅悎鏍煎鐞嗚褰�
UnqualifiedHandlerVO vo = baseMapper.findById(pushOADto.getHandlerId());
- if (vo.getRequestId() != null) {
- throw new ErrorException("璇ヤ笉鍚堟牸澶勭悊宸叉彁浜よ繃OA");
- }
-
//鎻愪氦oa鐩稿叧瀛楁璧嬪��
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
Map<String, String> mainFields = new HashMap<>();
- mainFields.put("bh", vo.getNo());//缂栧彿
- mainFields.put("gysmc", vo.getSupplierName());//渚涘簲鍟嗗悕绉�
- mainFields.put("wlmc", vo.getMaterialName());//鐗╂枡鍚嶇О
- mainFields.put("scpc", vo.getProductionBatch());//鐢熶骇鎵规
- mainFields.put("dhsl", vo.getCargoQuantity());//鍒拌揣鏁伴噺
- mainFields.put("ggxh", vo.getSpecsModels());//瑙勬牸鍨嬪彿
- mainFields.put("bjrq", vo.getInspectTime().format(formatter));//鎶ユ鏃ユ湡
- mainFields.put("fkr", SecurityUtils.getUsername());//鍙嶉浜�
- mainFields.put("fkrq", vo.getFeedbackTime().format(formatter));//鍙嶉鏃ユ湡
- mainFields.put("fl", vo.getClassification());//鍒嗙被
- mainFields.put("bhggs", vo.getOffGradeAscription());//涓嶅悎鏍煎綊灞�
- mainFields.put("bhgqkms", vo.getUnqualifiedDesc());//涓嶅悎鏍兼儏鍐垫弿杩�
+// mainFields.put("bh", vo.getNo());//缂栧彿
+// mainFields.put("gysmc", vo.getSupplierName());//渚涘簲鍟嗗悕绉�
+// mainFields.put("wlmc", vo.getMaterialName());//鐗╂枡鍚嶇О
+// mainFields.put("scpc", vo.getProductionBatch());//鐢熶骇鎵规
+// mainFields.put("dhsl", vo.getCargoQuantity());//鍒拌揣鏁伴噺
+// mainFields.put("ggxh", vo.getSpecsModels());//瑙勬牸鍨嬪彿
+// mainFields.put("bjrq", vo.getInspectTime().format(formatter));//鎶ユ鏃ユ湡
+// mainFields.put("fkr", SecurityUtils.getUsername());//鍙嶉浜�
+// mainFields.put("fkrq", vo.getFeedbackTime().format(formatter));//鍙嶉鏃ユ湡
+// mainFields.put("fl", vo.getClassification());//鍒嗙被
+// mainFields.put("bhggs", vo.getOffGradeAscription());//涓嶅悎鏍煎綊灞�
+// mainFields.put("bhgqkms", vo.getUnqualifiedDesc());//涓嶅悎鏍兼儏鍐垫弿杩�
+// mainFields.put("bh", vo.getNo());//缂栧彿
+ mainFields.put("gysmcsuppliername", vo.getSupplierName());//渚涘簲鍟嗗悕绉�
+ mainFields.put("wlmcmaterialname", vo.getMaterialName());//鐗╂枡鍚嶇О
+ mainFields.put("scpcproductionbatch", vo.getProductionBatch());//鐢熶骇鎵规
+ mainFields.put("dhslcargoquantity", vo.getCargoQuantity());//鍒拌揣鏁伴噺
+ mainFields.put("ggxhspecificationsmodels", vo.getSpecsModels());//瑙勬牸鍨嬪彿
+ mainFields.put("bjrqdeclarationinspectdate", vo.getInspectTime().format(formatter));//鎶ユ鏃ユ湡
+ mainFields.put("fkrprovideroffeedback", SecurityUtils.getUsername());//鍙嶉浜�
+ mainFields.put("fkrqfeedbacktime", vo.getFeedbackTime().format(formatter));//鍙嶉鏃ユ湡
+ mainFields.put("flclassification", vo.getClassification());//鍒嗙被
+ mainFields.put("bhggsoffgradeascription", vo.getOffGradeAscription());//涓嶅悎鏍煎綊灞�
+ mainFields.put("bhgqkmsunqualifieddescription", vo.getUnqualifiedDesc());//涓嶅悎鏍兼儏鍐垫弿杩�
//鏌ヨ闄勪欢
List<InsUnqualifiedHandlerFile> handlerFiles = insUnqualifiedHandlerFileService.list(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
@@ -98,7 +160,7 @@
if (CollectionUtils.isNotEmpty(handlerFiles)) {
StringBuilder fileUrl = new StringBuilder();
for (int i = 0; i < handlerFiles.size(); i++) {
- String path = handlerFiles.get(i).getType().equals(1) ? "/lims/img/" : "/lims/word/";
+ String path = handlerFiles.get(i).getType().equals(1) ? "/img/" : "/word/";
if (i == handlerFiles.size() - 1) {
fileUrl.append("<a href='" + oaProperty.getProdIp()).append(path + handlerFiles.get(i).getFileUrl()
+ "'target='_blank'>" + handlerFiles.get(i).getFileName() + "</a>");
@@ -107,7 +169,7 @@
+ "'target='_blank'>" + handlerFiles.get(i).getFileName() + "</a>").append("<br/>");
}
}
- mainFields.put("xlimsfj", fileUrl.toString());
+ mainFields.put("fjlj", fileUrl.toString());
}
//娴佺▼鏍囬
String requestName = vo.getHeadline();
@@ -115,9 +177,14 @@
boolean oa = false;
try {
log.info("鍙戣捣涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼");
- String unqualifiedProcessId = oaProperty.getUnqualifiedProcessId();
+ //鏍规嵁IFS鍩熻幏鍙栧搴旂殑娴佺▼id
+ if(StringUtils.isBlank(pushOADto.getContract())){
+ throw new RuntimeException("IFS鍩熴��"+pushOADto.getContract()+"銆戜笉瀛樺湪锛孫A娴佺▼鎻愪氦澶辫触");
+ }
+ String unqualifiedProcessId = StringUtils.equals(ContractType.ZTNS.getValue(),pushOADto.getContract())?oaProperty.getUnqualifiedProcessId():oaProperty.getUnqualifiedProcessIdByKJNS();
+ log.info("涓嶅悎鏍兼祦绋嬭姹傚弬鏁�:{},{},{},{}",mainFields, requestName, unqualifiedProcessId,SecurityUtils.getUsername());
OAResult oaResult = OAProcess.start(mainFields, requestName, unqualifiedProcessId,SecurityUtils.getUsername());
- log.info("涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼缁撴潫锛岃繑鍥炵粨鏋�->{}" + oaResult);
+ log.info("涓嶅悎鏍兼祦绋婭D:{},涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼缁撴潫锛岃繑鍥炵粨鏋�->{}",unqualifiedProcessId,oaResult);
oa = oaResult.success();
if (oa) {
String addWorkflowResult = oaResult.getAddWorkflowResult();
@@ -230,6 +297,7 @@
* @return
*/
@Override
+ @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
public boolean updateUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto) {
// 鍒犻櫎闄勪欢, 閲嶆柊娣诲姞
insUnqualifiedHandlerFileService.remove(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
@@ -240,8 +308,15 @@
}
insUnqualifiedHandlerFileService.updateBatchById(unqualifiedHandlerDto.getUnqualifiedHandlerFiles());
}
-
- return this.updateById(unqualifiedHandlerDto);
+ boolean isUpdated = this.updateById(unqualifiedHandlerDto);
+ if(isUpdated){
+ //鎺ㄩ�丱A
+ PushOADto pushOADto = new PushOADto();
+ pushOADto.setHandlerId(unqualifiedHandlerDto.getId());
+ pushOADto.setContract(unqualifiedHandlerDto.getContract());
+ pushOA(pushOADto);
+ }
+ return true;
}
/**
--
Gitblit v1.9.3