From 16807e7a9b856a78abbfd80d7ec69e784d5127c7 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期五, 04 七月 2025 09:16:16 +0800
Subject: [PATCH] 检验方案

---
 src/main/java/org/jeecg/modules/qms/controller/InspectionPlanController.java    |  107 ++++++++++++++++++++++++--
 src/main/java/org/jeecg/modules/qms/controller/InspectionItemController.java    |   38 +++++++++
 src/main/java/org/jeecg/modules/qms/service/IInspectionItemService.java         |    2 
 src/main/java/org/jeecg/modules/qms/entity/InspectionPlan.java                  |   17 ++++
 src/main/java/org/jeecg/modules/qms/mapper/xml/InspectionItemMapper.xml         |   41 ++++++++++
 src/main/java/org/jeecg/modules/qms/mapper/InspectionItemMapper.java            |    2 
 src/main/java/org/jeecg/modules/qms/service/impl/InspectionItemServiceImpl.java |   17 ++++
 7 files changed, 214 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/jeecg/modules/qms/controller/InspectionItemController.java b/src/main/java/org/jeecg/modules/qms/controller/InspectionItemController.java
index 1c38dc3..193ae13 100644
--- a/src/main/java/org/jeecg/modules/qms/controller/InspectionItemController.java
+++ b/src/main/java/org/jeecg/modules/qms/controller/InspectionItemController.java
@@ -237,4 +237,42 @@
 		 return Result.OK(pageList);
 	 }
 
+
+	 /**
+	  * 鏍规嵁妫�楠屾柟妗坕d鏌ヨ
+	  *
+	  * @param inspectionPlanId
+	  * @param pageNo
+	  * @param pageSize
+	  * @return
+	  */
+	 @ApiOperation(value="妫�楠岄」鐩�-鍒嗛〉鍒楄〃鏌ヨ", notes="妫�楠岄」鐩�-鍒嗛〉鍒楄〃鏌ヨ")
+	 @GetMapping(value = "/queryListByPlanId")
+	 public Result<?> queryListByPlanId(String inspectionPlanId,
+								@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
+		 IPage<Map<String, Object>> pageList = inspectionItemService.queryListByPlanId(pageNo,pageSize, inspectionPlanId);
+		 for(Map<String, Object> r : pageList.getRecords()){
+			 String inspectionTools = (String) r.get("inspectionTools");
+			 if(StringUtils.isNotBlank(inspectionTools)){
+				 List<String> inspectionToolsList = Arrays.asList(inspectionTools.split(","));
+				 List<String> inspectionToolsNameList = new ArrayList<>();
+				 String inspectionToolsNames = "";
+				 for(String inspectionTool : inspectionToolsList){
+					 InspectionTools inspectionTools1 = inspectionToolsService.getById(inspectionTool);
+					 if(inspectionTools1 != null){
+						 inspectionToolsNameList.add(inspectionTools1.getToolName());
+					 }
+				 }
+				 inspectionToolsNames = inspectionToolsNameList.stream()
+						 .collect(Collectors.joining(","));
+				 r.put("inspectionToolsNames",inspectionToolsNames);
+
+			 }
+
+		 }
+
+		 return Result.OK(pageList);
+	 }
+
 }
diff --git a/src/main/java/org/jeecg/modules/qms/controller/InspectionPlanController.java b/src/main/java/org/jeecg/modules/qms/controller/InspectionPlanController.java
index 764eac7..99bbb3b 100644
--- a/src/main/java/org/jeecg/modules/qms/controller/InspectionPlanController.java
+++ b/src/main/java/org/jeecg/modules/qms/controller/InspectionPlanController.java
@@ -1,20 +1,28 @@
 package org.jeecg.modules.qms.controller;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.qms.entity.Defect;
+import org.jeecg.modules.qms.entity.InspectionItem;
 import org.jeecg.modules.qms.entity.InspectionPlan;
+import org.jeecg.modules.qms.entity.InspectionPlanItem;
+import org.jeecg.modules.qms.service.IInspectionPlanItemService;
 import org.jeecg.modules.qms.service.IInspectionPlanService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -51,6 +59,9 @@
 public class InspectionPlanController extends JeecgController<InspectionPlan, IInspectionPlanService> {
 	@Autowired
 	private IInspectionPlanService inspectionPlanService;
+
+	 @Autowired
+	 private IInspectionPlanItemService inspectionPlanItemService;
 	
 	/**
 	 * 鍒嗛〉鍒楄〃鏌ヨ
@@ -77,31 +88,57 @@
 	/**
 	 *   娣诲姞
 	 *
-	 * @param inspectionPlan
+	 * @param jSONObject
 	 * @return
 	 */
 	@AutoLog(value = "妫�楠屾柟妗�-娣诲姞")
 	@ApiOperation(value="妫�楠屾柟妗�-娣诲姞", notes="妫�楠屾柟妗�-娣诲姞")
-	//@RequiresPermissions("org.jeecg.modules:qms_inspection_plan:add")
 	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody InspectionPlan inspectionPlan) {
+	public Result<?> add(@RequestBody JSONObject jSONObject) {
+		InspectionPlan inspectionPlan = jSONObject.toJavaObject(InspectionPlan.class);
 		inspectionPlan.setPlanStatus(CommonConstant.STATUS_1);
+		inspectionPlan.setPublishStatus(CommonConstant.STATUS_0);
+		inspectionPlan.setIsNewVersion("1");
+		inspectionPlan.setVersion("V1");
 		inspectionPlanService.save(inspectionPlan);
+		//淇濆瓨妫�楠屾柟妗堟楠岄」鐩叧鑱斿叧绯�
+		JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+		List<InspectionPlanItem> inspectionPlanItemList = jsonArray.toJavaList(InspectionPlanItem.class);
+		for(int i = 0;i<inspectionPlanItemList.size();i++){
+			InspectionPlanItem inspectionPlanItem = inspectionPlanItemList.get(i);
+			inspectionPlanItem.setItemId(inspectionPlanItem.getId());
+			inspectionPlanItem.setId(null);
+			inspectionPlanItem.setPlanId(inspectionPlan.getId());
+		}
+		inspectionPlanItemService.saveBatch(inspectionPlanItemList);
 		return Result.OK("娣诲姞鎴愬姛锛�");
 	}
 	
 	/**
 	 *  缂栬緫
 	 *
-	 * @param inspectionPlan
+	 * @param jSONObject
 	 * @return
 	 */
 	@AutoLog(value = "妫�楠屾柟妗�-缂栬緫")
 	@ApiOperation(value="妫�楠屾柟妗�-缂栬緫", notes="妫�楠屾柟妗�-缂栬緫")
-	//@RequiresPermissions("org.jeecg.modules:qms_inspection_plan:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody InspectionPlan inspectionPlan) {
+	public Result<?> edit(@RequestBody JSONObject jSONObject) {
+		InspectionPlan inspectionPlan = jSONObject.toJavaObject(InspectionPlan.class);
+		inspectionPlan.setPlanStatus(CommonConstant.STATUS_1);
 		inspectionPlanService.updateById(inspectionPlan);
+		//鍒犻櫎鍘熷叧鑱斿叧绯�
+		inspectionPlanItemService.removeBatchByIds(inspectionPlanItemService.lambdaQuery().eq(InspectionPlanItem::getPlanId,inspectionPlan.getId()).list());
+		//淇濆瓨妫�楠屾柟妗堟楠岄」鐩叧鑱斿叧绯�
+		JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+		List<InspectionPlanItem> inspectionPlanItemList = jsonArray.toJavaList(InspectionPlanItem.class);
+		for(int i = 0;i<inspectionPlanItemList.size();i++){
+			InspectionPlanItem inspectionPlanItem = inspectionPlanItemList.get(i);
+			inspectionPlanItem.setPlanId(inspectionPlan.getId());
+			inspectionPlanItem.setItemId(inspectionPlanItem.getId());
+			inspectionPlanItem.setId(null);
+		}
+		inspectionPlanItemService.saveBatch(inspectionPlanItemList);
 		return Result.OK("缂栬緫鎴愬姛!");
 	}
 	
@@ -117,6 +154,8 @@
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		inspectionPlanService.removeById(id);
+		//鍒犻櫎鍏宠仈鍏崇郴
+		inspectionPlanItemService.removeBatchByIds(inspectionPlanItemService.lambdaQuery().eq(InspectionPlanItem::getPlanId,id).list());
 		return Result.OK("鍒犻櫎鎴愬姛!");
 	}
 	
@@ -191,4 +230,54 @@
 		 return Result.ok("鎿嶄綔鎴愬姛锛�");
 	 }
 
+	 @AutoLog(value = "妫�楠屾柟妗�-鍙戝竷")
+	 @ApiOperation(value = "妫�楠屾柟妗�-鍙戝竷", notes = "妫�楠屾柟妗�-鍙戝竷")
+	 @PutMapping(value = "/publish")
+	 public Result<?> publish(@RequestParam(name = "id", required = true) String id) {
+		 InspectionPlan inspectionPlan = inspectionPlanService.getById(id);
+		 if (CommonConstant.STATUS_1.equals(inspectionPlan.getPublishStatus())) {
+			 inspectionPlan.setPublishStatus(CommonConstant.STATUS_0);
+		 } else {
+			 inspectionPlan.setPublishStatus(CommonConstant.STATUS_1);
+		 }
+		 inspectionPlanService.updateById(inspectionPlan);
+		 return Result.ok("鎿嶄綔鎴愬姛锛�");
+	 }
+
+	 @AutoLog(value = "妫�楠屾柟妗�-鍗囩増")
+	 @ApiOperation(value = "妫�楠屾柟妗�-鍗囩増", notes = "妫�楠屾柟妗�-鍗囩増")
+	 @PutMapping(value = "/version")
+	 public Result<?> version(@RequestParam(name = "id", required = true) String id) {
+		 InspectionPlan inspectionPlan = inspectionPlanService.getById(id);
+		 //澶嶅埗褰撳墠妫�楠屾柟妗�
+		 InspectionPlan newInspectionPlan = new InspectionPlan();
+		 BeanUtil.copyProperties(inspectionPlan,newInspectionPlan);
+		 newInspectionPlan.setId(null);
+		 newInspectionPlan.setPlanStatus(CommonConstant.STATUS_1);
+		 newInspectionPlan.setPublishStatus(CommonConstant.STATUS_0);
+		 newInspectionPlan.setCreateTime(new Date());
+		 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		 newInspectionPlan.setCreateBy(user.getUsername());
+		 //璁$畻鐗堟湰锛岀増鏈�+1
+		 String number = inspectionPlan.getVersion().substring(1);
+		 BigDecimal newNumber = new BigDecimal(number).add(BigDecimal.ONE);
+		 newInspectionPlan.setVersion("V"+newNumber);
+		 newInspectionPlan.setIsNewVersion("1");
+		 inspectionPlanService.save(newInspectionPlan);
+		 //澶嶅埗妫�楠屾柟妗堟楠岄」鐩�
+		 List<InspectionPlanItem> inspectionPlanItemList = inspectionPlanItemService.lambdaQuery().eq(InspectionPlanItem::getPlanId,inspectionPlan.getId()).list();
+		 List<InspectionPlanItem> newInspectionPlanItemList = new ArrayList<>();
+		 newInspectionPlanItemList.addAll(inspectionPlanItemList);
+		 for(InspectionPlanItem inspectionPlanItem : inspectionPlanItemList){
+			 inspectionPlanItem.setId(null);
+			 inspectionPlanItem.setPlanId(newInspectionPlan.getId());
+		 }
+		 inspectionPlanItemService.saveBatch(newInspectionPlanItemList);
+		 //鏇存柊鍘熸楠屾柟妗堜负绂佺敤
+		 inspectionPlan.setPlanStatus(CommonConstant.STATUS_0);
+		 inspectionPlan.setIsNewVersion("0");
+		 inspectionPlanService.updateById(inspectionPlan);
+		 return Result.ok("鍗囩増鎴愬姛锛�");
+	 }
+
 }
diff --git a/src/main/java/org/jeecg/modules/qms/entity/InspectionPlan.java b/src/main/java/org/jeecg/modules/qms/entity/InspectionPlan.java
index e98d3f6..e8abd2f 100644
--- a/src/main/java/org/jeecg/modules/qms/entity/InspectionPlan.java
+++ b/src/main/java/org/jeecg/modules/qms/entity/InspectionPlan.java
@@ -77,7 +77,23 @@
 	/**鏂规鐘舵��*/
 	@Excel(name = "鏂规鐘舵��", width = 15)
     @ApiModelProperty(value = "鏂规鐘舵��")
+    @Dict(dicCode = "plan_status")
     private String planStatus;
+
+    /**鏂规鍙戝竷鐘舵��*/
+    @Excel(name = "鏂规鍙戝竷鐘舵��", width = 15)
+    @ApiModelProperty(value = "鏂规鍙戝竷鐘舵��")
+    private String publishStatus;
+
+    /**鏂规鐗堟湰*/
+    @Excel(name = "鏂规鐗堟湰", width = 15)
+    @ApiModelProperty(value = "鏂规鐗堟湰")
+    private String version;
+
+    /**鏄惁涓烘渶鏂扮増鏈�*/
+    @Excel(name = "鏄惁涓烘渶鏂扮増鏈�", width = 15)
+    @ApiModelProperty(value = "鏄惁涓烘渶鏂扮増鏈�")
+    private String isNewVersion;
 	/**鏂规鍒嗙被;棣栨銆佸贰妫�銆佸畬宸ユ*/
 	@Excel(name = "鏂规鍒嗙被;棣栨銆佸贰妫�銆佸畬宸ユ", width = 15)
     @ApiModelProperty(value = "鏂规鍒嗙被;棣栨銆佸贰妫�銆佸畬宸ユ")
@@ -86,6 +102,7 @@
 	/**鎶芥牱瑙勫垯ID*/
 	@Excel(name = "鎶芥牱瑙勫垯ID", width = 15)
     @ApiModelProperty(value = "鎶芥牱瑙勫垯ID")
+    @Dict(dictTable = "qms_sampling_rules",dicCode = "id",dicText = "rule_name")
     private String ruleId;
 	/**鏂规鎻忚堪*/
 	@Excel(name = "鏂规鎻忚堪", width = 15)
diff --git a/src/main/java/org/jeecg/modules/qms/mapper/InspectionItemMapper.java b/src/main/java/org/jeecg/modules/qms/mapper/InspectionItemMapper.java
index 7530ed4..37bd6a3 100644
--- a/src/main/java/org/jeecg/modules/qms/mapper/InspectionItemMapper.java
+++ b/src/main/java/org/jeecg/modules/qms/mapper/InspectionItemMapper.java
@@ -19,4 +19,6 @@
 public interface InspectionItemMapper extends BaseMapper<InspectionItem> {
 
     public IPage<Map<String, Object>> queryList(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper);
+
+    public IPage<Map<String, Object>> queryListByPlanId(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper);
 }
diff --git a/src/main/java/org/jeecg/modules/qms/mapper/xml/InspectionItemMapper.xml b/src/main/java/org/jeecg/modules/qms/mapper/xml/InspectionItemMapper.xml
index bf9049b..582c252 100644
--- a/src/main/java/org/jeecg/modules/qms/mapper/xml/InspectionItemMapper.xml
+++ b/src/main/java/org/jeecg/modules/qms/mapper/xml/InspectionItemMapper.xml
@@ -15,11 +15,50 @@
             t1.create_time createTime,
             t2.item_text itemCategoryName,
             t3.item_text qualitativeOrQuantitativeName,
-            t1.remark
+            t1.remark,
+            t4.sorter,
+            t4.standard_value standardValue,
+            t4.max_value 'maxValue',
+            t4.min_value 'minValue',
+            t4.plan_id planId
         FROM
             qms_inspection_item t1
+                left join qms_inspection_plan_item t4 on t4.item_id = t1.id
                 LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'item_category' ) t2 ON t2.item_value = t1.item_category
                 left join ( SELECT * FROM v_sys_dict WHERE dict_code = 'qualitative_or_quantitative' ) t3 on t3.item_value = t1.qualitative_or_quantitative
             ${ew.customSqlSegment}
     </select>
+
+
+    <select id="queryListByPlanId" resultType="map" parameterType="String">
+        SELECT
+            t1.id,
+            t1.item_code itemCode,
+            t1.item_name itemName,
+            t1.item_category itemCategory,
+            t1.qualitative_or_quantitative qualitativeOrQuantitative,
+            t1.inspection_tools inspectionTools,
+            t1.item_status itemStatus,
+            t1.create_time createTime,
+            t2.sorter,
+            t2.standard_value standardValue,
+            t2.min_value 'minValue',
+            t2.max_value 'maxValue',
+            t3.plan_code planCode,
+            t3.plan_name planName,
+            t3.material_number materialNumber,
+            t3.material_name materialName,
+            t6.item_text planCategoryName,
+            t4.item_text itemCategoryName,
+            t5.item_text qualitativeOrQuantitativeName,
+            t1.remark
+        FROM
+            qms_inspection_item t1
+                INNER JOIN qms_inspection_plan_item t2 ON t2.item_id = t1.id
+                INNER JOIN qms_inspection_plan t3 ON t3.id = t2.plan_id
+                LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'item_category' ) t4 ON t4.item_value = t1.item_category
+                LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'qualitative_or_quantitative' ) t5 ON t5.item_value = t1.qualitative_or_quantitative
+                LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'plan_category' ) t6 ON t6.item_value = t3.plan_category
+        ${ew.customSqlSegment}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/qms/service/IInspectionItemService.java b/src/main/java/org/jeecg/modules/qms/service/IInspectionItemService.java
index 3d0d3e4..e8b9fac 100644
--- a/src/main/java/org/jeecg/modules/qms/service/IInspectionItemService.java
+++ b/src/main/java/org/jeecg/modules/qms/service/IInspectionItemService.java
@@ -15,4 +15,6 @@
 public interface IInspectionItemService extends IService<InspectionItem> {
 
     IPage<Map<String, Object>> queryList(Integer pageNo, Integer pageSize, Map<String, String> query);
+
+    IPage<Map<String, Object>> queryListByPlanId(Integer pageNo, Integer pageSize, String inspectionPlanId);
 }
diff --git a/src/main/java/org/jeecg/modules/qms/service/impl/InspectionItemServiceImpl.java b/src/main/java/org/jeecg/modules/qms/service/impl/InspectionItemServiceImpl.java
index b851290..25994e4 100644
--- a/src/main/java/org/jeecg/modules/qms/service/impl/InspectionItemServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/qms/service/impl/InspectionItemServiceImpl.java
@@ -51,4 +51,21 @@
         }
         return super.getBaseMapper().queryList(pageData,queryWrapper);
     }
+
+    @Override
+    public IPage<Map<String, Object>> queryListByPlanId(Integer pageNo, Integer pageSize, String inspectionPlanId) {
+        if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) {
+            ExceptionCast.cast("鍙傛暟閿欒");
+        }
+        IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
+        QueryWrapper<Map> queryWrapper = Wrappers.query();
+        if (null != inspectionPlanId) {
+           queryWrapper.eq("t2.plan_id", inspectionPlanId);
+            // 鎺掑簭鍐欐硶
+            List<OrderItem> orderItems = new ArrayList<>();
+            orderItems.add(OrderItem.desc("t2.sorter"));
+            ((Page<Map>) pageData).setOrders(orderItems);
+        }
+        return super.getBaseMapper().queryListByPlanId(pageData,queryWrapper);
+    }
 }

--
Gitblit v1.9.3