yzc 1 year ago
parent
commit
bd2b751820

+ 4 - 0
hx-form/pom.xml

@@ -56,6 +56,10 @@
             <groupId>com.fjhx</groupId>
             <artifactId>hx-sale</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-mes</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 105 - 50
hx-form/src/main/java/com/fjhx/form/service/impl/StatisticsServiceImpl.java

@@ -1,26 +1,28 @@
 package com.fjhx.form.service.impl;
 
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.account.entity.account.po.AccountPayment;
 import com.fjhx.account.entity.account.po.AccountRunningWater;
 import com.fjhx.account.service.account.AccountPaymentService;
 import com.fjhx.account.service.account.AccountRunningWaterService;
-import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.flow.entity.flow.po.FlowExample;
 import com.fjhx.flow.service.flow.FlowExampleService;
 import com.fjhx.form.mapper.StatisticsMapper;
 import com.fjhx.form.service.StatisticsService;
-import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
+import com.fjhx.mes.entity.production.po.ProductionOrder;
+import com.fjhx.mes.service.production.ProduceOrderService;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.sale.entity.contract.po.Contract;
-import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
-import com.fjhx.sale.entity.sample.po.Sample;
+import com.fjhx.sale.entity.sale.po.SaleQuotation;
 import com.fjhx.sale.mapper.contract.ContractProductMapper;
 import com.fjhx.sale.mapper.sample.SampleMapper;
+import com.fjhx.sale.service.sale.SaleQuotationService;
+import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsSelectDto;
+import com.fjhx.wms.service.stock.StockService;
+import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -49,6 +51,14 @@ public class StatisticsServiceImpl implements StatisticsService {
     private CustomerService customerService;
     @Autowired
     private StatisticsMapper statisticsMapper;
+    @Autowired
+    private SaleQuotationService saleQuotationService;
+    @Autowired
+    private ProduceOrderService produceOrderService;
+    @Autowired
+    private StockService stockService;
+    @Autowired
+    private StockWaitDetailsService stockWaitDetailsService;
 
     /**
      * 工作统计
@@ -57,59 +67,104 @@ public class StatisticsServiceImpl implements StatisticsService {
     public Map<String, Long> workStatistics() {
         Long userId = SecurityUtils.getUserId();
 
-        //统计未读邮件数
-        Long unreadMailCount = 0L;
-//        List<Long> mailboxIds = personalMailboxService.listObject(PersonalMailbox::getId, q -> q.eq(PersonalMailbox::getUserId, userId));
-//        if (ObjectUtil.isNotEmpty(mailboxIds)) {
-//            unreadMailCount += personalMessageService.count(q -> q
-//                    .in(PersonalMessage::getMailboxId, mailboxIds)
-//            );
-//        }
-//        List<Long> eMailboxIds = enterpriseMailboxService.listObject(EnterpriseMailbox::getId, q -> q.eq(EnterpriseMailbox::getUserId, userId));
-//        if (ObjectUtil.isNotEmpty(eMailboxIds)) {
-//            unreadMailCount += enterpriseMessageService.count(q -> q
-//                    .in(EnterpriseMessage::getMailboxId, eMailboxIds)
-//            );
-//        }
+        //权限过滤:子公司看自己的,总公司看全部
+        boolean flag;//是否是总公司
+        Long companyId = SecurityUtils.getCompanyId();
+        if (Objects.equals(companyId, 100L)) {
+            //总公司直接忽略归属公司条件
+            companyId = null;
+            flag = true;
+        } else {
+            flag = false;
+        }
+        Long finalCompanyId = companyId;//isEstimate
+
         //统计待审批数据
-        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
-        long waitFlowCount = flowExampleService.count(q -> q.eq(FlowExample::getStatus, 1).eq(FlowExample::getHandleUserId, userId));
-        DynamicDataSourceContextHolder.poll();
-        //到账认领计数
-        long claimCount = accountRunningWaterService.count(q -> q.eq(AccountRunningWater::getReceived, 10).ne(AccountRunningWater::getIsClaim, 1));
-        //待采购数量
-        long waitPurchaseCount = subscribeDetailService.count(q -> q.in(SubscribeDetail::getStatus, Arrays.asList(15, 30)));
-        //样品交接单
-        Page<Object> page = new Page<>();
-        page.setCurrent(1);
-        page.setSize(1);
-        IWrapper<Sample> wrapper = IWrapper.getWrapper();
-        wrapper.eq("t2.`status`", 30);
-        wrapper.ge("t1.expend_quantity", 0);
-        long sampleHandoverCount = sampleMapper.sampleHandoverList(page, wrapper).getTotal();
-        //合同样品单
-        IWrapper<ContractProduct> wrapper1 = IWrapper.getWrapper();
-        wrapper.eq("t2.`status`", 30);
-        wrapper.ge("t1.expend_quantity", 0);
-        long contractHandoverCount = contractProductMapper.contractHandoverPage(page, wrapper1).getTotal();
-        //待打款
-        long waitAccountPayCount = accountPaymentService.count(q -> q.ne(AccountPayment::getStatus, 10));
+        long waitFlowCount = flowExampleService.count(q -> q.in(FlowExample::getStatus, 1, 0).eq(FlowExample::getHandleUserId, userId));
+        //待报价 总公司对内报价单 子公司 报价评估
+        long waitQuotationCount = saleQuotationService.count(q -> q
+                .ne(!flag, SaleQuotation::getStatus, FlowStatusEnum1.DRAFT.getKey())//子公司
+                .ne(SaleQuotation::getStatus, FlowStatusEnum1.UPDATE.getKey())//总公司
+                .eq(!flag, SaleQuotation::getCompanyId, finalCompanyId)
+        );
+        //待投产
+        long waitProduceCount = produceOrderService.count(q -> q
+                .isNull(ProductionOrder::getProduceTime)
+                .eq(!flag, ProductionOrder::getCompanyId, finalCompanyId)
+        );
+        //待入库
+        StockWaitDetailsSelectDto stockWaitDetailsSelectDto = new StockWaitDetailsSelectDto();
+        stockWaitDetailsSelectDto.setType(1);
+        long waitInStockCount = stockWaitDetailsService.getPage(stockWaitDetailsSelectDto).getTotal();
+        //待出库
+        StockWaitDetailsSelectDto stockWaitDetailsSelectDto1 = new StockWaitDetailsSelectDto();
+        stockWaitDetailsSelectDto1.setType(2);
+        long waitOutStockCount = stockWaitDetailsService.getPage(stockWaitDetailsSelectDto1).getTotal();
+        //到账认领待认领计数-总公司
+        long waitClaimCount = accountRunningWaterService.count(q -> q
+                .eq(AccountRunningWater::getReceived, 10)
+                .eq(AccountRunningWater::getIsClaim, 0)
+                .eq(!flag, AccountRunningWater::getCompanyId, finalCompanyId)
+        );
+        //库存预警-子公司看
+        long stockWarnCount = stockService.stockWarningPage(new StockSelectDto()).getTotal();
 
         //总数
-        long sumCount = unreadMailCount + waitFlowCount + claimCount + waitPurchaseCount + sampleHandoverCount + contractHandoverCount + waitAccountPayCount;
+        long sumCount = waitFlowCount + waitQuotationCount + waitProduceCount + waitInStockCount + waitOutStockCount;
+
+        if (flag) {
+            sumCount += waitClaimCount;//总公司待认领
+        } else {
+            sumCount += stockWarnCount;//子公司库存预警
+        }
+
 
         //输出结果
         Map<String, Long> map = new HashMap<>();
-        map.put("unreadMailCount", unreadMailCount);
         map.put("waitFlowCount", waitFlowCount);
-        map.put("claimCount", claimCount);
-        map.put("waitPurchaseCount", waitPurchaseCount);
-        map.put("sampleHandoverCount", sampleHandoverCount);
-        map.put("contractHandoverCount", contractHandoverCount);
-        map.put("waitAccountPayCount", waitAccountPayCount);
+        map.put("waitQuotationCount", waitQuotationCount);
+        map.put("waitProduceCount", waitProduceCount);
+        map.put("waitInStockCount", waitInStockCount);
+        map.put("waitOutStockCount", waitOutStockCount);
+        map.put("waitClaimCount", waitClaimCount);
+        map.put("stockWarnCount", stockWarnCount);
         map.put("sumCount", sumCount);
 
 
+//        //到账认领计数
+//        long claimCount = accountRunningWaterService.count(q -> q.eq(AccountRunningWater::getReceived, 10).ne(AccountRunningWater::getIsClaim, 1));
+//        //待采购数量
+//        long waitPurchaseCount = subscribeDetailService.count(q -> q.in(SubscribeDetail::getStatus, Arrays.asList(15, 30)));
+//        //样品交接单
+//        Page<Object> page = new Page<>();
+//        page.setCurrent(1);
+//        page.setSize(1);
+//        IWrapper<Sample> wrapper = IWrapper.getWrapper();
+//        wrapper.eq("t2.`status`", 30);
+//        wrapper.ge("t1.expend_quantity", 0);
+//        long sampleHandoverCount = sampleMapper.sampleHandoverList(page, wrapper).getTotal();
+//        //合同样品单
+//        IWrapper<ContractProduct> wrapper1 = IWrapper.getWrapper();
+//        wrapper.eq("t2.`status`", 30);
+//        wrapper.ge("t1.expend_quantity", 0);
+//        long contractHandoverCount = contractProductMapper.contractHandoverPage(page, wrapper1).getTotal();
+//        //待打款
+//        long waitAccountPayCount = accountPaymentService.count(q -> q.ne(AccountPayment::getStatus, 10));
+
+        //总数
+//        long sumCount = unreadMailCount + waitFlowCount + claimCount + waitPurchaseCount + sampleHandoverCount + contractHandoverCount + waitAccountPayCount;
+
+
+//        map.put("unreadMailCount", unreadMailCount);
+//        map.put("waitFlowCount", waitFlowCount);
+//        map.put("claimCount", claimCount);
+//        map.put("waitPurchaseCount", waitPurchaseCount);
+//        map.put("sampleHandoverCount", sampleHandoverCount);
+//        map.put("contractHandoverCount", contractHandoverCount);
+//        map.put("waitAccountPayCount", waitAccountPayCount);
+//        map.put("sumCount", sumCount);
+
+
         return map;
     }
 

+ 13 - 12
hx-mes/src/main/resources/mapper/production/ProduceOrderMapper.xml

@@ -21,17 +21,18 @@
 			${ew.customSqlSegment}
 	</select>
 	<select id="getSchedulingList" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderVo">
-		SELECT po.id,
-			   po.`code`,
-			   GROUP_CONCAT(pi.`name` SEPARATOR ',') AS productName,
-			   po.create_time,
-			   po.produce_time,
-			   po.delivery_period,
-			   po.company_id
-		FROM production_order po
-				 LEFT JOIN production_order_detail pod ON pod.produce_order_id = po.id
-				 LEFT JOIN product_info pi ON pod.product_id = pi.id
-			${ew.customSqlSegment}
-	</select>
+        SELECT po.id,
+               po.`code`,
+               GROUP_CONCAT(pi.`name` SEPARATOR ',')                          AS productName,
+               po.create_time,
+               po.produce_time,
+               po.delivery_period,
+               po.company_id,
+               (if(IFNULL(po.finish_time, NOW()) > po.delivery_period, 1, 0)) AS isOverdue
+        FROM production_order po
+                 LEFT JOIN production_order_detail pod ON pod.produce_order_id = po.id
+                 LEFT JOIN product_info pi ON pod.product_id = pi.id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>

+ 4 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -129,6 +129,10 @@ public class ContractUpdateFlow extends FlowDelegate {
 
         //调用合同发起通用代码
         Long start = contractFlow.start(contract);
+
+        //将code赋值给流程引擎
+        submitData.put("code", contract.getCode());
+
         return start;
     }
 

+ 4 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/EhsdPurchaseUpdateFlow.java

@@ -102,6 +102,10 @@ public class EhsdPurchaseUpdateFlow extends FlowDelegate {
         //调用采购发起公共代码块
         purchase = ehsdPurchaseFlow.connStart(purchase);
 
+        //回传单号给流程引擎
+        submitData.put("code", purchase.getCode());
+        submitData.put("currency", purchase.getCurrency());
+
         return purchase.getId();
     }
 

+ 2 - 4
hx-wms/src/main/resources/mapper/stock/StockMapper.xml

@@ -47,16 +47,14 @@
                      pi.custom_code             AS productCode,
                      pi.`name`                  AS productName,
                      pi.stock_threshold,
-                     IFNULL(sum(s.quantity), 0) AS quantity,
-                     pi.company_id
+                     IFNULL(sum(s.quantity), 0) AS quantity
               FROM product_info pi
                        LEFT JOIN stock s ON s.product_id = pi.id
-                  AND s.company_id = pi.company_id
               WHERE pi.stock_threshold != 0
+		            AND s.company_id = #{companyId}
               GROUP BY
                   pi.id) t1
         WHERE t1.quantity &lt; t1.stock_threshold
-          AND t1.company_id = #{companyId}
     </select>
 
 </mapper>