home 2 年之前
父節點
當前提交
02436be139

+ 32 - 2
hx-common/common-client-util/src/main/java/com/fjhx/utils/RegionClientUtil.java

@@ -1,7 +1,13 @@
 package com.fjhx.utils;
 
+
+import cn.hutool.core.convert.Convert;
 import cn.hutool.extra.spring.SpringUtil;
-import com.fjhx.feign.IRegionClient;
+import org.springblade.core.tool.api.R;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
 
 public class RegionClientUtil {
 
@@ -17,6 +23,30 @@ public class RegionClientUtil {
         return iRegionClient;
     }
 
+    public static void setRegionName(List<Map<String, Object>> list) {
+        IRegionClient regionClient = getRegionClient();
+
+        HashSet<String> regionSet = new HashSet<>();
+
+        for (Map<String, Object> item : list) {
+            // 查询国省市
+            regionSet.add(Convert.toStr(item.get("countryId")));
+            regionSet.add(Convert.toStr(item.get("provinceId")));
+            regionSet.add(Convert.toStr(item.get("cityId")));
+        }
+        regionSet.remove(null);
+
+        R<Map<String, String>> r = regionClient.getChineseNameById(regionSet);
+        Map<String, String> regionMap = Assert.result(r);
+
+        for (Map<String, Object> item : list) {
+            // 赋值国省市
+            item.put("countryName", regionMap.get(Convert.toStr(item.get("countryId"))));
+            item.put("provinceName", regionMap.get(Convert.toStr(item.get("provinceId"))));
+            item.put("cityName", regionMap.get(Convert.toStr(item.get("cityId"))));
+        }
+
+    }
 
 
-}
+}

+ 2 - 2
hx-service-api/blade-ex-api/src/main/java/com/fjhx/feign/IRegionClient.java

@@ -6,8 +6,8 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
-import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * File Feign接口类
@@ -23,6 +23,6 @@ public interface IRegionClient {
      * @param regionSet 城市id集合
      */
     @PostMapping(GET_CHINESE_NAME_BY_ID)
-    R<Map<String, String>> getChineseNameById(@RequestBody List<String> regionSet);
+    R<Map<String, String>> getChineseNameById(@RequestBody Set<String> regionSet);
 
 }

+ 8 - 6
hx-service-api/crm-api/src/main/java/com/fjhx/entity/contract/Contract.java

@@ -1,17 +1,15 @@
 package com.fjhx.entity.contract;
 
-import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fjhx.base.BaseEntity;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * <p>
  * 合同
@@ -24,6 +22,10 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class Contract extends BaseEntity {
 
+    /**
+     * 合同编码
+     */
+    private String code;
 
     /**
      * 客户id

+ 8 - 0
hx-service-api/crm-api/src/main/java/com/fjhx/params/contract/ContractVo.java

@@ -1,9 +1,12 @@
 package com.fjhx.params.contract;
 
 import com.fjhx.entity.contract.Contract;
+import com.fjhx.entity.contract.ContractDetails;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 合同
  *
@@ -14,4 +17,9 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class ContractVo extends Contract {
 
+    /**
+     * 合同明细
+     */
+    List<ContractDetails> contractDetailsList;
+
 }

+ 3 - 7
hx-service/blade-ex/src/main/java/com/fjhx/feign/RegionClient.java

@@ -1,29 +1,25 @@
 package com.fjhx.feign;
 
 import com.fjhx.service.ExRegionService;
-import lombok.AllArgsConstructor;
-import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
-import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
-@NonDS
 @ApiIgnore
 @RestController
-@AllArgsConstructor
-public class RegionClient implements IRegionClient {
+public class RegionClient implements IRegionClient{
 
     @Autowired
     private ExRegionService exRegionService;
 
     @PostMapping(GET_CHINESE_NAME_BY_ID)
     @Override
-    public R<Map<String, String>> getChineseNameById(List<String> regionSet) {
+    public R<Map<String, String>> getChineseNameById(Set<String> regionSet) {
         return R.success(exRegionService.getChineseNameById(regionSet));
     }
 

+ 1 - 1
hx-service/crm/pom.xml

@@ -25,7 +25,7 @@
 
         <dependency>
             <groupId>com.fjhx</groupId>
-            <artifactId>blade-ex-api</artifactId>
+            <artifactId>common-client-util</artifactId>
         </dependency>
 
     </dependencies>

+ 12 - 7
hx-service/crm/src/main/java/com/fjhx/controller/contract/ContractController.java

@@ -1,18 +1,17 @@
 package com.fjhx.controller.contract;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.contract.Contract;
 import com.fjhx.params.contract.ContractVo;
 import com.fjhx.service.contract.ContractService;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Map;
-
 /**
  * <p>
  * 合同 前端控制器
@@ -29,28 +28,34 @@ public class ContractController {
     private ContractService contractService;
 
     @PostMapping("/page")
-    public R page(@RequestBody Map<String, String> condition){
+    public R page(@RequestBody Condition condition) {
         Page<Contract> result = contractService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody ContractVo contractVo){
+    public R add(@RequestBody ContractVo contractVo) {
         contractService.add(contractVo);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody ContractVo contractVo){
+    public R edit(@RequestBody ContractVo contractVo) {
         contractService.edit(contractVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody ContractVo contractVo){
+    public R delete(@RequestBody ContractVo contractVo) {
         contractService.delete(contractVo);
         return R.success();
     }
 
+    @PostMapping("/details")
+    public R details(@RequestBody Contract contract) {
+        ContractVo contractVo = contractService.details(contract.getId());
+        return R.success(contractVo);
+    }
+
 }
 

+ 13 - 7
hx-service/crm/src/main/java/com/fjhx/controller/customer/CustomerController.java

@@ -2,10 +2,10 @@ package com.fjhx.controller.customer;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.Condition;
-import org.springblade.core.tool.api.R;
-import com.fjhx.entity.customer.Customer;
+import com.fjhx.params.contract.ContractEx;
 import com.fjhx.params.customer.CustomerVo;
 import com.fjhx.service.customer.CustomerService;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -30,28 +30,34 @@ public class CustomerController {
     private CustomerService customerService;
 
     @PostMapping("/page")
-    public R page(@RequestBody Condition condition){
-        Page<Customer> result = customerService.getPage(condition);
+    public R page(@RequestBody Condition condition) {
+        Page<Map<String, Object>> result = customerService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody CustomerVo customerVo){
+    public R add(@RequestBody CustomerVo customerVo) {
         customerService.add(customerVo);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody CustomerVo customerVo){
+    public R edit(@RequestBody CustomerVo customerVo) {
         customerService.edit(customerVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody CustomerVo customerVo){
+    public R delete(@RequestBody CustomerVo customerVo) {
         customerService.delete(customerVo);
         return R.success();
     }
 
+    @PostMapping("/details")
+    public R details(@RequestBody ContractEx contractVo) {
+        CustomerVo customerVo = customerService.details(contractVo.getId());
+        return R.success(customerVo);
+    }
+
 }
 

+ 6 - 4
hx-service/crm/src/main/java/com/fjhx/service/contract/ContractService.java

@@ -1,11 +1,11 @@
 package com.fjhx.service.contract;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.contract.Contract;
+import com.fjhx.params.contract.ContractEx;
 import com.fjhx.params.contract.ContractVo;
-import com.fjhx.base.BaseService;
-
-import java.util.Map;
 
 /**
  * <p>
@@ -17,7 +17,7 @@ import java.util.Map;
  */
 public interface ContractService extends BaseService<Contract> {
 
-    Page<Contract> getPage(Map<String, String> condition);
+    Page<Contract> getPage(Condition condition);
 
     void add(ContractVo contractVo);
 
@@ -25,4 +25,6 @@ public interface ContractService extends BaseService<Contract> {
 
     void delete(ContractVo contractVo);
 
+    ContractVo details(Long id);
+
 }

+ 75 - 14
hx-service/crm/src/main/java/com/fjhx/service/contract/impl/ContractServiceImpl.java

@@ -1,17 +1,26 @@
 package com.fjhx.service.contract.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.BaseEntity;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.contract.Contract;
-import com.fjhx.params.contract.ContractVo;
+import com.fjhx.entity.contract.ContractDetails;
 import com.fjhx.mapper.contract.ContractMapper;
+import com.fjhx.params.contract.ContractVo;
+import com.fjhx.service.contract.ContractDetailsService;
 import com.fjhx.service.contract.ContractService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Map;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -24,31 +33,83 @@ import java.util.Map;
 @Service
 public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements ContractService {
 
-    @Override
-    public Page<Contract> getPage(Map<String, String> condition) {
-
-        QueryWrapper<Contract> wrapper = Wrappers.query();
+    @Autowired
+    private ContractDetailsService contractDetailsService;
 
-        WrapperUtil.init(condition, wrapper)
-                .createTimeDesc();
+    @Override
+    public Page<Contract> getPage(Condition condition) {
+        String keyword = condition.getKeyword();
 
-        Page<Contract> page = page(condition, wrapper);
-        return page;
+        return lambdaQuery()
+                .and(ObjectUtil.isNotEmpty(keyword), q -> q
+                        .like(Contract::getCode, keyword)
+                        .like(Contract::getLinkName, keyword)
+                )
+                .orderByDesc(BaseEntity::getId)
+                .page(condition.getPage());
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(ContractVo contractVo) {
-        save(contractVo);
+        synchronized (this) {
+            contractVo.setCode(getCode());
+            save(contractVo);
+        }
+
+        List<ContractDetails> contractDetailsList = contractVo.getContractDetailsList();
+        contractDetailsList.forEach(item -> item.setContractId(contractVo.getId()));
+        contractDetailsService.saveBatch(contractDetailsList);
+
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(ContractVo contractVo) {
         updateById(contractVo);
+
+        List<ContractDetails> contractDetailsList = contractVo.getContractDetailsList();
+        contractDetailsList.forEach(item -> item.setContractId(contractVo.getId()));
+        contractDetailsService.saveOrUpdateBatch(contractDetailsList);
+
+        List<Long> customerLinkIdList = contractDetailsList.stream().map(BaseEntity::getId).collect(Collectors.toList());
+        contractDetailsService.remove(Wrappers.<ContractDetails>lambdaQuery()
+                .eq(ContractDetails::getContractId, contractVo.getId())
+                .notIn(BaseEntity::getId, customerLinkIdList));
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(ContractVo contractVo) {
         removeById(contractVo.getId());
+        contractDetailsService.remove(ContractDetails::getContractId, contractVo.getId());
+    }
+
+    @Override
+    public ContractVo details(Long id) {
+        Contract contract = getById(id);
+        ContractVo contractVo = BeanUtil.toBean(contract, ContractVo.class);
+
+        List<ContractDetails> list = contractDetailsService.list(ContractDetails::getContractId, id);
+        contractVo.setContractDetailsList(list);
+
+        return contractVo;
+    }
+
+    private String getCode() {
+        Contract contract = getOne(Wrappers.<Contract>lambdaQuery()
+                .eq(BaseEntity::getTenantId, AuthUtil.getTenantId())
+                .select(Contract::getCode)
+                .orderByDesc(Contract::getCode)
+                .last("limit 1")
+        );
+
+        if (contract == null) {
+            return "SC00001";
+        }
+        String code = contract.getCode();
+        int num = Convert.toInt(code.replace("SC", "")) + 1;
+        return "SC" + num;
     }
 
 }

+ 5 - 1
hx-service/crm/src/main/java/com/fjhx/service/customer/CustomerService.java

@@ -6,6 +6,8 @@ import com.fjhx.base.Condition;
 import com.fjhx.entity.customer.Customer;
 import com.fjhx.params.customer.CustomerVo;
 
+import java.util.Map;
+
 /**
  * <p>
  * 客户 服务类
@@ -16,7 +18,7 @@ import com.fjhx.params.customer.CustomerVo;
  */
 public interface CustomerService extends BaseService<Customer> {
 
-    Page<Customer> getPage(Condition condition);
+    Page<Map<String, Object>> getPage(Condition condition);
 
     void add(CustomerVo customerVo);
 
@@ -24,4 +26,6 @@ public interface CustomerService extends BaseService<Customer> {
 
     void delete(CustomerVo customerVo);
 
+    CustomerVo details(Long id);
+
 }

+ 44 - 10
hx-service/crm/src/main/java/com/fjhx/service/customer/impl/CustomerServiceImpl.java

@@ -1,5 +1,7 @@
 package com.fjhx.service.customer.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,11 +15,13 @@ import com.fjhx.mapper.customer.CustomerMapper;
 import com.fjhx.params.customer.CustomerVo;
 import com.fjhx.service.customer.CustomerLinkService;
 import com.fjhx.service.customer.CustomerService;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -35,24 +39,23 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
     private CustomerLinkService customerLinkService;
 
     @Override
-    public Page<Customer> getPage(Condition condition) {
+    public Page<Map<String, Object>> getPage(Condition condition) {
         String keyword = condition.getKeyword();
 
         LambdaQueryWrapper<Customer> wrapper = Wrappers.lambdaQuery();
         wrapper.and(ObjectUtil.isNotEmpty(keyword), q -> q
-                .like(Customer::getCode, keyword)
-                .like(Customer::getName, keyword)
-        );
-
+                        .like(Customer::getCode, keyword)
+                        .like(Customer::getName, keyword)
+                )
+                .orderByDesc(BaseEntity::getId);
 
-        Page<Customer> page = page(condition, wrapper);
-        List<Customer> records = page.getRecords();
+        Page<Map<String, Object>> page = pageMaps(condition.getPage(), wrapper);
+        List<Map<String, Object>> records = page.getRecords();
         if (records.size() == 0) {
             return page;
         }
 
-
-
+//        RegionClientUtil.setRegionName(records);
 
         return page;
     }
@@ -60,7 +63,11 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(CustomerVo customerVo) {
-        save(customerVo);
+
+        synchronized (this) {
+            customerVo.setCode(getCoded());
+            save(customerVo);
+        }
 
         List<CustomerLink> customerLinkList = customerVo.getCustomerLinkList();
         customerLinkList.forEach(customerLink -> customerLink.setCustomerId(customerVo.getId()));
@@ -94,4 +101,31 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
         customerLinkService.remove(CustomerLink::getCustomerId, customerVo.getId());
     }
 
+    @Override
+    public CustomerVo details(Long id) {
+        Customer customer = getById(id);
+        CustomerVo customerVo = BeanUtil.toBean(customer, CustomerVo.class);
+
+        List<CustomerLink> list = customerLinkService.list(CustomerLink::getCustomerId, id);
+        customerVo.setCustomerLinkList(list);
+
+        return customerVo;
+    }
+
+    private String getCoded() {
+        Customer customer = getOne(Wrappers.<Customer>lambdaQuery()
+                .eq(BaseEntity::getTenantId, AuthUtil.getTenantId())
+                .select(Customer::getCode)
+                .orderByDesc(Customer::getCode)
+                .last("limit 1")
+        );
+
+        if (customer == null) {
+            return "C00001";
+        }
+        String code = customer.getCode();
+        int num = Convert.toInt(code.replace("C", "")) + 1;
+        return "C" + num;
+    }
+
 }