From b012b819cb8b2ce883aa68d0c179a156b000598e Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期四, 29 一月 2026 18:11:36 +0800
Subject: [PATCH] 添加状态:停止服务-cgf

---
 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/semanticword/controller/SemanticWordController.java |  169 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 158 insertions(+), 11 deletions(-)

diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/semanticword/controller/SemanticWordController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/semanticword/controller/SemanticWordController.java
index 2112505..70f2a47 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/semanticword/controller/SemanticWordController.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/semanticword/controller/SemanticWordController.java
@@ -1,11 +1,9 @@
 package org.jeecg.modules.demo.semanticword.controller;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
@@ -17,10 +15,13 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
+import org.jeecg.modules.demo.contract.entity.Contract;
 import org.jeecg.modules.demo.contract.entity.SemanticWord;
 import org.jeecg.modules.demo.contract.service.IContractService;
 import org.jeecg.modules.demo.contract.service.ISemanticWordService;
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
@@ -41,7 +42,9 @@
 public class SemanticWordController extends JeecgController<SemanticWord, ISemanticWordService> {
 	@Autowired
 	private ISemanticWordService semanticWordService;
-	
+
+     @Autowired
+     private ISysUserService sysUserService;
 	/**
 	 * 鍒嗛〉鍒楄〃鏌ヨ
 	 *
@@ -58,15 +61,32 @@
 								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
-        if (semanticWord.getCreateBy() != null && semanticWord.getCreateBy().equals("admin")) {
-            semanticWord.setCreateBy(null);
-        }
 
         // 鑷畾涔夋煡璇㈣鍒�
         Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>();
         // 鑷畾涔夊閫夌殑鏌ヨ瑙勫垯涓猴細LIKE_WITH_OR
         customeRuleMap.put("status", QueryRuleEnum.LIKE_WITH_OR);
-        QueryWrapper<SemanticWord> queryWrapper = QueryGenerator.initQueryWrapper(semanticWord, req.getParameterMap(),customeRuleMap);
+        QueryWrapper<SemanticWord> queryWrapper;
+        if (semanticWord.getCreateBy() != null && semanticWord.getCreateBy().equals("admin")) {
+            semanticWord.setCreateBy(null);
+            queryWrapper = QueryGenerator.initQueryWrapper(semanticWord, req.getParameterMap(),customeRuleMap);
+        }else if (semanticWord.getCreateBy() != null) {
+            QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
+            String user = semanticWord.getCreateBy();
+            semanticWord.setCreateBy(null);
+            queryWrapper = QueryGenerator.initQueryWrapper(semanticWord, req.getParameterMap(), customeRuleMap);
+            sysUserQueryWrapper.eq("agent_sales", user);
+            List<SysUser> iPageResult = sysUserService.list(sysUserQueryWrapper);
+            List<String> name = new ArrayList<>();
+            for (SysUser sysUser : iPageResult) {
+                name.add(sysUser.getUsername());
+            }
+            name.add(user);
+            queryWrapper.in("create_by", name);
+        }else {
+            queryWrapper = QueryGenerator.initQueryWrapper(semanticWord, req.getParameterMap(),customeRuleMap);
+        }
+
         if (semanticWord.getUser() != null && !semanticWord.getUser().equals("admin")) {
             queryWrapper.eq("create_by", semanticWord.getUser());
         }
@@ -76,6 +96,14 @@
             queryWrapper.inSql(
                     "contract_id",  // semantic_word琛ㄤ腑鍏宠仈contract鐨勫瓧娈�
                     "SELECT id FROM contract WHERE customer_name = '" + customerName + "'"
+            );
+        }
+        String isDropService = semanticWord.getIsDropService();
+        if (customerName != null && !customerName.isEmpty()) {
+            // 鎷兼帴鍏宠仈鏉′欢锛歴emantic_word鍏宠仈contract锛宑ontract鍏宠仈customer锛岄�氳繃瀹㈡埛鍚嶇О杩囨护
+            queryWrapper.inSql(
+                    "contract_id",  // semantic_word琛ㄤ腑鍏宠仈contract鐨勫瓧娈�
+                    "SELECT id FROM contract WHERE is_drop_service = '" + isDropService + "'"
             );
         }
         String agentName = semanticWord.getAgentName();
@@ -124,6 +152,114 @@
         return Result.OK(pageList);
 	}
 
+
+     //@AutoLog(value = "璇箟璇�-鏌ヨ璇箟鎬婚噺")
+     @Operation(summary="璇箟璇�-鏌ヨ璇箟鎬婚噺")
+     @GetMapping(value = "/count")
+     public Result<IPage<SemanticWord>> queryPageList(Contract contract,
+                                                      SemanticWord semanticWord,
+                                                      @RequestParam(name="role", defaultValue="鏃�") String role,
+                                                      @RequestParam(name="user", defaultValue="鏃�") String user,
+                                                      HttpServletRequest req) {
+
+         // 鑷畾涔夋煡璇㈣鍒�
+         Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>();
+         if (contract.getCreateBy() != null) {
+             user = contract.getCreateBy();
+         }
+         // 鑷畾涔夊閫夌殑鏌ヨ瑙勫垯涓猴細LIKE_WITH_OR
+         customeRuleMap.put("reviewStatus", QueryRuleEnum.LIKE_WITH_OR);
+         QueryWrapper<Contract> queryWrapper = QueryGenerator.initQueryWrapper(contract, req.getParameterMap(),customeRuleMap,true);
+         if (contract.getAgentAuditorIsNull() != null) {
+             if (contract.getAgentAuditorIsNull().equals("false")) {
+                 queryWrapper.isNotNull("agents_name");
+             } else{
+                 queryWrapper.and(wrapper -> wrapper.isNull("agents_name").or().eq("agents_name", ""));
+
+             }
+         }
+         if (!user.equals("鏃�")){
+             QueryWrapper qw = new QueryWrapper<SysUser>();
+             qw.eq("id", user);
+             String userName = ((SysUser)((Page) sysUserService.queryPageList(req, qw, 1, 1).getResult()).getRecords().get(0)).getUsername();
+             queryWrapper.eq("create_by", userName);
+         }
+         if (role.equals("鏃�"));
+         else if (role.equals("1972228581703651330")){//閿�鍞�
+//        else{
+//            if (user.equals("鏃�")){
+//                return Result.error("璇疯緭鍏ラ攢鍞悕绉�");//閿�鍞牴鎹敤鎴风瓫閫�
+//            }
+             QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
+             sysUserQueryWrapper.eq("agent_sales", user);
+             Result<IPage<SysUser>> iPageResult = sysUserService.queryPageList(req, sysUserQueryWrapper, 100, 1);
+             List<String> name = new ArrayList<>();
+             for (SysUser sysUser : iPageResult.getResult().getRecords()){
+                 name.add(sysUser.getUsername());
+             }
+             name.add(user);
+             queryWrapper.nested(wrapper -> {
+                 // 鍐呭眰绗竴涓潯浠讹細(create_by IN (name) AND review_status != 2)
+                 wrapper.nested(w1 -> w1.in("create_by", name).ne("review_status", 2));
+                 // 鍐呭眰 OR 鏉′欢锛�(create_by = 鏈�鍚庝竴涓猲ame AND review_status = 2)
+                 wrapper.or(w2 -> w2.eq("create_by", name.get(name.size()-1)).eq("review_status", 2));
+             });
+         }
+         if (role.equals("1972228688033452034")){//璐㈠姟
+             queryWrapper.ne("review_status", "8");
+         }
+         queryWrapper.orderBy(
+                 true,  // condition锛氭槸鍚﹀惎鐢ㄨ鎺掑簭锛坱rue=鍚敤锛�
+                 false, // isAsc锛氭槸鍚﹀崌搴忥紙false=闄嶅簭锛岃 1 鍦ㄥ墠銆�0 鍦ㄥ悗锛�
+                 "CASE WHEN review_status = 1 THEN 1 ELSE 0 END" // R column锛氳櫄鎷熸帓搴忓垪锛堢洿鎺ヤ紶 SQL 鐗囨锛�
+         );
+
+         queryWrapper.orderBy(
+                 true,  // condition锛氭槸鍚﹀惎鐢ㄨ鎺掑簭锛坱rue=鍚敤锛�
+                 false, // isAsc锛氭槸鍚﹀崌搴忥紙false=闄嶅簭锛岃 1 鍦ㄥ墠銆�0 鍦ㄥ悗锛�
+                 "CASE WHEN review_status = 2 THEN 1 ELSE 0 END" // R column锛氳櫄鎷熸帓搴忓垪锛堢洿鎺ヤ紶 SQL 鐗囨锛�
+         );
+
+         queryWrapper.orderBy(
+                 true,  // condition锛氭槸鍚﹀惎鐢ㄨ鎺掑簭锛坱rue=鍚敤锛�
+                 true, // isAsc锛氭槸鍚﹀崌搴忥紙false=闄嶅簭锛岃 1 鍦ㄥ墠銆�0 鍦ㄥ悗锛�
+                 "emergency_status" // R column锛氳櫄鎷熸帓搴忓垪锛堢洿鎺ヤ紶 SQL 鐗囨锛�
+         );
+
+         queryWrapper.orderBy(
+                 true,  // condition锛氭槸鍚﹀惎鐢ㄨ鎺掑簭锛坱rue=鍚敤锛�
+                 false, // isAsc锛氭槸鍚﹀崌搴忥紙false=闄嶅簭锛岃 1 鍦ㄥ墠銆�0 鍦ㄥ悗锛�
+                 "create_time" // R column锛氳櫄鎷熸帓搴忓垪锛堢洿鎺ヤ紶 SQL 鐗囨锛�
+         );
+
+         // ========== 鏍稿績淇敼閮ㄥ垎 ==========
+// 1. 鍙煡璇㈢鍚堟潯浠剁殑鍚堝悓ID锛堜紭鍖栨�ц兘锛岄伩鍏嶆煡璇㈠叏閲忓瓧娈碉級
+         queryWrapper.select("id"); // 鍙�夋嫨鍚堝悓ID瀛楁
+         List<Contract> contractList = contractService.list(queryWrapper);
+
+// 2. 缁熻semantic_word琛ㄧ殑璁板綍鏁�
+         long semanticWordCount = 0L;
+         if (!CollectionUtils.isEmpty(contractList)) {
+             // 鎻愬彇鎵�鏈夌鍚堟潯浠剁殑鍚堝悓ID
+             List<String> contractIds = new ArrayList<>();
+             for (Contract c : contractList) {
+                 contractIds.add(c.getId()); // 鍋囪鍚堝悓ID瀛楁鏄痠d锛岀被鍨嬩负Long
+             }
+
+             // 鏋勫缓semantic_word琛ㄧ殑鏌ヨ鏉′欢
+             QueryWrapper<SemanticWord> swQueryWrapper = new QueryWrapper<>();
+             // 鍋囪semantic_word琛ㄤ腑鍏宠仈鍚堝悓鐨勫瓧娈垫槸contract_id锛岃鏍规嵁瀹為檯琛ㄧ粨鏋勮皟鏁�
+             swQueryWrapper.in("contract_id", contractIds);
+
+             // 缁熻璁板綍鏁帮紙闇�瑕佹敞鍏emanticWord瀵瑰簲鐨凷ervice锛�
+             semanticWordCount = semanticWordService.count(swQueryWrapper);
+         }
+
+// 鏈�缁堢粨鏋滐細semanticWordCount 灏辨槸浣犻渶瑕佺殑鎬昏褰曟暟
+         System.out.println("semantic_word琛ㄦ�昏褰曟暟锛�" + semanticWordCount);
+         return Result.OK(semanticWordCount+"");
+     }
+
      @Autowired
      private IContractService contractService;
 	/**
@@ -140,11 +276,17 @@
         if (semanticWord.getSemanticWordList().size() > 0) {
             if (semanticWord.getContractId() != null) {
                 for (SemanticWord semanticWord1 : semanticWord.getSemanticWordList()) {
+                    if (semanticWord1.getAcceptindicator() == null) {
+                        return Result.error("璇箟璇嶏細"+semanticWord1.getWord()+"宸茶揪鎸囨爣鏈~鍐�!");
+                    }
                     semanticWord1.setContractId(semanticWord.getContractId());
                 }
             }
             semanticWordService.saveBatch(semanticWord.getSemanticWordList());
             return Result.OK("鎵归噺娣诲姞鎴愬姛锛�");
+        }
+        if (semanticWord.getAcceptindicator() == null){
+            return Result.error("璇箟璇嶏細"+semanticWord.getWord()+"宸茶揪鎸囨爣鏈~鍐�!");
         }
 		semanticWordService.save(semanticWord);
 
@@ -162,6 +304,9 @@
 	@RequiresPermissions("semanticword:semantic_word:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody SemanticWord semanticWord) {
+        if (semanticWord.getStatus().equals("7")){
+            semanticWord.setDistributionTime(new Date());
+        }
 		semanticWordService.updateById(semanticWord);
 		return Result.OK("缂栬緫鎴愬姛!");
 	}
@@ -251,14 +396,16 @@
      @Operation(summary = "璇箟璇�-鎸夋棩鏈熷垎缁勭粺璁�")
      @GetMapping(value = "/countByDate")
      public Result<List<Map<String, Object>>> countByCreateTimeGroupByDate(
-             @RequestParam(name = "createBy", required = true) String createBy,
+             @RequestParam(name = "createBy", required = false) String createBy,
              @RequestParam(name = "checkStartTime", required = false) String checkStartTime,
              @RequestParam(name = "checkEndTime", required = false) String checkEndTime) {
 
          try {
              // 鏋勫缓鏌ヨ鏉′欢
              QueryWrapper<SemanticWord> queryWrapper = new QueryWrapper<>();
-             queryWrapper.eq("create_by", createBy);
+             if (createBy != null) {
+                 queryWrapper.eq("create_by", createBy);
+             }
 
              // 娣诲姞鏃堕棿鍖洪棿鏉′欢
              if (checkStartTime != null && !checkStartTime.isEmpty()) {

--
Gitblit v1.8.0