ソースを参照

销售合同添加合同名称明细生产进度

yzc 1 年間 前
コミット
269700de0a

+ 12 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/sales/vo/SalesContractDetailsVo.java

@@ -4,6 +4,8 @@ import com.fjhx.jxst.entity.sales.po.SalesContractDetails;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 销售合同明细列表查询返回值实体
  *
@@ -29,4 +31,14 @@ public class SalesContractDetailsVo extends SalesContractDetails {
      */
     private String productUnit;
 
+    /**
+     * 生产数量
+     */
+    private BigDecimal productionQuantity;
+
+    /**
+     * 完工数量
+     */
+    private BigDecimal completedQuantity;
+
 }

+ 11 - 0
hx-jxst/src/main/java/com/fjhx/jxst/mapper/sales/SalesContractDetailsMapper.java

@@ -1,7 +1,13 @@
 package com.fjhx.jxst.mapper.sales;
 
+import com.fjhx.jxst.entity.sales.po.SalesContract;
 import com.fjhx.jxst.entity.sales.po.SalesContractDetails;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.jxst.entity.sales.vo.SalesContractDetailsVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
@@ -14,4 +20,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface SalesContractDetailsMapper extends BaseMapper<SalesContractDetails> {
 
+    /**
+     * 获取合同明细的生产进度信息
+     */
+    List<SalesContractDetailsVo> getProductionSchedule(@Param("ew") IWrapper<SalesContractDetails> wrapper);
+
 }

+ 8 - 0
hx-jxst/src/main/java/com/fjhx/jxst/service/sales/SalesContractDetailsService.java

@@ -1,7 +1,11 @@
 package com.fjhx.jxst.service.sales;
 
 import com.fjhx.jxst.entity.sales.po.SalesContractDetails;
+import com.fjhx.jxst.entity.sales.vo.SalesContractDetailsVo;
 import com.ruoyi.common.core.service.BaseService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+
+import java.util.List;
 
 
 /**
@@ -14,4 +18,8 @@ import com.ruoyi.common.core.service.BaseService;
  */
 public interface SalesContractDetailsService extends BaseService<SalesContractDetails> {
 
+    /**
+     * 获取合同明细的生产进度信息
+     */
+    List<SalesContractDetailsVo> getProductionSchedule(IWrapper<SalesContractDetails> wrapper);
 }

+ 12 - 0
hx-jxst/src/main/java/com/fjhx/jxst/service/sales/impl/SalesContractDetailsServiceImpl.java

@@ -1,11 +1,15 @@
 package com.fjhx.jxst.service.sales.impl;
 
 import com.fjhx.jxst.entity.sales.po.SalesContractDetails;
+import com.fjhx.jxst.entity.sales.vo.SalesContractDetailsVo;
 import com.fjhx.jxst.mapper.sales.SalesContractDetailsMapper;
 import com.fjhx.jxst.service.sales.SalesContractDetailsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -18,4 +22,12 @@ import org.springframework.stereotype.Service;
 @Service
 public class SalesContractDetailsServiceImpl extends ServiceImpl<SalesContractDetailsMapper, SalesContractDetails> implements SalesContractDetailsService {
 
+    /**
+     * 获取合同明细的生产进度信息
+     */
+    @Override
+    public List<SalesContractDetailsVo> getProductionSchedule(IWrapper<SalesContractDetails> wrapper){
+        return baseMapper.getProductionSchedule(wrapper);
+    }
+
 }

+ 19 - 0
hx-jxst/src/main/java/com/fjhx/jxst/service/sales/impl/SalesContractServiceImpl.java

@@ -92,6 +92,11 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
         wrapper.orderByDesc("sc", SalesContract::getId);
         Page<SalesContractVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<SalesContractVo> records = page.getRecords();
+        if(ObjectUtil.isEmpty(records)){
+            return page;
+        }
+        List<Long> salesContractIds = records.stream().map(SalesContract::getId).collect(Collectors.toList());
+
         //赋值客户名称
         customerService.attributeAssign(records, SalesContractVo::getCustomerId, (item, customer) -> {
             item.setCustomerName(customer.getName());
@@ -100,6 +105,20 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
         //计算未到账金额(未结清金额)
         records.forEach(item -> item.setNotClaimAmount(item.getContractAmount().subtract(item.getClaimAmount())));
 
+        //赋值销售合同明细生产进度
+        List<SalesContractDetailsVo> salesContractDetailsVos = salesContractDetailsService.getProductionSchedule(
+                IWrapper.<SalesContractDetails>getWrapper()
+                .in("scd", SalesContractDetails::getSalesContractId, salesContractIds)
+        );
+        //赋值销售合同明细产品信息
+        productInfoService.attributeAssign(salesContractDetailsVos, SalesContractDetailsVo::getProductId, (item, productInfo) -> {
+            item.setProductName(productInfo.getName());
+            item.setProductSpec(productInfo.getSpec());
+        });
+        Map<Long, List<SalesContractDetailsVo>> scdMap = salesContractDetailsVos.stream()
+                .collect(Collectors.groupingBy(SalesContractDetails::getSalesContractId));
+        records.forEach(item->item.setContractDetailsList(scdMap.get(item.getId())));
+
         return page;
     }
 

+ 24 - 0
hx-jxst/src/main/resources/mapper/sales/SalesContractDetailsMapper.xml

@@ -1,4 +1,28 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.jxst.mapper.sales.SalesContractDetailsMapper">
+    <select id="getProductionSchedule" resultType="com.fjhx.jxst.entity.sales.vo.SalesContractDetailsVo">
+        SELECT
+            scd.id,
+            scd.sales_contract_id,
+            scd.product_id,
+            IFNULL( wo.production_quantity, 0 ) AS productionQuantity,
+            (
+                SELECT
+                    count( ptd.id )
+                FROM
+                    bytesailing_mes.production_plan pp
+                        LEFT JOIN bytesailing_mes.production_task pt ON pt.production_plan_id = pp.id
+                        AND pt.del_flag = 0
+                        LEFT JOIN bytesailing_mes.production_task_detail ptd ON ptd.production_task_id = pt.id
+                        AND ptd.del_flag = 0
+                WHERE
+                    pp.del_flag = 0
+                  AND pp.work_order_id = wo.id
+            ) AS completedQuantity
+        FROM
+            sales_contract_details scd
+                LEFT JOIN bytesailing_mes.work_order wo ON wo.contract_details_id = scd.id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>