Ver Fonte

Merge remote-tracking branch 'origin/dev' into dev

caozj há 2 anos atrás
pai
commit
503e5d13ab

+ 3 - 3
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRequestFundsServiceImpl.java

@@ -2,7 +2,6 @@ package com.fjhx.account.service.account.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -32,7 +31,6 @@ import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -75,7 +73,9 @@ public class AccountRequestFundsServiceImpl extends ServiceImpl<AccountRequestFu
     public Page<AccountRequestFundsVo> getPage(AccountRequestFundsSelectDto dto) {
         QueryWrapper<Object> wrapper = Wrappers.query();
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getType()), "arf.type", dto.getType());
-        wrapper.in(StrUtil.isBlank(dto.getStatus()), "arf.status", Arrays.asList(dto.getStatus().split(",")));
+        if (ObjectUtil.isNotEmpty(dto.getStatus())) {
+            wrapper.in("arf.status", dto.getStatus().split(","));
+        }
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getPaymentStatus()), "ap.status", dto.getPaymentStatus());
         wrapper.like(ObjectUtil.isNotEmpty(dto.getKeyword()), "arf.payment_remarks", dto.getKeyword());
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getWriteOffStatus()), "arf.write_off_status", dto.getWriteOffStatus());

+ 7 - 2
hx-customer/src/main/java/com/fjhx/customer/entity/customer/vo/CustomerFollowRecordsVo.java

@@ -10,7 +10,7 @@ import java.util.List;
 /**
  * 客户跟进记录列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2023-05-05
  */
 @Getter
@@ -19,5 +19,10 @@ public class CustomerFollowRecordsVo extends CustomerFollowRecords {
     /**
      * 文件列表
      */
-    List<ObsFile> fileList;
+    private List<ObsFile> fileList;
+
+    /**
+     * 客户名称
+     */
+    private String customerName;
 }

+ 4 - 2
hx-customer/src/main/java/com/fjhx/customer/entity/customer/vo/CustomerVo.java

@@ -1,7 +1,5 @@
 package com.fjhx.customer.entity.customer.vo;
 
-import com.fjhx.area.service.ISetAreaName;
-import com.fjhx.area.service.SetCustomizeAreaId;
 import com.fjhx.area.service.SetCustomizeAreaName;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.entity.customer.po.CustomerFollowRecords;
@@ -55,4 +53,8 @@ public class CustomerVo extends Customer implements SetCustomizeAreaName {
      */
     private Integer isTop;
 
+    /**
+     * 客户状态 字典值
+     */
+    private String statusVal;
 }

+ 9 - 2
hx-customer/src/main/java/com/fjhx/customer/service/customer/impl/CustomerFollowRecordsServiceImpl.java

@@ -13,6 +13,7 @@ import com.fjhx.customer.entity.customer.po.CustomerFollowRecords;
 import com.fjhx.customer.entity.customer.vo.CustomerFollowRecordsVo;
 import com.fjhx.customer.mapper.customer.CustomerFollowRecordsMapper;
 import com.fjhx.customer.service.customer.CustomerFollowRecordsService;
+import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.file.entity.FileInfo;
 import com.fjhx.file.entity.ObsFile;
 import com.fjhx.file.service.FileInfoService;
@@ -39,12 +40,14 @@ import java.util.stream.Collectors;
 public class CustomerFollowRecordsServiceImpl extends ServiceImpl<CustomerFollowRecordsMapper, CustomerFollowRecords> implements CustomerFollowRecordsService {
 
     @Autowired
-    FileInfoService fileInfoService;
+    private FileInfoService fileInfoService;
+    @Autowired
+    private CustomerService customerService;
 
     @Override
     public Page<CustomerFollowRecordsVo> getPage(CustomerFollowRecordsSelectDto dto) {
         IWrapper<CustomerFollowRecords> wrapper = getWrapper();
-        wrapper.eq("cfr",CustomerFollowRecords::getCustomerId,dto.getCustomerId());//根据客户id过滤
+        wrapper.eq("cfr", CustomerFollowRecords::getCustomerId, dto.getCustomerId());//根据客户id过滤
         wrapper.orderByDesc("cfr", CustomerFollowRecords::getDate);
         Page<CustomerFollowRecordsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<CustomerFollowRecordsVo> records = page.getRecords();
@@ -58,6 +61,10 @@ public class CustomerFollowRecordsServiceImpl extends ServiceImpl<CustomerFollow
                 record.setFileList(obsFiles);
             }
         }
+        //赋值客户名称
+        customerService.attributeAssign(records, CustomerFollowRecordsVo::getCustomerId, (item, customer) -> {
+            item.setCustomerName(customer.getName());
+        });
 
         return page;
     }

+ 15 - 0
hx-customer/src/main/java/com/fjhx/customer/service/customer/impl/CustomerServiceImpl.java

@@ -4,11 +4,13 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.area.utils.CustomizeAreaUtil;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.entity.coding.bo.CustomerCodeAndCountryId;
 import com.fjhx.common.service.coding.CodingRuleCustomerService;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
@@ -41,6 +43,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -65,6 +68,7 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
     @Autowired
     private DictTenantDataService dictTenantDataService;
 
+
     /**
      * 查询客户的列表
      *
@@ -131,6 +135,14 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
         List<CustomerVo> records = page.getRecords();
         CustomizeAreaUtil.setAreaName(records);
 
+        //获取客户类型字典
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        DictTenantDataSelectDto dictTenantDataSelectDto = new DictTenantDataSelectDto();
+        dictTenantDataSelectDto.setDictCode("customer_status");
+        List<DictTenantDataVo> dictTenantDataVoList = dictTenantDataService.getList(dictTenantDataSelectDto);
+        Map<String, String> customerStatusDic = dictTenantDataVoList.stream().collect(Collectors.toMap(DictTenantDataVo::getDictKey, DictTenantDataVo::getDictValue));
+        DynamicDataSourceContextHolder.poll();
+
         // 赋值客户跟进记录
         for (CustomerVo record : records) {
             List<CustomerFollowRecords> customerFollowRecordsList = customerFollowRecordsService.list(q -> q
@@ -139,6 +151,9 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
                     .last("limit 3")
             );
             record.setCustomerFollowRecordsList(customerFollowRecordsList);
+
+            //赋值客户状态字典值
+            record.setStatusVal(customerStatusDic.get(record.getStatus()));
         }
 
         // 赋值是否置顶

+ 10 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractProductSelectDto.java

@@ -30,4 +30,14 @@ public class ContractProductSelectDto extends BaseSelectDto {
      * 结论
      */
     private String summary;
+
+    /**
+     * 所属公司id过滤
+     */
+    private Long corporationId;
+
+    /**
+     * 是否到账 1是 0否过滤
+     */
+    private Integer isReceived;
 }

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/intermediate/vo/IntermediateContractVo.java

@@ -54,4 +54,6 @@ public class IntermediateContractVo extends IntermediateContract {
      */
     private String buyCorporationName;
 
+    private String opUserName;
+
 }

+ 55 - 28
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -1,9 +1,11 @@
 package com.fjhx.sale.service.contract.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.entity.contract.po.ContractTemplate;
 import com.fjhx.common.enums.FlowStatusEnum;
 import com.fjhx.common.service.contract.ContractTemplateService;
 import com.fjhx.common.service.corporation.CorporationService;
@@ -19,6 +21,7 @@ import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.mapper.contract.ContractProductMapper;
+import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
@@ -67,6 +70,8 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 
     @Autowired
     private FlowExampleService flowExampleService;
+    @Autowired
+    private ClaimContractService claimContractService;
 
     /**
      * 分页
@@ -83,6 +88,24 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
         if (StringUtils.isNotEmpty(dto.getKeyword())) {
             wrapper.keyword(dto.getKeyword(), new SqlField("t2.`code`"), new SqlField("t2.`user_name`"));
         }
+        //所属公司id过滤
+        if (ObjectUtil.isNotEmpty(dto.getCorporationId())) {
+            List<Long> ctIds = contractTemplateService.listObject(ContractTemplate::getId,
+                    q -> q.eq(ContractTemplate::getCorporationId, dto.getCorporationId()));
+            if (ObjectUtil.isEmpty(ctIds)) {
+                return new Page<>();
+            }
+            wrapper.in("t2.contract_template_id", ctIds);
+        }
+        //是否到账过滤
+        if (ObjectUtil.isNotEmpty(dto.getIsReceived())) {
+            if (1 == dto.getIsReceived()) {
+                wrapper.isNotNull("co.id");
+            } else {
+                wrapper.isNull("co.id");
+            }
+        }
+        wrapper.groupBy("t1.id");
         Page<ContractProductVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<ContractProductVo> list = page.getRecords();
 
@@ -126,11 +149,12 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 
     /**
      * 根据合同ID和客户ID查询未包装的产品
+     *
      * @param customerId
      * @return
      */
     @Override
-    public List<ContractProductVo> getNoPackContractProductById(String customerId,String contractIds) {
+    public List<ContractProductVo> getNoPackContractProductById(String customerId, String contractIds) {
         List<ContractProductVo> list = baseMapper.getNoPackContractProductById(customerId, Arrays.asList(contractIds.split(",")));
         // 赋值产品属性
         productInfoService.attributeAssign(list, ContractProductVo::getProductId, (item, product) -> {
@@ -150,6 +174,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 
     /**
      * 交接单
+     *
      * @param dto
      * @return
      */
@@ -157,15 +182,15 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     public Page<ContractProductVo> getEHSDPage(ContractProductSelectDto dto) {
         IWrapper<ContractProduct> wrapper = getWrapper();
         wrapper.orderByDesc("t1.ct");
-        if(StringUtils.isNotEmpty(dto.getKeyword())){
-            wrapper.keyword(dto.getKeyword(),new SqlField("t1.`contractCode`"),new SqlField("t1.`userName`"));
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.keyword(dto.getKeyword(), new SqlField("t1.`contractCode`"), new SqlField("t1.`userName`"));
         }
-        if(StringUtils.isNotEmpty(dto.getIds())){
-            wrapper.in("t1.id",Arrays.asList(dto.getIds().split(",")));
+        if (StringUtils.isNotEmpty(dto.getIds())) {
+            wrapper.in("t1.id", Arrays.asList(dto.getIds().split(",")));
         }
         Page<ContractProductVo> page = this.baseMapper.getEHSDPage(dto.getPage(), wrapper);
         List<ContractProductVo> list = page.getRecords();
-        if(CollectionUtils.isNotEmpty(list)){
+        if (CollectionUtils.isNotEmpty(list)) {
             // 赋值产品属性
             productInfoService.attributeAssign(list, ContractProductVo::getProductId, (item, product) -> {
                 item.setProductCode(product.getCode());
@@ -185,6 +210,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 
     /**
      * 待质检分页
+     *
      * @param dto
      * @return
      */
@@ -192,17 +218,17 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     public Page<ContractProductVo> getEHSDQualityPage(ContractProductSelectDto dto) {
         IWrapper<ContractProduct> wrapper = getWrapper();
         wrapper.orderByDesc("t1.ct");
-        if(StringUtils.isNotEmpty(dto.getKeyword())){
-            wrapper.keyword(dto.getKeyword(),new SqlField("t1.`contractCode`"),new SqlField("t1.`userName`"));
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.keyword(dto.getKeyword(), new SqlField("t1.`contractCode`"), new SqlField("t1.`userName`"));
         }
-        if(StringUtils.isNotEmpty(dto.getOrderType())){
-            wrapper.eq("t1.orderType",dto.getOrderType());
+        if (StringUtils.isNotEmpty(dto.getOrderType())) {
+            wrapper.eq("t1.orderType", dto.getOrderType());
         }
-        if(StringUtils.isNotEmpty(dto.getQualityStatus())){
-            wrapper.eq("t1.qualityStatus",dto.getQualityStatus());
+        if (StringUtils.isNotEmpty(dto.getQualityStatus())) {
+            wrapper.eq("t1.qualityStatus", dto.getQualityStatus());
         }
-        if(StringUtils.isNotEmpty(dto.getSummary())){
-            wrapper.eq("t1.summary",dto.getSummary());
+        if (StringUtils.isNotEmpty(dto.getSummary())) {
+            wrapper.eq("t1.summary", dto.getSummary());
         }
         Page<ContractProductVo> page = this.baseMapper.getEHSDPage(dto.getPage(), wrapper);
         List<ContractProductVo> list = page.getRecords();
@@ -210,7 +236,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 //        List<Long> contractProductIds = list.stream().map(ContractProductVo::getId).collect(Collectors.toList());
 //        List<EhsdQuality> qualityList = ehsdQualityService.list(Wrappers.<EhsdQuality>query().lambda().in(EhsdQuality::getBusinessId,contractProductIds));
 //        Map<Long,Integer> qualityMap = qualityList.stream().distinct().collect(Collectors.toMap(EhsdQuality::getBusinessId,EhsdQuality::getStatus));
-        if(CollectionUtils.isNotEmpty(list)){
+        if (CollectionUtils.isNotEmpty(list)) {
             // 赋值产品属性
             productInfoService.attributeAssign(list, ContractProductVo::getProductId, (item, product) -> {
                 item.setProductCode(product.getCode());
@@ -247,17 +273,17 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     public Page<ContractProductVo> contractHandoverPage(ContractProductSelectDto dto) {
         IWrapper<ContractProduct> wrapper = getWrapper();
         wrapper.orderByDesc("t1.create_time");
-        if(StringUtils.isNotEmpty(dto.getKeyword())){
-            wrapper.keyword(dto.getKeyword(),new SqlField("t1.`contractCode`"),new SqlField("t1.`userName`"));
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.keyword(dto.getKeyword(), new SqlField("t1.`contractCode`"), new SqlField("t1.`userName`"));
         }
-        wrapper.ge("t2.`status`",30);
-        wrapper.lt("t2.`status`",88);
-        wrapper.gt("t1.expend_quantity",0);
+        wrapper.ge("t2.`status`", 30);
+        wrapper.lt("t2.`status`", 88);
+        wrapper.gt("t1.expend_quantity", 0);
         //查询合同交接单的数据(只查询有添加交接单的数据)
         Page<ContractProductVo> page = this.baseMapper.contractHandoverPage(dto.getPage(), wrapper);
 
         List<ContractProductVo> list = page.getRecords();
-        if(CollectionUtils.isNotEmpty(list)){
+        if (CollectionUtils.isNotEmpty(list)) {
             // 赋值产品属性
             productInfoService.attributeAssign(list, ContractProductVo::getProductId, (item, product) -> {
                 item.setProductCode(product.getCode());
@@ -277,23 +303,24 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 
     /**
      * 根据合同产品IDS查询合同产品
+     *
      * @param ids
      * @return
      */
     @Override
     public List<ContractProductVo> getListDetail(List<Long> ids) {
-        if(CollectionUtils.isEmpty(ids)){
+        if (CollectionUtils.isEmpty(ids)) {
             throw new ServiceException("参数异常");
         }
         IWrapper<ContractProduct> wrapper = getWrapper();
-        wrapper.in("t1",ContractProduct::getId,ids);
+        wrapper.in("t1", ContractProduct::getId, ids);
         List<ContractProductVo> list = baseMapper.getListByIds(wrapper);
-        if(CollectionUtils.isNotEmpty(list)){
+        if (CollectionUtils.isNotEmpty(list)) {
             List<PurchaseDetailVo> vo = purchaseDetailService.getSumCountInDataResourceIds(ids);
-            Map<Long,BigDecimal> voMap = vo.stream().collect(Collectors.toMap(PurchaseDetailVo::getDataResourceId,PurchaseDetailVo::getSumCount));
-            for(ContractProductVo c:list){
-                if(MapUtils.isNotEmpty(voMap)){
-                    c.setSumPurchaseCount(voMap.getOrDefault(c.getId(),BigDecimal.ZERO));
+            Map<Long, BigDecimal> voMap = vo.stream().collect(Collectors.toMap(PurchaseDetailVo::getDataResourceId, PurchaseDetailVo::getSumCount));
+            for (ContractProductVo c : list) {
+                if (MapUtils.isNotEmpty(voMap)) {
+                    c.setSumPurchaseCount(voMap.getOrDefault(c.getId(), BigDecimal.ZERO));
                 }
             }
 

+ 3 - 0
hx-sale/src/main/java/com/fjhx/sale/service/intermediate/impl/IntermediateContractServiceImpl.java

@@ -19,6 +19,7 @@ import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.documents.DocumentsService;
 import com.fjhx.sale.service.intermediate.IntermediateContractService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -69,6 +70,8 @@ public class IntermediateContractServiceImpl extends ServiceImpl<IntermediateCon
         corporationService.attributeAssign(records, IntermediateContractVo::getSellCorporationId, (item, corporation) -> {
             item.setSellCorporationName(corporation.getName());
         });
+        //赋值最近操作用户
+        UserUtil.assignmentNickName(records, IntermediateContractVo::getUpdateUser, IntermediateContractVo::setOpUserName);
         return page;
     }
 

+ 5 - 3
hx-sale/src/main/java/com/fjhx/sale/service/pack/impl/PackDetailServiceImpl.java

@@ -19,7 +19,6 @@ import com.fjhx.sale.service.pack.PackShipmentService;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -53,11 +52,14 @@ public class PackDetailServiceImpl extends ServiceImpl<PackDetailMapper, PackDet
     public Page<PackDetailVo> getPage(PackDetailSelectDto dto) {
         IWrapper<PackDetail> wrapper = getWrapper();
         if (ObjectUtil.isNotEmpty(dto.getShipmentStatus())) {
-            wrapper.eq("t1", PackDetailVo::getShipmentStatus, dto.getShipmentStatus());
+            wrapper.eq("pd", PackDetailVo::getShipmentStatus, dto.getShipmentStatus());
         }
         if (StringUtils.isNotEmpty(dto.getKeyword())) {
-            wrapper.keyword(dto.getKeyword(), new SqlField("t3.`code`"), new SqlField("t2.`product_name`"));
+//            wrapper.keyword(dto.getKeyword(), new SqlField("t3.`code`"), new SqlField("t2.`product_name`"));
+            wrapper.like("pd.codeAPName", dto.getKeyword());
         }
+//        wrapper.groupBy("t1.pack_id");
+//        wrapper.orderByDesc("t1.create_time");
         Page<PackDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         return page;
     }

+ 12 - 9
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -20,7 +20,9 @@
                t1.quantity
         FROM contract_product t1
             LEFT JOIN contract t2
-        ON t1.contract_id = t2.id
+            LEFT JOIN claim_contract co
+        on co.contract_id = t2.id
+            ON t1.contract_id = t2.id
             ${ew.customSqlSegment}
     </select>
 
@@ -154,18 +156,19 @@
 
     <select id="getNoPackContractProductById" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT
-            *
+        *
         FROM
         (
         SELECT
-            t2.*,
-            t1.id AS contractId,
-            t1.`code` AS contractCode,
-            t2.quantity AS cpQuantity,
-            t2.id AS contractProductId,
-            ( SELECT IFNULL( SUM( quantity ), 0 ) FROM pack_detail_product WHERE contract_product_id = t2.id ) AS sumPackQuantity
+        t2.*,
+        t1.id AS contractId,
+        t1.`code` AS contractCode,
+        t2.quantity AS cpQuantity,
+        t2.id AS contractProductId,
+        ( SELECT IFNULL( SUM( pd.pack_quantity * pdd.quantity ), 0 ) FROM pack_detail_product pdd LEFT JOIN pack_detail
+        pd ON pdd.pack_detail_id = pd.id WHERE pdd.contract_product_id = t2.id ) AS sumPackQuantity
         FROM
-            contract t1
+        contract t1
         LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
         <where>
             <if test="customerId neq null and customerId neq '' ">

+ 1 - 1
hx-sale/src/main/resources/mapper/intermediate/IntermediateContractMapper.xml

@@ -7,7 +7,7 @@
                c.currency,
                c.sell_corporation_id oldSellCorporationId,
                c.buy_corporation_id  oldBuyCorporationId,
-               ic.documents_id,
+               d.id                  documentsId,
                ic.sell_corporation_id,
                ic.sell_contact_name,
                ic.sell_contact_number,

+ 27 - 17
hx-sale/src/main/resources/mapper/pack/PackDetailMapper.xml

@@ -2,23 +2,33 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.sale.mapper.pack.PackDetailMapper">
     <select id="getPage" resultType="com.fjhx.sale.entity.pack.vo.PackDetailVo">
-        SELECT (SELECT GROUP_CONCAT(CONCAT(t3.`code`, "_", t2.product_name)) AS codeAPName
-                FROM pack_detail_product t2
-                         LEFT JOIN contract t3 ON t2.contract_id = t3.id
-                where t2.pack_detail_id in (GROUP_CONCAT(t1.id))) AS codeAPName,
-               sum(t1.pack_quantity)                                 packQuantity,
-               sum(t1.net_weight)                                    netWeight,
-               sum(t1.rough_weight)                                  roughWeight,
-               t1.box_long,
-               t1.box_wide,
-               t1.box_high,
-               sum(t1.bom_volume)                                    bomVolume,
-               t1.shipment_status,
-               t1.shipment_time,
-               t1.contract_ids
-        FROM pack_detail t1
-        GROUP BY t1.pack_id
-        ORDER BY t1.create_time DESC
+        select *
+        from (SELECT t1.id,
+                     t1.pack_id,
+                     t1.waybill_code,
+                     t1.express_id,
+                     t1.remark,
+                     t1.update_time,
+                     t1.update_user,
+                     t1.create_user,
+                     t1.create_time,
+                     (SELECT GROUP_CONCAT(CONCAT(t3.`code`, "_", t2.product_name)) AS codeAPName
+                      FROM pack_detail_product t2
+                               LEFT JOIN contract t3 ON t2.contract_id = t3.id
+                      WHERE t2.pack_detail_id IN (GROUP_CONCAT(t1.id))) AS codeAPName,
+                     sum(t1.pack_quantity)                                 packQuantity,
+                     sum(t1.net_weight)                                    netWeight,
+                     sum(t1.rough_weight)                                  roughWeight,
+                     t1.box_long,
+                     t1.box_wide,
+                     t1.box_high,
+                     sum(t1.bom_volume)                                    bomVolume,
+                     t1.shipment_status,
+                     t1.shipment_time,
+                     t1.contract_ids
+              FROM pack_detail t1
+              GROUP BY t1.pack_id
+              ORDER BY t1.create_time desc) pd
             ${ew.customSqlSegment}
     </select>