Kaynağa Gözat

Merge branch 'feature-bieao' of lift-manager/lift-server into develop

bieao 5 yıl önce
ebeveyn
işleme
5ba2df18ed

+ 14 - 14
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/service/MaintenanceRecordService.java

@@ -161,14 +161,11 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         if (ObjectUtil.isEmpty(entry)) return false;
         int interval = entry.getPlanInterval();
         List<MaintenancePlan> planList = maintenancePlanService.findPlanList(liftId, projectId, mtCompanyId, currentTime);
-        if (CollUtil.isNotEmpty(planList)) {
-            //获取当前时间后的维保计划列表,并清除计划
-            maintenancePlanService.removeByIds(planList.stream().map(MaintenancePlan::getId).collect(Collectors.toList()));
-            //按照修改时间重新生成计划
-            List<MaintenancePlan> plans = maintenancePlanService.generatePlan(plan, periods, interval, currentTime, endDate);
-            return maintenancePlanService.saveBatch(plans, plans.size());
-        }
-        return true;
+        //获取当前时间后的维保计划列表,并清除计划
+        maintenancePlanService.removeByIds(planList.stream().map(MaintenancePlan::getId).collect(Collectors.toList()));
+        //按照修改时间重新生成计划
+        List<MaintenancePlan> plans = maintenancePlanService.generatePlan(plan, periods, interval, currentTime, endDate);
+        return maintenancePlanService.saveBatch(plans, plans.size());
     }
 
     /**
@@ -200,10 +197,15 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         boolean result = calc(liftCoordinate, coordinate);
         if (result)
             return RestResponse.fail(MessageUtils.get("msg.error.person.scope"));
-        //若提前保养,需要修改维保计划
-        boolean modifyPlan = modifyPlan(request);
-        if (!modifyPlan){
-            return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
+        MaintenancePlan plan = maintenancePlanService.getOne(record.getMtPlanId());
+        if (ObjectUtil.isEmpty(plan)) return RestResponse.fail(MessageUtils.get("msg.maintenance.plan.not.exist"));
+        //若保养时间在计划时间之前,则需要修改维保计划
+        boolean compareResult = request.getCurrentTime().isBefore(plan.getPlanDate());
+        if (compareResult) {
+            boolean modifyPlan = modifyPlan(request);
+            if (!modifyPlan) {
+                return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
+            }
         }
         Optional<Lift> lift = liftService.getOne(null, liftId);
         if (lift.isPresent()) {
@@ -213,8 +215,6 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
             record.setStatus(CommonEnum.MaintenanceRecordStatus.MAINTENANCE_DOING.getCode());
             record.setWorkerId1(record.getWorkerId1());
             record.setWorkDate(LocalDate.now());
-            MaintenancePlan plan = maintenancePlanService.getOne(record.getMtPlanId());
-            if (ObjectUtil.isEmpty(plan)) return RestResponse.fail(MessageUtils.get("msg.maintenance.plan.not.exist"));
             record.setPlanDate(plan.getPlanDate());
             boolean ret = save(record);
             if (!ret) {

+ 22 - 6
lift-business-service/src/main/resources/mapper/maintenance/MaintenanceRecordMapper.xml

@@ -121,12 +121,20 @@
 		    mr.has_evaluate     AS hasEvaluate
 		FROM maintenance_record mr
 		LEFT JOIN project p ON mr.project_id = p.id
+        <if test="request.currentRoleCode == 'REGION_DIRECTOR' ">
+            LEFT JOIN project_user pu ON p.id = pu.project_id
+        </if>
 		LEFT JOIN lift l ON mr.lift_id = l.id
 		LEFT JOIN user_info ui ON mr.worker_id = ui.user_id
 		WHERE mr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
-		<if test="request.userId!=null">
-			AND mr.worker_id1 = #{request.userId,jdbcType=BIGINT}
-		</if>
+        <choose>
+            <when test="request.userId > 0 and request.currentRoleCode == 'REGION_DIRECTOR' ">
+                AND pu.user_id = #{request.userId,jdbcType=BIGINT}
+            </when>
+            <otherwise>
+                AND mr.worker_id1 = #{request.userId,jdbcType=BIGINT}
+            </otherwise>
+        </choose>
 		<if test="request.status!=null and request.status!=''">
 			AND mr.status = #{request.status,jdbcType=VARCHAR}
 		</if>
@@ -153,12 +161,20 @@
                  count(1) total
         FROM maintenance_record mr
                 LEFT JOIN project p ON mr.project_id = p.id
+                <if test="request.currentRoleCode == 'REGION_DIRECTOR' ">
+                    LEFT JOIN project_user pu ON p.id = pu.project_id
+                </if>
                 LEFT JOIN lift l ON mr.lift_id = l.id
                 LEFT JOIN user_info ui ON mr.worker_id = ui.user_id
         WHERE mr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
-        <if test="request.userId!=null">
-            AND mr.worker_id1 = #{request.userId,jdbcType=BIGINT}
-        </if>
+        <choose>
+            <when test="request.userId > 0 and request.currentRoleCode == 'REGION_DIRECTOR' ">
+                AND pu.user_id = #{request.userId,jdbcType=BIGINT}
+            </when>
+            <otherwise>
+                AND mr.worker_id1 = #{request.userId,jdbcType=BIGINT}
+            </otherwise>
+        </choose>
         <if test="request.beginTime!=null">
             AND <![CDATA[ mr.plan_date >= #{request.beginTime}]]>
         </if>