Browse Source

优化常见问题批量删除,客户管理,维保项功能

wang-hai-cheng 5 years ago
parent
commit
2fb76df5e5

+ 5 - 5
lift-business-service/src/main/java/cn/com/ty/lift/business/project/controller/ProjectRelevanceController.java

@@ -30,7 +30,7 @@ import java.util.List;
 public class ProjectRelevanceController {
 
     @Resource
-    private ProjectLiftRelevanceService projectService;
+    private ProjectLiftRelevanceService projectLiftRelevanceService;
 
     /**
      * @param request 用户id
@@ -40,7 +40,7 @@ public class ProjectRelevanceController {
      */
     @PostMapping("list")
     public RestResponse relevanceList(@RequestBody ProjectLiftRelevanceRequest request) {
-        IPage<ProjectRelevanceResponse> page = projectService.relevanceList(request);
+        IPage<ProjectRelevanceResponse> page = projectLiftRelevanceService.relevanceList(request);
         if (CollUtil.isEmpty(page.getRecords())) {
             return RestResponse.success();
         }
@@ -55,7 +55,7 @@ public class ProjectRelevanceController {
      */
     @PostMapping("user/list")
     public RestResponse userList(@Valid @RequestBody ProjectDetailRequest request) {
-        List<ProjectUserResponse> userList = projectService.userList(request.getId());
+        List<ProjectUserResponse> userList = projectLiftRelevanceService.userList(request.getId());
         if (CollUtil.isEmpty(userList)) {
             return RestResponse.success();
         }
@@ -70,7 +70,7 @@ public class ProjectRelevanceController {
      */
     @PostMapping("modify")
     public RestResponse modify(@RequestBody ProjectLiftRelevance entry) {
-        boolean result = projectService.modify(entry);
+        boolean result = projectLiftRelevanceService.modify(entry);
         if (result) {
             return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
         }
@@ -85,7 +85,7 @@ public class ProjectRelevanceController {
      */
     @PostMapping("remove")
     public RestResponse remove(@RequestBody ProjectLiftRelevance entry) {
-        boolean result = projectService.remove(entry.getId());
+        boolean result = projectLiftRelevanceService.remove(entry.getId());
         if (result) {
             return RestResponse.success(null, MessageUtils.get("msg.delete.success"));
         }

+ 9 - 9
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/custom/controller/PropertyCompanyController.java

@@ -28,16 +28,16 @@ public class PropertyCompanyController {
     /**
      * 根据条件查询客户列表
      *
-     * @param req 客户名称或客户地址或客户邮寄地址或客户联系方式,页码,页大小,维保公司id
+     * @param request 客户名称或客户地址或客户邮寄地址或客户联系方式,页码,页大小,维保公司id
      * @return RestResponse
      * @since 2019/12/3 8:51
      */
     @PostMapping("/list")
-    public RestResponse propertyCompanies(@RequestBody PropertyCompanyReq req) {
-        Judge.id(req.getMtCompanyId());
-        Judge.notNull(req.getPageNum());
-        Judge.notNull(req.getPageSize());
-        return propertyCompanyService.propertyCompanies(req);
+    public RestResponse propertyCompanies(@RequestBody PropertyCompanyReq request) {
+        Judge.id(request.getMtCompanyId());
+        Judge.notNull(request.getPageNum());
+        Judge.notNull(request.getPageSize());
+        return propertyCompanyService.propertyCompanies(request);
     }
 
     /**
@@ -60,13 +60,13 @@ public class PropertyCompanyController {
     /**
      * 新增客户
      *
-     * @param req [客户]
+     * @param request [客户]
      * @return RestResponse
      * @since 2019/11/27 11:45
      */
     @PostMapping("/add")
-    public RestResponse add(@RequestBody PropertyCompanyAndPropertyContactReq req) {
-        return propertyCompanyService.saveAll(req);
+    public RestResponse add(@RequestBody PropertyCompanyAndPropertyContactReq request) {
+        return propertyCompanyService.saveAll(request);
     }
 
     /**

+ 1 - 1
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/custom/dao/mapper/PropertyCompanyMapper.java

@@ -17,5 +17,5 @@ import java.util.Map;
  */
 public interface PropertyCompanyMapper extends BaseMapper<PropertyCompany> {
     @Select("select count(id) count from project where pp_company_id=#{ppCompanyId}")
-    Map<String, Long> selectProjectCount(@Param("ppCompanyId") Long ppCompanyId);
+    Map<String, Long> selectProjectCountForPPCompanyId(@Param("ppCompanyId") Long ppCompanyId);
 }

+ 2 - 2
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/custom/dao/mapper/PropertyContactMapper.java

@@ -16,6 +16,6 @@ import java.util.Map;
  * @since 2019-11-11
  */
 public interface PropertyContactMapper extends BaseMapper<PropertyContact> {
-    @Select("select count(id) count from project where pp_company_id=#{ppCompanyId}")
-    Map<String, Long> selectProjectCount(@Param("ppCompanyId") Long ppCompanyId);
+    @Select("select count(id) count from project where pp_contact_id=#{ppContactId}")
+    Map<String, Long> selectProjectCountForPPContactId(@Param("ppContactId") Long ppContactId);
 }

+ 16 - 11
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/custom/service/impl/PropertyCompanyServiceImpl.java

@@ -24,6 +24,8 @@ import java.io.IOException;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -47,17 +49,20 @@ public class PropertyCompanyServiceImpl extends ServiceImpl<PropertyCompanyMappe
                         .eq(request.getMtCompanyId() != null, "mt_company_id", request.getMtCompanyId())
                         .ne("status", 0)
                         .and(request.getInfo() != null, companyQueryWrapper ->
-                                companyQueryWrapper
-                                        .like("name", request.getInfo())
+                                companyQueryWrapper.like("name", request.getInfo())
                                         .or().like("address", request.getInfo())
                                         .or().like("mailing_address", request.getInfo())));
+        records.getRecords().forEach(propertyCompany -> {
+            if (propertyCompany.getMailingAddress() == null) {
+                propertyCompany.setMailingAddress("未设置地址");
+            }
+        });
         if (records.getRecords().isEmpty()) {
             return RestResponse.success();
         }
         return RestResponse.success(records, "成功");
     }
 
-    @Transactional
     public RestResponse saveAll(PropertyCompanyAndPropertyContactReq req) {
         long id = IdWorker.getId();
         req.getPropertyCompany().setId(id);
@@ -76,18 +81,18 @@ public class PropertyCompanyServiceImpl extends ServiceImpl<PropertyCompanyMappe
         }
         if (byId.getStatus() == 2) {
             return RestResponse.success(null, "有正在服务的关联项目,无法删除");
-        } else if (baseMapper.selectProjectCount(byId.getId()) != null
-                && baseMapper.selectProjectCount(byId.getId()).get("count") > 0L) {
+        }
+        Map<String, Long> count = this.baseMapper.selectProjectCountForPPCompanyId(byId.getId());
+        if (count != null && count.get("count") > 0L) {
             byId.setStatus(2);
             this.updateById(byId);
             return RestResponse.success(null, "有正在服务的关联项目,无法删除");
-        } else {
-            byId.setStatus(0);
-            if (this.updateById(byId)) {
-                return RestResponse.success(null, "成功");
-            }
-            return RestResponse.fail();
         }
+        byId.setStatus(0);
+        if (this.updateById(byId)) {
+            return RestResponse.success(null, "成功");
+        }
+        return RestResponse.fail();
     }
 
     public void export(PropertyCompany propertyCompany, HttpServletResponse response) {

+ 10 - 7
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/custom/service/impl/PropertyContactServiceImpl.java

@@ -9,6 +9,8 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Map;
+
 /**
  * <p>
  * (甲方联系人)客户联系人表 服务实现类
@@ -26,17 +28,18 @@ public class PropertyContactServiceImpl extends ServiceImpl<PropertyContactMappe
         PropertyContact byId = this.getById(id);
         if (byId.getStatus() == 2) {
             return RestResponse.fail("有正在服务的关联项目,无法删除");
-        } else if (baseMapper.selectProjectCount(byId.getId()) != null && baseMapper.selectProjectCount(byId.getId()).get("count") > 0L) {
+        }
+        Map<String, Long> count = baseMapper.selectProjectCountForPPContactId(byId.getId());
+        if (count != null && count.get("count") > 0L) {
             byId.setStatus(2);
             this.updateById(byId);
             return RestResponse.fail("有正在服务的关联项目,无法删除");
+        }
+        byId.setStatus(0);
+        if (this.updateById(byId)) {
+            return RestResponse.success(null, "操作成功");
         } else {
-            byId.setStatus(0);
-            if (this.updateById(byId)) {
-                return RestResponse.success(null, "操作成功");
-            } else {
-                return RestResponse.fail();
-            }
+            return RestResponse.fail();
         }
     }
 }

+ 6 - 6
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/option/controller/MaintenanceOptionController.java

@@ -57,12 +57,12 @@ public class MaintenanceOptionController {
     /**
      * app端维保项列表
      *
-     * @param req
+     * @param request
      * @return RestResponse
      */
     @PostMapping("/options")
-    public RestResponse options(@RequestBody OptionReq req) {
-        Integer liftType = req.getLiftType();
+    public RestResponse options(@RequestBody OptionReq request) {
+        Integer liftType = request.getLiftType();
         String sort = null;
         if (liftType.equals(3)) {
             sort = "-1,1";
@@ -70,9 +70,9 @@ public class MaintenanceOptionController {
         List<MaintenanceOption> options = optionService.list(
                 new QueryWrapper<MaintenanceOption>()
                         //0是系统默认维保项
-                        .in("mt_company_id", 0L, req.getMtCompanyId())
-                        .in(req.getType() != null, "type", type(req))
-                        .eq(req.getLiftType() != null, "lift_type", req.getLiftType())
+                        .in("mt_company_id", 0L, request.getMtCompanyId())
+                        .in(request.getType() != null, "type", type(request))
+                        .eq(request.getLiftType() != null, "lift_type", request.getLiftType())
                         .in(sort != null, "sort", sort)
         );
         if (options.isEmpty()) {

+ 5 - 4
lift-system-service/src/main/java/cn/com/ty/lift/system/faq/controller/FaqController.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -72,7 +73,7 @@ public class FaqController {
      * @since 2019/11/27 10:51
      */
     @PostMapping("/update")
-    public RestResponse updateOne(@RequestBody Faq faq) {
+    public RestResponse updateOne(@Valid @RequestBody Faq faq) {
         if (faqService.updateById(faq)) {
             return RestResponse.success(null, "成功");
         }
@@ -87,7 +88,7 @@ public class FaqController {
      * @since 2019/11/27 10:51
      */
     @PostMapping("/delete")
-    public RestResponse delete(@RequestBody Faq faq) {
+    public RestResponse delete(@Valid @RequestBody Faq faq) {
         return faqService.delete(faq.getId());
     }
 
@@ -99,7 +100,7 @@ public class FaqController {
      * @since 2019/11/27 10:52
      */
     @PostMapping("/up")
-    public RestResponse up(@RequestBody Faq faq) {
+    public RestResponse up(@Valid @RequestBody Faq faq) {
         return faqService.serial(faq.getId(), 1);
     }
 
@@ -111,7 +112,7 @@ public class FaqController {
      * @since 2019/11/27 10:52
      */
     @PostMapping("/down")
-    public RestResponse down(@RequestBody Faq faq) {
+    public RestResponse down(@Valid @RequestBody Faq faq) {
         return faqService.serial(faq.getId(), 0);
     }
 }

+ 2 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/faq/dao/entity/Faq.java

@@ -8,6 +8,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -29,6 +30,7 @@ public class Faq extends BaseTree implements Serializable {
      * (分类 问题标题 答案) 的id
      */
     @TableId(value = "id", type = IdType.ID_WORKER)
+    @NotNull(message = "id不能为空")
     private Long id;
 
     /**

+ 34 - 23
lift-system-service/src/main/java/cn/com/ty/lift/system/faq/service/impl/FaqServiceImpl.java

@@ -8,9 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -41,42 +41,55 @@ public class FaqServiceImpl extends ServiceImpl<FaqMapper, Faq> implements FaqSe
      */
     public RestResponse add(Faq faq) {
         List<Faq> faqs = this.list(new QueryWrapper<Faq>()
-                .select("id", "serial")
-                .eq("type", faq.getType())
+                .select("serial")
                 .eq("parent_id", faq.getParentId())
                 .orderByDesc("serial"));
-        faq.setSerial(faqs.size() + 1);
+        if (faqs.isEmpty()) {
+            faq.setSerial(1);
+        } else {
+            faq.setSerial(faqs.get(0).getSerial() + 1);
+        }
         if (this.save(faq)) {
             return RestResponse.success(null, "成功");
         }
         return RestResponse.fail();
     }
 
+    /**
+     * 删除id及id下的所有记录
+     *
+     * @param id 要删除的顶级id
+     * @return 操作结果
+     */
     public RestResponse delete(Long id) {
-        List<Long> ids = new ArrayList<>();
         List<Faq> faqs = this.list(new QueryWrapper<Faq>().select("id", "parent_id"));
-        this.ids(id, faqs, ids);
+        removeFaqs(id, faqs);
+        List<Long> ids = faqs.stream()
+                //保留序号为-1的记录
+                .filter(faq -> faq.getSerial().equals(-1))
+                //只获取Id字段
+                .map(Faq::getId)
+                //转数组返回
+                .collect(Collectors.toList());
         ids.add(id);
-        if (this.removeByIds(ids)) {
-            return RestResponse.success(null, "成功");
-        }
-        return RestResponse.fail();
+        this.removeByIds(ids);
+        return RestResponse.success(ids, "成功");
     }
 
-    private void ids(Long id, List<Faq> faqs, List<Long> ids) {
-        List<Long> childIds = new ArrayList<>();
-        //遍历常见问题列表
+    /**
+     * 将faqs中要删除的做上标记,setSerial(-1)
+     *
+     * @param id   要删除的顶级id
+     * @param faqs 常见问题列表
+     */
+    public void removeFaqs(Long id, List<Faq> faqs) {
         for (Faq faq : faqs) {
-            //如果是要删除id下的子id
             if (id.equals(faq.getParentId())) {
-                //就把id标记删除
-                childIds.add(faq.getId());
-                //然后再遍历这个子id,看有没有符合的id要标记删除,并将要删除的id列表传进去
-                this.ids(faq.getId(), faqs, ids);
+                //要删除的记录,把序号标记为-1
+                faq.setSerial(-1);
+                this.removeFaqs(faq.getId(), faqs);
             }
         }
-        //把要删除的子id记录到ids列表里
-        ids.addAll(childIds);
     }
 
     //type 1上移 0下移
@@ -107,13 +120,11 @@ public class FaqServiceImpl extends ServiceImpl<FaqMapper, Faq> implements FaqSe
     }
 
     private boolean upOrDown(Faq byId, List<Faq> faqs) {
-        System.out.println(faqs);
         Faq f = new Faq();
         for (Faq faq : faqs) {
             if (faq.getSerial().equals(byId.getSerial())) {
-                Integer serial = f.getSerial();
                 f.setSerial(byId.getSerial());
-                byId.setSerial(serial);
+                byId.setSerial(f.getSerial());
                 if (this.updateById(byId) && this.updateById(f)) {
                     return true;
                 }