yzc 11 mesi fa
parent
commit
73c32eaa30

+ 17 - 4
hx-sale/src/main/java/com/fjhx/sale/controller/documents/DocumentsPdfController.java

@@ -1,11 +1,16 @@
 package com.fjhx.sale.controller.documents;
 
-import org.springframework.web.bind.annotation.*;
-import com.fjhx.sale.entity.documents.vo.DocumentsPdfVo;
 import com.fjhx.sale.entity.documents.dto.DocumentsPdfDto;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.sale.entity.documents.vo.DocumentsPdfVo;
 import com.fjhx.sale.service.documents.DocumentsPdfService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 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;
 
 
 /**
@@ -13,7 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  * 单证PDF数据存放表 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-26
  */
 @RestController
@@ -32,6 +37,14 @@ public class DocumentsPdfController {
     }
 
     /**
+     * 报关委托书详情
+     */
+    @PostMapping("/powerDetail")
+    public Map<String, Object> powerDetail(@RequestBody BaseSelectDto dto) {
+        return documentsPdfService.powerDetail(dto.getId());
+    }
+
+    /**
      * 单证PDF数据存放表新增
      */
     @PostMapping("/add")

+ 14 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/documents/po/Documents.java

@@ -54,4 +54,18 @@ public class Documents extends BasePo {
      * 归属公司id
      */
     private Long companyId;
+
+    /**
+     * 贸易方式
+     */
+    private String tradeMethods;
+    /**
+     * 运输方式
+     */
+    private String transportMethod;
+    /**
+     * 运输备注(装卸港)
+     */
+    private String transportRemark;
+
 }

+ 21 - 3
hx-sale/src/main/java/com/fjhx/sale/entity/documents/po/DocumentsProduct.java

@@ -1,13 +1,13 @@
 package com.fjhx.sale.entity.documents.po;
 
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.math.BigDecimal;
-
+import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  * 单证-产品表
@@ -91,4 +91,22 @@ public class DocumentsProduct extends BasePo {
     @TableField(exist = false)
     private Long productId;
 
+    /**
+     * 装箱明细ID
+     */
+    @TableField(exist = false)
+    private Long packDetailId;
+
+    /**
+     * 装箱数
+     */
+    @TableField(exist = false)
+    private BigDecimal packQuantity;
+
+    /**
+     * 单证数量
+     */
+    @TableField(exist = false)
+    private BigDecimal sumQuantity;
+
 }

+ 4 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/pack/po/PackDetail.java

@@ -2,6 +2,7 @@ package com.fjhx.sale.entity.pack.po;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fjhx.sale.entity.documents.po.DocumentsProduct;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
@@ -115,4 +116,7 @@ public class PackDetail extends BasePo {
     @TableField(exist = false)
     private List<PackDetailProduct> packDetailProductList;
 
+    @TableField(exist = false)
+    private List<DocumentsProduct> documentsProductList;
+
 }

+ 10 - 2
hx-sale/src/main/java/com/fjhx/sale/mapper/documents/DocumentsMapper.java

@@ -1,13 +1,14 @@
 package com.fjhx.sale.mapper.documents;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.fjhx.sale.entity.documents.po.Documents;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.documents.po.Documents;
 import com.fjhx.sale.entity.documents.vo.DocumentsVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Map;
+
 
 /**
  * <p>
@@ -24,4 +25,11 @@ public interface DocumentsMapper extends BaseMapper<Documents> {
      */
     Page<DocumentsVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Documents> wrapper);
 
+    /**
+     * 获取合同数据
+     *
+     * @param documentId
+     * @return
+     */
+    Map<String, Object> getContractDataById(Long documentId);
 }

+ 10 - 1
hx-sale/src/main/java/com/fjhx/sale/mapper/documents/DocumentsProductMapper.java

@@ -1,8 +1,8 @@
 package com.fjhx.sale.mapper.documents;
 
-import com.fjhx.sale.entity.documents.po.DocumentsProduct;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.documents.po.DocumentsProduct;
 import com.fjhx.sale.entity.documents.vo.DocumentsProductVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -27,7 +27,16 @@ public interface DocumentsProductMapper extends BaseMapper<DocumentsProduct> {
 
     /**
      * documentId 单证ID
+     *
      * @return
      */
     List<DocumentsProduct> getDpList(@Param("documentId") Long documentId);
+
+    /**
+     * documentId 获取最大金额数据
+     *
+     * @return
+     */
+    DocumentsProduct getMaxMoneyData(@Param("documentId") Long documentId);
+
 }

+ 12 - 5
hx-sale/src/main/java/com/fjhx/sale/service/documents/DocumentsPdfService.java

@@ -1,11 +1,13 @@
 package com.fjhx.sale.service.documents;
 
-import com.fjhx.sale.entity.documents.po.DocumentsPdf;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.sale.entity.documents.vo.DocumentsPdfVo;
-import com.fjhx.sale.entity.documents.dto.DocumentsPdfSelectDto;
 import com.fjhx.sale.entity.documents.dto.DocumentsPdfDto;
+import com.fjhx.sale.entity.documents.dto.DocumentsPdfSelectDto;
+import com.fjhx.sale.entity.documents.po.DocumentsPdf;
+import com.fjhx.sale.entity.documents.vo.DocumentsPdfVo;
+import com.ruoyi.common.core.service.BaseService;
+
+import java.util.Map;
 
 
 /**
@@ -13,7 +15,7 @@ import com.fjhx.sale.entity.documents.dto.DocumentsPdfDto;
  * 单证PDF数据存放表 服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-26
  */
 public interface DocumentsPdfService extends BaseService<DocumentsPdf> {
@@ -29,6 +31,11 @@ public interface DocumentsPdfService extends BaseService<DocumentsPdf> {
     DocumentsPdfVo detail(Long id);
 
     /**
+     * 报关委托书详情
+     */
+    Map<String, Object> powerDetail(Long id);
+
+    /**
      * 单证PDF数据存放表新增
      */
     void add(DocumentsPdfDto documentsPdfDto);

+ 12 - 4
hx-sale/src/main/java/com/fjhx/sale/service/documents/DocumentsProductService.java

@@ -1,11 +1,10 @@
 package com.fjhx.sale.service.documents;
 
-import com.fjhx.sale.entity.documents.po.DocumentsProduct;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.sale.entity.documents.vo.DocumentsProductVo;
 import com.fjhx.sale.entity.documents.dto.DocumentsProductSelectDto;
-import org.apache.ibatis.annotations.Param;
+import com.fjhx.sale.entity.documents.po.DocumentsProduct;
+import com.fjhx.sale.entity.documents.vo.DocumentsProductVo;
+import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
 
@@ -27,7 +26,16 @@ public interface DocumentsProductService extends BaseService<DocumentsProduct> {
 
     /**
      * documentId 单证ID
+     *
      * @return
      */
     List<DocumentsProduct> getDpList(Long documentId);
+
+    /**
+     * documentId 单证ID
+     *
+     * @return
+     */
+    DocumentsProduct getMaxMoneyData(Long documentId);
+
 }

+ 15 - 5
hx-sale/src/main/java/com/fjhx/sale/service/documents/DocumentsService.java

@@ -1,12 +1,12 @@
 package com.fjhx.sale.service.documents;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.documents.dto.DocumentsDto;
+import com.fjhx.sale.entity.documents.dto.DocumentsSelectDto;
 import com.fjhx.sale.entity.documents.po.Documents;
 import com.fjhx.sale.entity.documents.po.DocumentsPdf;
-import com.ruoyi.common.core.service.BaseService;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.documents.vo.DocumentsVo;
-import com.fjhx.sale.entity.documents.dto.DocumentsSelectDto;
-import com.fjhx.sale.entity.documents.dto.DocumentsDto;
+import com.ruoyi.common.core.service.BaseService;
 
 import java.util.Map;
 
@@ -48,13 +48,23 @@ public interface DocumentsService extends BaseService<Documents> {
 
     /**
      * 生成PDF
+     *
      * @return
      */
-    Map<String,Object> generateInvoiceAPackPdf(Long id);
+    Map<String, Object> generateInvoiceAPackPdf(Long id);
 
     /**
      * 生成PDF-报关单
+     *
      * @return
      */
     DocumentsPdf generateClearanceePdf(Long id);
+
+    /**
+     * 获取合同数据
+     *
+     * @param id
+     * @return
+     */
+    Map<String, Object> getContractDataById(Long id);
 }

+ 76 - 12
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsPdfServiceImpl.java

@@ -1,16 +1,29 @@
 package com.fjhx.sale.service.documents.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+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.sale.entity.documents.dto.DocumentsPdfDto;
+import com.fjhx.sale.entity.documents.dto.DocumentsPdfSelectDto;
 import com.fjhx.sale.entity.documents.po.DocumentsPdf;
+import com.fjhx.sale.entity.documents.po.DocumentsProduct;
+import com.fjhx.sale.entity.documents.vo.DocumentsPdfVo;
 import com.fjhx.sale.mapper.documents.DocumentsPdfMapper;
 import com.fjhx.sale.service.documents.DocumentsPdfService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.sale.entity.documents.vo.DocumentsPdfVo;
-import com.fjhx.sale.entity.documents.dto.DocumentsPdfSelectDto;
+import com.fjhx.sale.service.documents.DocumentsProductService;
+import com.fjhx.sale.service.documents.DocumentsService;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.sale.entity.documents.dto.DocumentsPdfDto;
-import cn.hutool.core.bean.BeanUtil;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
 
 
 /**
@@ -18,12 +31,18 @@ import cn.hutool.core.bean.BeanUtil;
  * 单证PDF数据存放表 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-26
  */
 @Service
 public class DocumentsPdfServiceImpl extends ServiceImpl<DocumentsPdfMapper, DocumentsPdf> implements DocumentsPdfService {
 
+    @Autowired
+    private DocumentsProductService documentsProductService;
+
+    @Autowired
+    private DocumentsService documentsService;
+
     @Override
     public Page<DocumentsPdfVo> getPage(DocumentsPdfSelectDto dto) {
         IWrapper<DocumentsPdf> wrapper = getWrapper();
@@ -32,16 +51,61 @@ public class DocumentsPdfServiceImpl extends ServiceImpl<DocumentsPdfMapper, Doc
         return page;
     }
 
+    /**
+     * 查询详情
+     *
+     * @param id 单证ID
+     * @return
+     */
     @Override
     public DocumentsPdfVo detail(Long id) {
-        DocumentsPdf DocumentsPdf = this.getById(id);
-        DocumentsPdfVo result = BeanUtil.toBean(DocumentsPdf, DocumentsPdfVo.class);
+        DocumentsPdf documentsPdf = this.getOne(Wrappers.<DocumentsPdf>query().lambda().eq(DocumentsPdf::getDocumentId, id).eq(DocumentsPdf::getDataType, 1));
+        DocumentsPdfVo result = BeanUtil.toBean(documentsPdf, DocumentsPdfVo.class);
         return result;
     }
 
+    /**
+     * 报关委托书详情
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public Map<String, Object> powerDetail(Long id) {
+        DocumentsPdf documentsPdf = this.getOne(Wrappers.<DocumentsPdf>query().lambda().eq(DocumentsPdf::getDocumentId, id).eq(DocumentsPdf::getDataType, 1));
+        DocumentsPdfVo result = BeanUtil.toBean(documentsPdf, DocumentsPdfVo.class);
+        if (ObjectUtil.isEmpty(result)) {
+            Map<String, Object> map = documentsService.getContractDataById(id);
+            //查询单证数据
+            DocumentsProduct documentsProduct = documentsProductService.getMaxMoneyData(id);
+            if (MapUtils.isEmpty(map) || ObjectUtil.isEmpty(documentsProduct)) {
+                throw new ServiceException("数据异常,请联系管理员");
+            }
+            //查询报关单里的运输备注
+            DocumentsPdf data = this.getOne(Wrappers.<DocumentsPdf>query().lambda().eq(DocumentsPdf::getDocumentId, id).eq(DocumentsPdf::getDataType, 0));
+            String dataJson = ObjectUtil.isEmpty(data) ? "{}" : data.getContent();
+            JSONObject jsonObject = JSONObject.parseObject(dataJson);
+            map.put("customerCode", documentsProduct.getCustomsCode());
+            map.put("productName", StringUtils.equals(documentsProduct.getSubDescribe(), "无") ? documentsProduct.getDescribes() : documentsProduct.getSubDescribe());
+            map.put("productQuantity", documentsProduct.getQuantity());
+            map.put("transport_method", jsonObject.getOrDefault("withinChinaSource", null));
+            return map;
+        } else {
+            Map<String, Object> map = JSON.parseObject(result.getContent());
+            return map;
+        }
+    }
+
+
     @Override
-    public void add(DocumentsPdfDto documentsPdfDto) {
-        this.saveOrUpdate(documentsPdfDto);
+    public synchronized void add(DocumentsPdfDto documentsPdfDto) {
+        DocumentsPdf documentsPdf = this.getOne(q -> q.eq(DocumentsPdf::getDocumentId, documentsPdfDto.getDocumentId()));
+        if (ObjectUtil.isEmpty(documentsPdf)) {
+            this.save(documentsPdfDto);
+        } else {
+            documentsPdfDto.setId(documentsPdf.getId());
+            this.updateById(documentsPdfDto);
+        }
     }
 
     @Override

+ 17 - 5
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsProductServiceImpl.java

@@ -1,14 +1,14 @@
 package com.fjhx.sale.service.documents.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.sale.entity.documents.dto.DocumentsProductSelectDto;
 import com.fjhx.sale.entity.documents.po.DocumentsProduct;
+import com.fjhx.sale.entity.documents.vo.DocumentsProductVo;
 import com.fjhx.sale.mapper.documents.DocumentsProductMapper;
 import com.fjhx.sale.service.documents.DocumentsProductService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.sale.entity.documents.vo.DocumentsProductVo;
-import com.fjhx.sale.entity.documents.dto.DocumentsProductSelectDto;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.stereotype.Service;
 
 import java.util.List;
 
@@ -34,6 +34,7 @@ public class DocumentsProductServiceImpl extends ServiceImpl<DocumentsProductMap
 
     /**
      * 获取单证产品
+     *
      * @param documentId
      * @return
      */
@@ -42,4 +43,15 @@ public class DocumentsProductServiceImpl extends ServiceImpl<DocumentsProductMap
         return baseMapper.getDpList(documentId);
     }
 
+    /**
+     * 获取最大金额的数据
+     *
+     * @param documentId
+     * @return
+     */
+    @Override
+    public DocumentsProduct getMaxMoneyData(Long documentId) {
+        return baseMapper.getMaxMoneyData(documentId);
+    }
+
 }

+ 62 - 25
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java

@@ -24,6 +24,7 @@ import com.fjhx.sale.entity.documents.po.DocumentsPdf;
 import com.fjhx.sale.entity.documents.po.DocumentsProduct;
 import com.fjhx.sale.entity.documents.po.DocumentsTransport;
 import com.fjhx.sale.entity.documents.vo.DocumentsVo;
+import com.fjhx.sale.entity.pack.po.Pack;
 import com.fjhx.sale.entity.pack.po.PackDetail;
 import com.fjhx.sale.entity.pack.po.PackDetailGoods;
 import com.fjhx.sale.entity.pack.po.PackShipment;
@@ -34,14 +35,11 @@ import com.fjhx.sale.service.documents.DocumentsPdfService;
 import com.fjhx.sale.service.documents.DocumentsProductService;
 import com.fjhx.sale.service.documents.DocumentsService;
 import com.fjhx.sale.service.documents.DocumentsTransportService;
-import com.fjhx.sale.service.pack.PackDetailGoodsService;
-import com.fjhx.sale.service.pack.PackDetailService;
-import com.fjhx.sale.service.pack.PackShipmentService;
+import com.fjhx.sale.service.pack.*;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.ruoyi.system.service.ISysUserService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -49,6 +47,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 
@@ -75,6 +74,9 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
     private PackDetailGoodsService packDetailGoodsService;
 
     @Autowired
+    private PackDetailProductService packDetailProductService;
+
+    @Autowired
     private DocumentsTransportService documentsTransportService;
 
     @Autowired
@@ -99,7 +101,7 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
     private FlowExampleService flowExampleService;
 
     @Autowired
-    private ISysUserService iSysUserService;
+    private PackService packService;
 
     private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy", Locale.ENGLISH);
 
@@ -129,8 +131,8 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
         return pageCommon(dto, wrapper);
     }
 
-    public Page<DocumentsVo> pageCommon(DocumentsSelectDto dto,IWrapper<Documents> wrapper){
-        wrapper.orderByDesc("d",Documents::getCreateTime);
+    public Page<DocumentsVo> pageCommon(DocumentsSelectDto dto, IWrapper<Documents> wrapper) {
+        wrapper.orderByDesc("d", Documents::getCreateTime);
         if (StringUtils.isNotEmpty(dto.getKeyword())) {
             //归属公司
             List<Long> corporationIds = corporationService.listObject(Corporation::getId, q -> q.like(Corporation::getName, dto.getKeyword()));
@@ -238,7 +240,8 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
         ContractVo contractVo = BeanUtil.toBean(contract, ContractVo.class);
         setContractArea(contractVo);
         //查询收费项目
-        List<ContractProject> contractProjectList = contractProjectService.list(Wrappers.<ContractProject>query().lambda().eq(ContractProject::getContractId, contractVo.getId()));
+//        List<ContractProject> contractProjectList = contractProjectService.list(Wrappers.<ContractProject>query().lambda().eq(ContractProject::getContractId, contractVo.getId()));
+        List<ContractProject> contractProjectList = new ArrayList<>();
         //查询买方
         Customer customer = customerService.getById(contractVo.getBuyCorporationId());
         //查询卖方
@@ -252,7 +255,7 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
             item.setProductName(product.getName());
             item.setProductSpec(product.getSpec());
         });
-        //查询包装出货主合同
+        Map<Long, List<DocumentsProduct>> docuProductMap = documentsProducts.stream().collect(Collectors.groupingBy(DocumentsProduct::getPackDetailId));
         PackShipment packShipment = packShipmentService.getById(documents.getPackShipmentId());
         //装箱单
         List<PackDetail> packDetailList = new ArrayList<>();
@@ -267,17 +270,38 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
         //装箱商品明细
         List<PackDetailGoods> packDetailGoodsList = new ArrayList<>();
         if (ObjectUtil.isNotEmpty(packShipment)) {//查询装箱单
-            packDetailList = packDetailService.list(Wrappers.<PackDetail>query().lambda().in(PackDetail::getId, Arrays.asList(packShipment.getPackDetailIds())));
+            packDetailList = packDetailService.list(Wrappers.<PackDetail>query().lambda().in(PackDetail::getId, Arrays.asList(packShipment.getPackDetailIds().split(","))));
             List<Long> packDetailIds = packDetailList.stream().map(PackDetail::getId).collect(Collectors.toList());
             packDetailGoodsList = packDetailGoodsService.list(Wrappers.<PackDetailGoods>query().lambda().in(PackDetailGoods::getPackDetailId, packDetailIds));
             Map<Long, List<PackDetailGoods>> packGoodMap = packDetailGoodsList.stream().collect(Collectors.groupingBy(PackDetailGoods::getPackDetailId));
             for (PackDetail p : packDetailList) {
                 p.setPackDetailGoodsList(packGoodMap.getOrDefault(p.getId(), null));
+                p.setDocumentsProductList(docuProductMap.getOrDefault(p.getId(), null));
+
+                sumPackQuantity = sumPackQuantity.add(p.getPackQuantity());
+                sumRoughWeight = sumRoughWeight.add(p.getRoughWeight().multiply(p.getPackQuantity()));
+                sumNetWeight = sumNetWeight.add(p.getNetWeight().multiply(p.getPackQuantity()));
+                sumBomVolume = sumBomVolume.add(p.getBomVolume().multiply(p.getPackQuantity()));
             }
-            sumPackQuantity = packDetailList.stream().map(PackDetail::getPackQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
-            sumRoughWeight = packDetailList.stream().map(PackDetail::getRoughWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
-            sumNetWeight = packDetailList.stream().map(PackDetail::getNetWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
-            sumBomVolume = packDetailList.stream().map(PackDetail::getBomVolume).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            //查询收费项目
+            String packDetailId = Arrays.asList(packShipment.getPackDetailIds().split(",")).get(0);
+            PackDetail packDetail = packDetailService.getById(packDetailId);
+            Pack pack = packService.getById(packDetail.getPackId());
+            List<String> contractIds = Arrays.asList(pack.getContractIds().split(","));//获取装箱的所有合同id
+            List<ContractProject> contractProjectLists = contractProjectService.list(Wrappers.<ContractProject>query().lambda().in(ContractProject::getContractId, contractIds));
+            //合并同名收费项目
+            Map<String, ContractProject> contractProjectMap = new ConcurrentHashMap<>();
+            for (ContractProject project : contractProjectLists) {
+                ContractProject contractProject = contractProjectMap.getOrDefault(project.getPayName(), new ContractProject());
+                if (ObjectUtil.isEmpty(contractProject.getAmount())) {
+                    contractProject.setAmount(BigDecimal.ZERO);
+                }
+                contractProject.setAmount(contractProject.getAmount().add(project.getAmount()));
+                contractProject.setPayName(project.getPayName());
+                contractProjectMap.put(project.getPayName(), contractProject);
+            }
+            contractProjectList = contractProjectMap.values().stream().collect(Collectors.toList());
         }
         map.put("contract", contractVo);//合同信息
         map.put("date", sdf.format(contractVo.getCreateTime()));//日期
@@ -376,7 +400,7 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
             //贸易国(合同买方所在国)
             data.put("tradingCountry", buyCountryName);
             //运抵国
-            data.put("arrivalCountry", documents.getCountryName());
+            data.put("arrivalCountry", buyCountryName);//原来是documents.getCountryName()
             //指运港(不用填写)
             data.put("portOfDestination", "");
             //离境口岸(不用填写)
@@ -416,6 +440,8 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
                     JSONObject object = new JSONObject();
                     // 项号
                     object.put("num", num);
+                    //产品id
+                    object.put("productId", product.getProductId());
                     // 商品编号(13位)原10位海关编码+3位检验检疫附加编码
                     object.put("customsCode", product.getCustomsCode());
                     // 商品名称
@@ -433,17 +459,17 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
                     //各项净重
                     object.put("netWeight", "");//暂无
                     //成交数量
-                    object.put("quantity", product.getQuantity());
+                    object.put("quantity", product.getSumQuantity());
                     //成交单位
                     object.put("unit", product.getProductUnit());
                     //原产国(地区)
                     object.put("countryChinese", sellCountryName);
                     //总价与币制
-                    object.put("sumPrice", "");
+                    object.put("sumPrice", ObjectUtil.defaultIfNull(product.getPrice(), BigDecimal.ZERO).multiply(ObjectUtil.defaultIfNull(product.getSumQuantity(), BigDecimal.ZERO)));
                     //成交单价
-                    object.put("declaredPrice", "");//暂无
+                    object.put("declaredPrice", ObjectUtil.defaultIfNull(product.getPrice(), BigDecimal.ZERO));//暂无
                     //EXW单价
-                    object.put("exwPrice", "");//暂无
+                    object.put("exwPrice", ObjectUtil.defaultIfNull(product.getPrice(), BigDecimal.ZERO));//暂无
                     productData.add(object);
                     num++;
                 }
@@ -459,6 +485,17 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
     }
 
     /**
+     * 获取合同数据
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public Map<String, Object> getContractDataById(Long id) {
+        return baseMapper.getContractDataById(id);
+    }
+
+    /**
      * 赋值买卖公司国家省市区名称
      */
     private void setContractArea(ContractVo contractVo) {
@@ -472,12 +509,12 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
                 contractVo.getSellCityId()
         );
         Map<Long, String> areaMap = CustomizeAreaUtil.getAreaMapByIds(areaIdList);
-        contractVo.setBuyCountryName(areaMap.getOrDefault(contractVo.getBuyCountryId(),contractVo.getBuyCountryName()));
-        contractVo.setBuyProvinceName(areaMap.getOrDefault(contractVo.getBuyProvinceId(),contractVo.getBuyProvinceName()));
-        contractVo.setBuyCityName(areaMap.getOrDefault(contractVo.getBuyCityId(),contractVo.getBuyCityName()));
-        contractVo.setSellCountryName(areaMap.getOrDefault(contractVo.getSellCountryId(),contractVo.getSellCountryName()));
-        contractVo.setSellProvinceName(areaMap.getOrDefault(contractVo.getSellProvinceId(),contractVo.getSellProvinceName()));
-        contractVo.setSellCityName(areaMap.getOrDefault(contractVo.getSellCityId(),contractVo.getSellCityName()));
+        contractVo.setBuyCountryName(areaMap.getOrDefault(contractVo.getBuyCountryId(), contractVo.getBuyCountryName()));
+        contractVo.setBuyProvinceName(areaMap.getOrDefault(contractVo.getBuyProvinceId(), contractVo.getBuyProvinceName()));
+        contractVo.setBuyCityName(areaMap.getOrDefault(contractVo.getBuyCityId(), contractVo.getBuyCityName()));
+        contractVo.setSellCountryName(areaMap.getOrDefault(contractVo.getSellCountryId(), contractVo.getSellCountryName()));
+        contractVo.setSellProvinceName(areaMap.getOrDefault(contractVo.getSellProvinceId(), contractVo.getSellProvinceName()));
+        contractVo.setSellCityName(areaMap.getOrDefault(contractVo.getSellCityId(), contractVo.getSellCityName()));
     }
 
     /**

+ 0 - 8
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImplImpl.java

@@ -1,8 +0,0 @@
-package com.fjhx.sale.service.documents.impl;
-
-/**
- * @Author:caozj
- * @DATE:2023/4/26 16:57
- */
-public class DocumentsServiceImplImpl extends DocumentsServiceImpl {
-}

+ 21 - 16
hx-sale/src/main/resources/mapper/documents/DocumentsMapper.xml

@@ -2,25 +2,30 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.sale.mapper.documents.DocumentsMapper">
     <select id="getPage" resultType="com.fjhx.sale.entity.documents.vo.DocumentsVo">
-        select
-            d.id,
-            d.contract_id,
-            d.port_of_destination,
-            d.remark,
-            d.country_id,
-            d.update_time,
-            d.update_user,
-            d.create_user,
-            d.create_time,
-            c.sell_corporation_id sellCorporationId,
-            c.buy_corporation_id buyCorporationId,
-            c.code,
-            dp.accept_carriage acceptCarriage,
-            dp.code  acceptCode
+        select d.id,
+               d.contract_id,
+               d.port_of_destination,
+               d.remark,
+               d.country_id,
+               d.update_time,
+               d.update_user,
+               d.create_user,
+               d.create_time,
+               c.sell_corporation_id sellCorporationId,
+               c.buy_corporation_id  buyCorporationId,
+               c.code,
+               dp.accept_carriage    acceptCarriage,
+               dp.code               acceptCode
         from documents d
-                 left join contract c on d.contract_id  = c.id
+                 left join contract c on d.contract_id = c.id
                  left join documents_transport dp on d.id = dp.documents_id
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getContractDataById" resultType="java.util.Map">
+        SELECT IFNULL(t2.trade_methods, '') AS trade_methods
+        FROM documents t1
+                 LEFT JOIN contract t2 ON t1.contract_id = t2.id
+        WHERE t1.id = #{documentId}
+    </select>
 </mapper>

+ 36 - 6
hx-sale/src/main/resources/mapper/documents/DocumentsProductMapper.xml

@@ -22,12 +22,42 @@
     </select>
 
     <select id="getDpList" resultType="com.fjhx.sale.entity.documents.po.DocumentsProduct">
-        SELECT
-            t1.*,
-            t2.product_id AS productId
-        FROM
-            documents_product t1
-        LEFT JOIN pack_detail_product t2 ON t1.business_id = t2.id
+        SELECT IFNULL(t2.quantity, t3.quantity)             AS quantity,
+               t1.*,
+               t2.product_id                                   productId,
+               IFNULL(t2.pack_detail_id, t3.pack_detail_id) AS packDetailId,
+               t3.unit                                      AS productUnit,
+               pd.pack_quantity,
+               t1.quantity                                  as sumQuantity
+        FROM documents_product t1
+                 LEFT JOIN pack_detail_product t2 ON t1.business_id = t2.id
+                 LEFT JOIN pack_detail_goods t3 ON t1.business_id = t3.id
+                 left join pack_detail pd on pd.id = IFNULL(t2.pack_detail_id, t3.pack_detail_id)
         WHERE t1.documents_id = #{documentId}
     </select>
+    <select id="getMaxMoneyData" resultType="com.fjhx.sale.entity.documents.po.DocumentsProduct">
+        SELECT *
+        FROM (SELECT dp.id,
+                     dp.tenant_id,
+                     dp.documents_id,
+                     dp.business_id,
+                     dp.describes,
+                     dp.sub_describe,
+                     dp.customs_code,
+                     dp.price,
+                     sum(dp.quantity)            AS quantity,
+                     dp.contract_code,
+                     dp.product_name,
+                     dp.type,
+                     dp.del_flag,
+                     dp.update_time,
+                     dp.update_user,
+                     dp.create_user,
+                     dp.create_time,
+                     sum(dp.price * dp.quantity) AS sumAmount
+              FROM documents_product dp
+              WHERE dp.documents_id = #{documentId}
+              GROUP BY dp.describes) t1
+        ORDER BY t1.sumAmount DESC LIMIT 1
+    </select>
 </mapper>