Parcourir la source

巡检与考核开发

admin il y a 3 semaines
Parent
commit
c5c923f5c1

+ 104 - 15
client-app/src/main/java/com/sapit/client/app/manage/controller/inspect/AssessResultManageController.java

@@ -26,12 +26,19 @@ import java.util.List;
 import java.util.Map;
 
 @RestController
-@RequestMapping(value = "inspectManage", produces = "application/json")
+@RequestMapping(value = "assessResultManage", produces = "application/json")
 public class AssessResultManageController {
     @Autowired
     private AssessResultService assessResultService;
 
-    @PostMapping("/assess/page")
+    /**
+     * 考核结果分页查询
+     * @param pageSize  每页数量
+     * @param currentPage  当前页
+     * @param searchBean  查询条件
+     * @return 考核结果分页数据
+     */
+    @PostMapping("/getAssessPage")
     @AuthToken(type = "admin")
     public ResultBean assessPage(int pageSize, int currentPage, BuAssessResultSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
@@ -39,7 +46,14 @@ public class AssessResultManageController {
         return getPageResult(page, list);
     }
 
-    @PostMapping("/assess/rankPage")
+    /**
+     * 考核排名分页查询
+     * @param pageSize  每页数量
+     * @param currentPage  当前页
+     * @param searchBean  查询条件
+     * @return 考核排名分页数据
+     */
+    @PostMapping("/getAssessRankPage")
     @AuthToken(type = "admin")
     public ResultBean assessRankPage(int pageSize, int currentPage, BuAssessResultSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
@@ -47,7 +61,15 @@ public class AssessResultManageController {
         return getPageResult(page, list);
     }
 
-    @PostMapping("/assess/detail")
+    /**
+     * 考核结果详情(支持按ID或按门店+周期查询)
+     * @param id 考核结果ID
+     * @param storeId 门店ID
+     * @param periodType 周期类型(1周度 2月度)
+     * @param periodCode 周期编码
+     * @return 考核结果详情
+     */
+    @PostMapping("/getAssessDetail")
     @AuthToken(type = "admin")
     public ResultBean assessDetail(Long id, Long storeId, Integer periodType, String periodCode) {
         BuAssessResult result;
@@ -61,7 +83,13 @@ public class AssessResultManageController {
         return objectResult(result);
     }
 
-    @PostMapping("/assess/trend")
+    /**
+     * 门店考核趋势查询
+     * @param storeIds 门店ID集合
+     * @param periodType 周期类型(1周度 2月度)
+     * @return 门店考核趋势列表
+     */
+    @PostMapping("/getAssessTrend")
     @AuthToken(type = "admin")
     public ResultBean assessTrend(@RequestParam("storeIds") List<Long> storeIds, @RequestParam(value = "periodType", required = false) Integer periodType) {
         if (storeIds == null || storeIds.isEmpty()) {
@@ -71,7 +99,12 @@ public class AssessResultManageController {
         return listResult(trend);
     }
 
-    @PostMapping("/assess/update")
+    /**
+     * 更新考核结果
+     * @param assessResult 考核结果信息
+     * @return 更新结果
+     */
+    @PostMapping("/updateAssess")
     @AuthToken(type = "admin")
     public ResultBean updateAssessResult(BuAssessResult assessResult) {
         ResultBean bean = new ResultBean();
@@ -85,7 +118,12 @@ public class AssessResultManageController {
         return bean;
     }
 
-    @PostMapping("/assess/delete")
+    /**
+     * 删除考核结果
+     * @param id 考核结果ID
+     * @return 删除结果
+     */
+    @PostMapping("/deleteAssess")
     @AuthToken(type = "admin")
     public ResultBean deleteAssessResult(Long id) {
         ResultBean bean = new ResultBean();
@@ -99,7 +137,15 @@ public class AssessResultManageController {
         return bean;
     }
 
-    @PostMapping("/assess/trigger")
+    /**
+     * 考核汇总(手动汇总:按周期内任务生成考核记录并立即计算得分/等级/排名)
+     * @param periodType 周期类型(1周度 2月度)
+     * @param periodCode 周期编码
+     * @param periodStartDate 周期开始日期(yyyy-MM-dd)
+     * @param periodEndDate 周期结束日期(yyyy-MM-dd)
+     * @return 汇总结果,obj为参与汇总的门店数
+     */
+    @PostMapping("/triggerAssess")
     @AuthToken(type = "admin")
     public ResultBean triggerAssess(Integer periodType, String periodCode,
                                      @DateTimeFormat(pattern = "yyyy-MM-dd") Date periodStartDate,
@@ -107,11 +153,29 @@ public class AssessResultManageController {
         if (periodType == null || periodCode == null || periodStartDate == null || periodEndDate == null) {
             return paramError();
         }
-        int count = assessResultService.triggerAssess(periodType, periodCode, periodStartDate, periodEndDate);
-        return statusResult(count > 0 ? 1 : 0, "考核初始化完成,共初始化 " + count + " 条记录");
+        ResultBean bean = new ResultBean();
+        int storeCount = assessResultService.triggerAssess(periodType, periodCode, periodStartDate, periodEndDate);
+        if (storeCount > 0) {
+            bean.getRtnBean().setRtnCode(ReturnCode.SUCCESS);
+            bean.getRtnBean().setRtnMsg("考核汇总完成,共汇总 " + storeCount + " 家门店");
+            bean.setObj(storeCount);
+        } else {
+            bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
+            bean.getRtnBean().setRtnMsg("该周期内没有可汇总的巡检任务数据");
+        }
+        return bean;
     }
 
-    @PostMapping("/assess/summarize")
+    /**
+     * 考核数据汇总(按门店+周期计算巡检分/自动分/综合分/等级)
+     * @param storeId 门店ID
+     * @param periodType 周期类型(1周度 2月度)
+     * @param periodCode 周期编码
+     * @param startDate 开始日期(yyyy-MM-dd)
+     * @param endDate 结束日期(yyyy-MM-dd)
+     * @return 汇总结果
+     */
+    @PostMapping("/summarizeAssess")
     @AuthToken(type = "admin")
     public ResultBean summarizeAssessResult(Long storeId, Integer periodType, String periodCode,
                                              @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@@ -124,7 +188,13 @@ public class AssessResultManageController {
                 startDate, endDate), "考核汇总完成");
     }
 
-    @PostMapping("/assess/rank")
+    /**
+     * 考核排名更新(按综合分重新计算排名)
+     * @param periodType 周期类型(1周度 2月度)
+     * @param periodCode 周期编码
+     * @return 更新结果
+     */
+    @PostMapping("/updateAssessRank")
     @AuthToken(type = "admin")
     public ResultBean updateAssessRank(Integer periodType, String periodCode) {
         if (periodType == null || periodCode == null) {
@@ -133,7 +203,13 @@ public class AssessResultManageController {
         return statusResult(assessResultService.updateAssessRank(periodType, periodCode), "排名更新完成");
     }
 
-    @PostMapping("/assess/export")
+    /**
+     * 考核报告数据导出(返回JSON数据,供页面预览)
+     * @param periodType 周期类型(1周度 2月度)
+     * @param periodCode 周期编码
+     * @return 考核报告数据
+     */
+    @PostMapping("/exportAssessReport")
     @AuthToken(type = "admin")
     public ResultBean exportAssessReport(Integer periodType, String periodCode) {
         if (periodType == null || periodCode == null) {
@@ -146,7 +222,13 @@ public class AssessResultManageController {
         return objectResult(report);
     }
 
-    @PostMapping("/assess/levelDistribution")
+    /**
+     * 考核等级分布查询
+     * @param periodType 周期类型(1周度 2月度)
+     * @param periodCode 周期编码
+     * @return 等级分布列表
+     */
+    @PostMapping("/getLevelDistribution")
     @AuthToken(type = "admin")
     public ResultBean getLevelDistribution(Integer periodType, String periodCode) {
         if (periodType == null || periodCode == null) {
@@ -155,7 +237,14 @@ public class AssessResultManageController {
         return listResult(assessResultService.getLevelDistribution(periodType, periodCode));
     }
 
-    @PostMapping("/assess/exportExcel")
+    /**
+     * 考核排名Excel导出(直接写出xlsx文件流)
+     * @param response HTTP响应
+     * @param periodType 周期类型(1周度 2月度)
+     * @param periodCode 周期编码
+     * @throws Exception 导出异常
+     */
+    @PostMapping("/exportAssessExcel")
     @AuthToken(type = "admin")
     public void exportAssessExcel(HttpServletResponse response, Integer periodType, String periodCode) throws Exception {
         if (periodType == null || periodCode == null) {

+ 11 - 9
client-app/src/main/java/com/sapit/client/app/manage/controller/inspect/InspectIndicatorManageController.java

@@ -19,19 +19,20 @@ import java.util.List;
  * 考核指标配置管理Controller。
  */
 @RestController
-@RequestMapping(value = "inspectManage", produces = "application/json")
+@RequestMapping(value = "inspectIndicatorManage", produces = "application/json")
 public class InspectIndicatorManageController {
     @Autowired
     private InspectIndicatorService inspectIndicatorService;
 
     /**
+     * I01-A01
      * 分页查询指标列表
      * @param pageSize 每页数量
      * @param currentPage 当前页
      * @param searchBean 搜索条件
      * @return 指标列表分页结果
      */
-    @PostMapping("/indicator/page")
+    @PostMapping("/getIndicatorList")
     @AuthToken(type = "admin")
     public ResultBean indicatorPage(int pageSize, int currentPage, BuInspectIndicatorSearchBean searchBean) {
         PageControlData page = new PageControlData();
@@ -45,7 +46,7 @@ public class InspectIndicatorManageController {
      * @param id 指标ID
      * @return 指标详情
      */
-    @PostMapping("/indicator/detail")
+    @PostMapping("/getIndicatorDetail")
     @AuthToken(type = "admin")
     public ResultBean indicatorDetail(Long id) {
         Object object = id == null ? null : inspectIndicatorService.getIndicatorById(id);
@@ -64,7 +65,7 @@ public class InspectIndicatorManageController {
      * @param indicator 指标信息
      * @return 新增结果
      */
-    @PostMapping("/indicator/save")
+    @PostMapping("/save")
     @AuthToken(type = "admin")
     public ResultBean saveIndicator(com.sapit.common.entity.inspect.BuInspectIndicator indicator) {
         ResultBean bean = new ResultBean();
@@ -82,7 +83,7 @@ public class InspectIndicatorManageController {
      * @param indicator 指标信息
      * @return 修改结果
      */
-    @PostMapping("/indicator/update")
+    @PostMapping("/update")
     @AuthToken(type = "admin")
     public ResultBean updateIndicator(com.sapit.common.entity.inspect.BuInspectIndicator indicator) {
         ResultBean bean = new ResultBean();
@@ -105,7 +106,7 @@ public class InspectIndicatorManageController {
      * @param id 指标ID
      * @return 删除结果
      */
-    @PostMapping("/indicator/delete")
+    @PostMapping("/delete")
     @AuthToken(type = "admin")
     public ResultBean deleteIndicator(Long id) {
         ResultBean bean = new ResultBean();
@@ -125,7 +126,7 @@ public class InspectIndicatorManageController {
      * @param status 状态
      * @return 更新结果
      */
-    @PostMapping("/indicator/changeStatus")
+    @PostMapping("/changeStatus")
     @AuthToken(type = "admin")
     public ResultBean changeIndicatorStatus(Long id, Integer status) {
         if (id == null || status == null) {
@@ -135,10 +136,11 @@ public class InspectIndicatorManageController {
     }
 
     /**
-     * 检查指标权重是否符合
+     * I01-A06
+     * 权重校验
      * @return 指标权重检查结果
      */
-    @PostMapping("/indicator/checkWeight")
+    @PostMapping("/checkWeight")
     @AuthToken(type = "admin")
     public ResultBean checkIndicatorWeight() {
         Object obj = inspectIndicatorService.checkWeight();

+ 33 - 33
client-app/src/main/java/com/sapit/client/app/manage/controller/inspect/InspectPlanManageController.java

@@ -24,7 +24,7 @@ import java.util.Map;
  * 巡检计划配置管理Controller。
  */
 @RestController
-@RequestMapping(value = "inspectManage", produces = "application/json")
+@RequestMapping(value = "inspectPlanManage", produces = "application/json")
 public class InspectPlanManageController {
     @Autowired
     private InspectPlanService inspectPlanService;
@@ -36,7 +36,7 @@ public class InspectPlanManageController {
      * @param searchBean
      * @return
      */
-    @PostMapping("/plan/page")
+    @PostMapping("/getPlanPage")
     @AuthToken(type = "admin")
     public ResultBean planPage(int pageSize, int currentPage, BuInspectPlanSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
@@ -48,7 +48,7 @@ public class InspectPlanManageController {
      * @param id
      * @return
      */
-    @PostMapping("/plan/detail")
+    @PostMapping("/getPlanDetail")
     @AuthToken(type = "admin")
     public ResultBean planDetail(Long id) {
         return objectResult(id == null ? null : inspectPlanService.getPlanDetail(id));
@@ -58,7 +58,7 @@ public class InspectPlanManageController {
      * @param planId
      * @return
      */
-    @PostMapping("/plan/indicators")
+    @PostMapping("/getPlanIndicators")
     @AuthToken(type = "admin")
     public ResultBean planIndicators(Long planId) {
         if (planId == null) {
@@ -71,7 +71,7 @@ public class InspectPlanManageController {
      * @param planId
      * @return
      */
-    @PostMapping("/plan/stores")
+    @PostMapping("/getPlanStores")
     @AuthToken(type = "admin")
     public ResultBean planStores(Long planId) {
         if (planId == null) {
@@ -84,7 +84,7 @@ public class InspectPlanManageController {
      * @param plan
      * @return
      */
-    @PostMapping("/plan/save")
+    @PostMapping("/save")
     @AuthToken(type = "admin")
     public ResultBean savePlan(com.sapit.common.entity.inspect.BuInspectPlan plan) {
         ResultBean bean = new ResultBean();
@@ -103,7 +103,7 @@ public class InspectPlanManageController {
      * @param plan
      * @return
      */
-    @PostMapping("/plan/update")
+    @PostMapping("/update")
     @AuthToken(type = "admin")
     public ResultBean updatePlan(com.sapit.common.entity.inspect.BuInspectPlan plan) {
         ResultBean bean = new ResultBean();
@@ -122,7 +122,7 @@ public class InspectPlanManageController {
      * @param id
      * @return
      */
-    @PostMapping("/plan/delete")
+    @PostMapping("/delete")
     @AuthToken(type = "admin")
     public ResultBean deletePlan(Long id) {
         ResultBean bean = new ResultBean();
@@ -136,11 +136,11 @@ public class InspectPlanManageController {
         return bean;
     }
     /**
-     * 巡检计划发布
-     * @param id
-     * @return
+     * 巡检计划发布/恢复(草稿可发布,已暂停可恢复)
+     * @param id 计划ID
+     * @return 发布结果,失败时返回具体原因
      */
-    @PostMapping("/plan/publish")
+    @PostMapping("/publish")
     @AuthToken(type = "admin")
     public ResultBean publishPlan(Long id) {
         ResultBean bean = new ResultBean();
@@ -164,7 +164,7 @@ public class InspectPlanManageController {
      * @param id
      * @return
      */
-    @PostMapping("/plan/pause")
+    @PostMapping("/pause")
     @AuthToken(type = "admin")
     public ResultBean pausePlan(Long id) {
         if (id == null) {
@@ -177,7 +177,7 @@ public class InspectPlanManageController {
      * @param id
      * @return
      */
-    @PostMapping("/plan/finish")
+    @PostMapping("/finish")
     @AuthToken(type = "admin")
     public ResultBean finishPlan(Long id) {
         if (id == null) {
@@ -192,7 +192,7 @@ public class InspectPlanManageController {
      * @param searchBean  查询条件
      * @return
      */
-    @PostMapping("/planIndicator/page")
+    @PostMapping("/getPlanIndicatorPage")
     @AuthToken(type = "admin")
     public ResultBean planIndicatorPage(int pageSize, int currentPage, BuInspectPlanIndicatorSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
@@ -204,7 +204,7 @@ public class InspectPlanManageController {
      * @param planIndicator
      * @return
      */
-    @PostMapping("/planIndicator/save")
+    @PostMapping("/savePlanIndicator")
     @AuthToken(type = "admin")
     public ResultBean savePlanIndicator(BuInspectPlanIndicator planIndicator) {
         ResultBean bean = new ResultBean();
@@ -222,7 +222,7 @@ public class InspectPlanManageController {
      * @param planIndicator
      * @return
      */
-    @PostMapping("/planIndicator/update")
+    @PostMapping("/updatePlanIndicator")
     @AuthToken(type = "admin")
     public ResultBean updatePlanIndicator(BuInspectPlanIndicator planIndicator) {
         ResultBean bean = new ResultBean();
@@ -240,7 +240,7 @@ public class InspectPlanManageController {
      * @param id
      * @return
      */
-    @PostMapping("/planIndicator/delete")
+    @PostMapping("/deletePlanIndicator")
     @AuthToken(type = "admin")
     public ResultBean deletePlanIndicator(Long id) {
         ResultBean bean = new ResultBean();
@@ -254,13 +254,13 @@ public class InspectPlanManageController {
         return bean;
     }
     /**
-     * 巡检指标分页查询
+     * 巡检计划关联门店分页查询
      * @param pageSize  每页数量
      * @param currentPage  当前页
      * @param searchBean  查询条件
-     * @return
+     * @return 关联门店分页结果
      */
-    @PostMapping("/planStore/page")
+    @PostMapping("/getPlanStorePage")
     @AuthToken(type = "admin")
     public ResultBean planStorePage(int pageSize, int currentPage, BuInspectPlanStoreSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
@@ -268,11 +268,11 @@ public class InspectPlanManageController {
         return getPageResult(page, list);
     }
     /**
-     * 巡检指标新增/更新
-     * @param planStore
-     * @return
+     * 巡检计划关联门店新增/更新
+     * @param planStore 关联门店信息
+     * @return 保存结果
      */
-    @PostMapping("/planStore/save")
+    @PostMapping("/savePlanStore")
     @AuthToken(type = "admin")
     public ResultBean savePlanStore(BuInspectPlanStore planStore) {
         ResultBean bean = new ResultBean();
@@ -286,11 +286,11 @@ public class InspectPlanManageController {
         return bean;
     }
     /**
-     * 巡检指标更新
-     * @param planStore
-     * @return
+     * 巡检计划关联门店更新
+     * @param planStore 关联门店信息
+     * @return 更新结果
      */
-    @PostMapping("/planStore/update")
+    @PostMapping("/updatePlanStore")
     @AuthToken(type = "admin")
     public ResultBean updatePlanStore(BuInspectPlanStore planStore) {
         ResultBean bean = new ResultBean();
@@ -304,11 +304,11 @@ public class InspectPlanManageController {
         return bean;
     }
     /**
-     * 巡检指标删除
-     * @param id
-     * @return
+     * 巡检计划关联门店删除
+     * @param id 关联门店ID
+     * @return 删除结果
      */
-    @PostMapping("/planStore/delete")
+    @PostMapping("/deletePlanStore")
     @AuthToken(type = "admin")
     public ResultBean deletePlanStore(Long id) {
         ResultBean bean = new ResultBean();

+ 111 - 26
client-app/src/main/java/com/sapit/client/app/manage/controller/inspect/InspectTaskManageController.java

@@ -26,7 +26,7 @@ import java.util.List;
 import java.util.Map;
 
 @RestController
-@RequestMapping(value = "inspectManage", produces = "application/json")
+@RequestMapping(value = "inspectTaskManage", produces = "application/json")
 public class InspectTaskManageController {
     @Autowired
     private InspectTaskService inspectTaskService;
@@ -38,7 +38,7 @@ public class InspectTaskManageController {
      * @param taskDate
      * @return
      */
-    @PostMapping("/task/generate")
+    @PostMapping("/generateTask")
     @AuthToken(type = "admin")
     public ResultBean generateTask(Long planId, @DateTimeFormat(pattern = "yyyy-MM-dd") Date taskDate) {
         ResultBean bean = new ResultBean();
@@ -59,21 +59,36 @@ public class InspectTaskManageController {
         return bean;
     }
 
-    @PostMapping("/task/page")
+    /**
+     * 巡检任务分页查询
+     * @param pageSize  每页数量
+     * @param currentPage  当前页
+     * @param searchBean  查询条件
+     * @return
+     */
+    @PostMapping("/getTaskPage")
     @AuthToken(type = "admin")
     public ResultBean taskPage(int pageSize, int currentPage, BuInspectTaskSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
         List<?> list = inspectTaskService.getTaskPage(page, searchBean);
         return getPageResult(page, list);
     }
-
-    @PostMapping("/task/detail")
+    /**
+     * 巡检任务详情
+     * @param id
+     * @return
+     */
+    @PostMapping("/getTaskDetail")
     @AuthToken(type = "admin")
     public ResultBean taskDetail(Long id) {
         return objectResult(id == null ? null : inspectTaskService.getTaskDetail(id));
     }
-
-    @PostMapping("/task/items")
+    /**
+     * 巡检任务关联指标详情
+     * @param taskId
+     * @return
+     */
+    @PostMapping("/getTaskItems")
     @AuthToken(type = "admin")
     public ResultBean taskItems(Long taskId) {
         if (taskId == null) {
@@ -81,8 +96,12 @@ public class InspectTaskManageController {
         }
         return listResult(inspectTaskService.getTaskItems(taskId));
     }
-
-    @PostMapping("/task/myList")
+    /**
+     * 巡检员待执行任务列表(我的任务)
+     * @param inspectorId 巡检员ID
+     * @return 待执行任务列表
+     */
+    @PostMapping("/getMyTaskList")
     @AuthToken(type = "admin")
     public ResultBean myTaskList(Long inspectorId) {
         if (inspectorId == null) {
@@ -91,7 +110,13 @@ public class InspectTaskManageController {
         return listResult(inspectTaskService.getMyTaskList(inspectorId));
     }
 
-    @PostMapping("/task/start")
+    /**
+     * 巡检任务开始执行
+     * @param id
+     * @param inspectorId
+     * @return
+     */
+    @PostMapping("/startTask")
     @AuthToken(type = "admin")
     public ResultBean startTask(Long id, Long inspectorId) {
         if (id == null || inspectorId == null) {
@@ -99,14 +124,22 @@ public class InspectTaskManageController {
         }
         return statusResult(inspectTaskService.startTask(id, inspectorId), "开始执行完成");
     }
-
-    @PostMapping("/task/statistics")
+    /**
+     * 巡检任务统计
+     * @param planId
+     * @return
+     */
+    @PostMapping("/getTaskStatistics")
     @AuthToken(type = "admin")
     public ResultBean taskStatistics(Long planId) {
         return listResult(inspectTaskService.getTaskStatistics(planId));
     }
-
-    @PostMapping("/task/update")
+    /**
+     * 巡检任务更新
+     * @param task
+     * @return
+     */
+    @PostMapping("/updateTask")
     @AuthToken(type = "admin")
     public ResultBean updateTask(BuInspectTask task) {
         ResultBean bean = new ResultBean();
@@ -119,8 +152,12 @@ public class InspectTaskManageController {
         bean.getRtnBean().setRtnMsg("更新完成");
         return bean;
     }
-
-    @PostMapping("/task/cancel")
+    /**
+     * 巡检任务取消
+     * @param id
+     * @return
+     */
+    @PostMapping("/cancelTask")
     @AuthToken(type = "admin")
     public ResultBean cancelTask(Long id) {
         ResultBean bean = new ResultBean();
@@ -133,8 +170,32 @@ public class InspectTaskManageController {
         bean.getRtnBean().setRtnMsg("取消完成");
         return bean;
     }
-
-    @PostMapping("/task/submit")
+    /**
+     * 巡检任务删除(仅待执行/已取消可删,用于清理测试或误生成的任务)
+     * @param id
+     * @return
+     */
+    @PostMapping("/deleteTask")
+    @AuthToken(type = "admin")
+    public ResultBean deleteTask(Long id) {
+        ResultBean bean = new ResultBean();
+        if (id == null) {
+            bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
+            bean.getRtnBean().setRtnMsg("参数错误");
+            return bean;
+        }
+        int result = inspectTaskService.delete(id);
+        bean.getRtnBean().setRtnCode(result > 0 ? ReturnCode.SUCCESS : ReturnCode.FAILED);
+        bean.getRtnBean().setRtnMsg(result > 0 ? "删除完成" : "仅待执行或已取消的任务可删除");
+        return bean;
+    }
+    /**
+     * 巡检任务提交
+     * @param id
+     * @param inspectorId
+     * @return
+     */
+    @PostMapping("/submitTask")
     @AuthToken(type = "admin")
     public ResultBean submitTask(Long id, Long inspectorId) {
         ResultBean bean = new ResultBean();
@@ -147,16 +208,26 @@ public class InspectTaskManageController {
         bean.getRtnBean().setRtnMsg("提交完成");
         return bean;
     }
-
-    @PostMapping("/taskItem/page")
+    /**
+     * 巡检任务指标项分页查询
+     * @param pageSize 每页数量
+     * @param currentPage 当前页
+     * @param searchBean 查询条件
+     * @return 指标项分页结果
+     */
+    @PostMapping("/getTaskItemPage")
     @AuthToken(type = "admin")
     public ResultBean taskItemPage(int pageSize, int currentPage, BuInspectTaskItemSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
         List<?> list = inspectTaskService.getTaskItemPage(page, searchBean);
         return getPageResult(page, list);
     }
-
-    @PostMapping("/taskItem/save")
+    /**
+     * 巡检任务指标项保存
+     * @param taskItem 指标项信息
+     * @return 保存结果
+     */
+    @PostMapping("/saveTaskItem")
     @AuthToken(type = "admin")
     public ResultBean saveTaskItem(BuInspectTaskItem taskItem) {
         ResultBean bean = new ResultBean();
@@ -170,7 +241,12 @@ public class InspectTaskManageController {
         return bean;
     }
 
-    @PostMapping("/taskItem/update")
+    /**
+     * 巡检任务指标项更新
+     * @param taskItem 指标项信息
+     * @return 更新结果
+     */
+    @PostMapping("/updateTaskItem")
     @AuthToken(type = "admin")
     public ResultBean updateTaskItem(BuInspectTaskItem taskItem) {
         ResultBean bean = new ResultBean();
@@ -183,8 +259,12 @@ public class InspectTaskManageController {
         bean.getRtnBean().setRtnMsg("更新完成");
         return bean;
     }
-
-    @PostMapping("/taskItem/delete")
+    /**
+     * 巡检任务指标项删除
+     * @param id 指标项ID
+     * @return 删除结果
+     */
+    @PostMapping("/deleteTaskItem")
     @AuthToken(type = "admin")
     public ResultBean deleteTaskItem(Long id) {
         ResultBean bean = new ResultBean();
@@ -197,7 +277,12 @@ public class InspectTaskManageController {
         bean.getRtnBean().setRtnMsg("删除完成");
         return bean;
     }
-
+    /**
+     * 巡检图片上传(FTP,单张不超过200K)
+     * @param file 图片文件
+     * @param dir 上传目录(默认 /inspect)
+     * @return 上传结果,obj为图片访问地址
+     */
     @PostMapping("/uploadPicture")
     @AuthToken(type = "admin")
     public ResultBean uploadPicture(@RequestParam(value = "file", required = false) MultipartFile file,

+ 72 - 11
client-app/src/main/java/com/sapit/client/app/manage/controller/inspect/RectificationManageController.java

@@ -20,12 +20,19 @@ import java.util.Date;
 import java.util.List;
 
 @RestController
-@RequestMapping(value = "inspectManage", produces = "application/json")
+@RequestMapping(value = "rectificationManage", produces = "application/json")
 public class RectificationManageController {
     @Autowired
     private RectificationService rectificationService;
 
-    @PostMapping("/rectification/page")
+    /**
+     * 整改记录分页查询
+     * @param pageSize  每页数量
+     * @param currentPage  当前页
+     * @param searchBean  查询条件
+     * @return 整改记录分页结果
+     */
+    @PostMapping("/getRectPage")
     @AuthToken(type = "admin")
     public ResultBean rectificationPage(int pageSize, int currentPage, BuRectificationSearchBean searchBean) {
         PageControlData page = buildPage(pageSize, currentPage);
@@ -33,13 +40,23 @@ public class RectificationManageController {
         return getPageResult(page, list);
     }
 
-    @PostMapping("/rectification/detail")
+    /**
+     * 整改记录详情
+     * @param id 整改记录ID
+     * @return 整改记录详情
+     */
+    @PostMapping("/getRectDetail")
     @AuthToken(type = "admin")
     public ResultBean rectificationDetail(Long id) {
         return objectResult(id == null ? null : rectificationService.getRectDetail(id));
     }
 
-    @PostMapping("/rectification/save")
+    /**
+     * 新增整改记录
+     * @param rectification 整改记录信息
+     * @return 新增结果
+     */
+    @PostMapping("/saveRect")
     @AuthToken(type = "admin")
     public ResultBean saveRectification(BuRectification rectification) {
         ResultBean bean = new ResultBean();
@@ -53,7 +70,12 @@ public class RectificationManageController {
         return bean;
     }
 
-    @PostMapping("/rectification/update")
+    /**
+     * 更新整改记录
+     * @param rectification 整改记录信息
+     * @return 更新结果
+     */
+    @PostMapping("/updateRect")
     @AuthToken(type = "admin")
     public ResultBean updateRectification(BuRectification rectification) {
         ResultBean bean = new ResultBean();
@@ -67,7 +89,12 @@ public class RectificationManageController {
         return bean;
     }
 
-    @PostMapping("/rectification/delete")
+    /**
+     * 删除整改记录
+     * @param id 整改记录ID
+     * @return 删除结果
+     */
+    @PostMapping("/deleteRect")
     @AuthToken(type = "admin")
     public ResultBean deleteRectification(Long id) {
         ResultBean bean = new ResultBean();
@@ -81,7 +108,13 @@ public class RectificationManageController {
         return bean;
     }
 
-    @PostMapping("/rectification/batchUpdateDeadline")
+    /**
+     * 批量更新整改截止日期
+     * @param rectIds 整改记录ID集合
+     * @param deadlineDate 截止日期(yyyy-MM-dd HH:mm:ss)
+     * @return 更新结果
+     */
+    @PostMapping("/batchUpdateDeadline")
     @AuthToken(type = "admin")
     public ResultBean batchUpdateDeadline(@RequestParam("rectIds") List<Long> rectIds,
                                           @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date deadlineDate) {
@@ -91,13 +124,23 @@ public class RectificationManageController {
         return statusResult(rectificationService.batchUpdateDeadline(rectIds, deadlineDate), "截止日期更新完成");
     }
 
-    @PostMapping("/rectification/statistics")
+    /**
+     * 整改状态统计
+     * @param storeId 门店ID
+     * @return 整改统计列表
+     */
+    @PostMapping("/getRectStatistics")
     @AuthToken(type = "admin")
     public ResultBean rectificationStatistics(Long storeId) {
         return listResult(rectificationService.getRectStatistics(storeId));
     }
 
-    @PostMapping("/rectification/urge")
+    /**
+     * 整改催办
+     * @param id 整改记录ID
+     * @return 催办结果
+     */
+    @PostMapping("/urge")
     @AuthToken(type = "admin")
     public ResultBean urgeRectification(Long id) {
         if (id == null) {
@@ -106,7 +149,14 @@ public class RectificationManageController {
         return statusResult(rectificationService.urge(id), "催办完成");
     }
 
-    @PostMapping("/rectification/feedback")
+    /**
+     * 门店提交整改反馈(待整改/整改中 -> 待复检)
+     * @param id 整改记录ID
+     * @param feedbackContent 反馈内容
+     * @param feedbackPictures 反馈图片(逗号分隔)
+     * @return 提交结果
+     */
+    @PostMapping("/submitRect")
     @AuthToken(type = "admin")
     public ResultBean submitRectification(Long id, String feedbackContent, String feedbackPictures) {
         ResultBean bean = new ResultBean();
@@ -122,7 +172,18 @@ public class RectificationManageController {
         return bean;
     }
 
-    @PostMapping("/rectification/recheck")
+    /**
+     * 整改复检
+     * @param id 整改记录ID
+     * @param recheckScore 复检得分
+     * @param recheckResult 复检结果(1通过 0不通过)
+     * @param recheckPictures 复检图片(逗号分隔)
+     * @param recheckRmk 复检备注
+     * @param recheckUserId 复检人ID
+     * @param recheckUserName 复检人名称
+     * @return 复检结果
+     */
+    @PostMapping("/recheck")
     @AuthToken(type = "admin")
     public ResultBean recheckRectification(Long id, BigDecimal recheckScore, Integer recheckResult,
                                            String recheckPictures, String recheckRmk,

+ 18 - 3
client-app/src/main/java/com/sapit/client/app/manage/inspect/service/AssessResultService.java

@@ -194,7 +194,6 @@ public class AssessResultService {
         String storeSql = "select distinct STORE_ID, STORE_NAME from bu_inspect_task "
                 + "where TASK_DATE >= '" + start + "' and TASK_DATE <= '" + end + "'";
         List<?> storeRows = inspectPlanDao.searchBySql(storeSql);
-        int count = 0;
         String escapedCode = InspectCommonUtils.escapeSql(periodCode);
         for (Object row : storeRows) {
             Object[] arr = (Object[]) row;
@@ -213,13 +212,29 @@ public class AssessResultService {
             result.setPeriodCode(periodCode);
             result.setPeriodStartDate(new java.sql.Timestamp(startDate.getTime()));
             result.setPeriodEndDate(new java.sql.Timestamp(endDate.getTime()));
+            result.setInspectScore(BigDecimal.ZERO);
+            result.setAutoScore(BigDecimal.ZERO);
+            result.setTotalScore(BigDecimal.ZERO);
+            result.setAssessLevel(4);
+            result.setTaskCount(0);
+            result.setFinishTaskCount(0);
+            result.setRectCount(0);
+            result.setOvertimeRectCount(0);
             result.setStatus(1);
             result.setSummaryDate(new java.sql.Timestamp(System.currentTimeMillis()));
             result.setCreateDate(new java.sql.Timestamp(System.currentTimeMillis()));
             assessResultDao.save(result);
-            count++;
         }
-        return count;
+        // 汇总周期内所有门店:立即计算分数与等级并置为已汇总(STATUS=2),保证等级分布/排名可即时查询
+        int storeCount = storeRows == null ? 0 : storeRows.size();
+        if (storeRows != null) {
+            for (Object row : storeRows) {
+                Object[] arr = (Object[]) row;
+                Long storeId = Long.valueOf(arr[0].toString());
+                summarizeAssessResult(storeId, periodType, periodCode, startDate, endDate);
+            }
+        }
+        return storeCount;
     }
 
     public int summarizeAssessResult(Long storeId, Integer periodType, String periodCode,

+ 4 - 2
client-app/src/main/java/com/sapit/client/app/manage/inspect/service/InspectPlanService.java

@@ -130,12 +130,14 @@ public class InspectPlanService {
         calendar.set(Calendar.SECOND, 0);
         calendar.set(Calendar.MILLISECOND, 0);
         Date today = calendar.getTime();
-        if (plan.getStartDate() != null && plan.getStartDate().before(today)) {
+        int currentStatus = plan.getStatus() == null ? 0 : plan.getStatus();
+        // 首次发布(草稿)校验开始日期;恢复已暂停的计划不再校验
+        if (currentStatus == 0 && plan.getStartDate() != null && plan.getStartDate().before(today)) {
             result.put("reason", "计划开始日期已过期,无法发布");
             return result;
         }
         int rows = inspectPlanDao.executeSql(
-                "update bu_inspect_plan set STATUS = 1, PUBLISH_DATE = NOW() where PLAN_ID = :id and STATUS = 0",
+                "update bu_inspect_plan set STATUS = 1, PUBLISH_DATE = NOW() where PLAN_ID = :id and STATUS in (0, 2)",
                 InspectCommonUtils.params("id", id));
         result.put("success", rows > 0);
         result.put("reason", rows > 0 ? null : "计划状态已变更,无法发布");

+ 17 - 0
client-app/src/main/java/com/sapit/client/app/manage/inspect/service/InspectTaskService.java

@@ -60,6 +60,23 @@ public class InspectTaskService {
                 InspectCommonUtils.params("id", id));
     }
 
+    /**
+     * 删除巡检任务:仅允许删除待执行(1)或已取消(4)的任务,并级联删除其明细项。
+     */
+    public int delete(Long taskId) {
+        if (taskId == null) {
+            return 0;
+        }
+        int deleted = inspectTaskDao.executeSql(
+                "delete from bu_inspect_task where TASK_ID = :id and STATUS in (1, 4)",
+                InspectCommonUtils.params("id", taskId));
+        if (deleted > 0) {
+            inspectTaskItemDao.executeSql("delete from bu_inspect_task_item where TASK_ID = :id",
+                    InspectCommonUtils.params("id", taskId));
+        }
+        return deleted;
+    }
+
     public List<BuInspectTaskItem> getTaskItems(Long taskId) {
         BuInspectTaskItemSearchBean searchBean = new BuInspectTaskItemSearchBean();
         searchBean.setTaskId(taskId);

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
frontend-inspect-portal.vue


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff