Browse Source

代码调整

yzc 10 tháng trước cách đây
mục cha
commit
36e9553872

+ 2 - 1
hx-mes/src/main/java/com/fjhx/mes/mapper/technology/TechnologyMapper.java

@@ -1,8 +1,8 @@
 package com.fjhx.mes.mapper.technology;
 
-import com.fjhx.mes.entity.technology.po.Technology;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.technology.po.Technology;
 import com.fjhx.mes.entity.technology.vo.TechnologyVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -23,4 +23,5 @@ public interface TechnologyMapper extends BaseMapper<Technology> {
      */
     Page<TechnologyVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Technology> wrapper);
 
+    TechnologyVo detail(@Param("ew") IWrapper<Object> wrapper);
 }

+ 40 - 21
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionSchedulingServiceImpl.java

@@ -6,7 +6,6 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.utils.Assert;
-import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingDto;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingSelectDto;
@@ -175,21 +174,8 @@ public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSched
             }
             this.save(dto);
 
-            //获取产品工艺线路
-            ProductionOrderDetail productionOrderDetail = produceOrderDetailService.getById(dto.getTaskId());
-            Assert.notEmpty(productionOrderDetail, "查询不到生产任务信息!");
-            ProductInfo productInfo = productInfoService.getById(productionOrderDetail.getProductId());
-            Assert.notEmpty(productInfo, "查询不到产品信息!");
-            Technology technology = technologyService.getById(productInfo.getTechnologyId());
-            Assert.notEmpty(technology, "查询不到产品工艺信息!");
-            String processRoute = technology.getProcessRoute();
-            Assert.notEmpty(processRoute, "查询不到产品工艺线路为空!");
-            String[] processRouteArr = processRoute.split(",");
-
             //如果是第一道工序 创建生产领料待出库
-            if (Long.parseLong(processRouteArr[0]) == dto.getProcessesId()) {
-                createStockWait(dto);
-            }
+            createProdStockWait(dto);
         }
     }
 
@@ -262,16 +248,32 @@ public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSched
     }
 
     /**
-     * 根据排程创建待出库
+     * 根据排程创建生产待出库
      */
     @DSTransactional
-    private synchronized void createStockWait(ProductionScheduling dto) {
+    private synchronized void createProdStockWait(ProductionScheduling dto) {
         ProductionOrderDetail task = produceOrderDetailService.getById(dto.getTaskId());
         Assert.notEmpty(task, "查询不到任务信息!");
+        //获取产品工艺线路
+        Technology technology = technologyService.detailByProductId(task.getProductId());
+        Assert.notEmpty(technology, "查询不到产品工艺信息!");
+        String processRoute = technology.getProcessRoute();
+        Assert.notEmpty(processRoute, "查询不到产品工艺线路为空!");
+        String[] processRouteArr = processRoute.split(",");
+        //如果是第一道工序 创建生产领料待出库
+        if (Long.parseLong(processRouteArr[0]) != dto.getProcessesId()) {
+            return;
+        }
 
         //生成待出库
-        StockWait stockWait = new StockWait();
-        stockWait.setStatus(0);//待出库
+        StockWait stockWait = stockWaitService.getOne(q -> q
+                .eq(StockWait::getBusinessId, dto.getId())
+                .eq(StockWait::getBusinessType, JournalType.PROD_OUT.getDetailType())
+        );
+        if (ObjectUtil.isEmpty(stockWait)) {
+            stockWait = new StockWait();
+            stockWait.setStatus(0);//待出库
+        }
         stockWait.setCompanyId(task.getCompanyId());
         stockWait.setBusinessId(dto.getId());
         stockWait.setType(2);//出库
@@ -297,20 +299,37 @@ public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSched
 
             //创建待出库明细
             Long stockWaitId = stockWait.getId();
-            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            StockWaitDetails stockWaitDetails = stockWaitDetailsService.getOne(q -> q
+                    .eq(StockWaitDetails::getStockWaitId, stockWaitId)
+                    .eq(StockWaitDetails::getProductId, contractProductBomVo.getMaterialId())
+            );
+
+            if (ObjectUtil.isEmpty(stockWaitDetails)) {
+                stockWaitDetails = new StockWaitDetails();
+                stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
+            }
+
             stockWaitDetails.setStockWaitId(stockWaitId);
-            stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
             stockWaitDetails.setContractDetailId(task.getContractDetailId());
             stockWaitDetails.setProdOrderId(task.getProduceOrderId());
             stockWaitDetails.setProdTaskId(task.getId());
 
             stockWaitDetails.setProductId(contractProductBomVo.getMaterialId());
+
+            //如果需求量小于入库数量 直接等于入库量
+            if (multiply.compareTo(stockWaitDetails.getReceiptQuantity()) < 0) {
+                multiply = stockWaitDetails.getReceiptQuantity();
+            }
+
             stockWaitDetails.setQuantity(multiply);
             stockWaitDetails.setSchedulingId(dto.getId());
 
             stockWaitDetailsList.add(stockWaitDetails);
         }
         stockWaitDetailsService.saveOrUpdateBatch(stockWaitDetailsList);
+
+        //更新状态
+        stockWaitService.updateStatus(stockWait.getId());
     }
 
 }

+ 2 - 0
hx-mes/src/main/java/com/fjhx/mes/service/technology/TechnologyService.java

@@ -28,6 +28,8 @@ public interface TechnologyService extends BaseService<Technology> {
      */
     TechnologyVo detail(Long id);
 
+    TechnologyVo detailByProductId(Long productId);
+
     /**
      * 工艺新增
      */

+ 8 - 8
hx-mes/src/main/java/com/fjhx/mes/service/technology/impl/TechnologyServiceImpl.java

@@ -127,17 +127,17 @@ public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technol
         Technology technology = this.getById(id);
         TechnologyVo result = BeanUtil.toBean(technology, TechnologyVo.class);
         //获取适用产品信息
-        List<ApplicableProducts> list = applicableProductsService.list(q -> q.eq(ApplicableProducts::getTechnologyId, result.getId()));
-        List<Long> productList = list.stream().map(ApplicableProducts::getProductId).collect(Collectors.toList());
-        if (ObjectUtil.isNotEmpty(productList)) {
-            List<ProductInfo> productInfos = productInfoService.listByIds(productList);
-            result.setApplicableProductsList(productInfos);
-        } else {
-            result.setApplicableProductsList(new ArrayList<>());
-        }
+        List<ProductInfo> productInfos = productInfoService.list(q -> q.eq(ProductInfo::getTechnologyId, technology));
+        result.setApplicableProductsList(ObjectUtil.defaultIfNull(productInfos, new ArrayList<>()));
         return result;
     }
 
+    @Override
+    public TechnologyVo detailByProductId(Long productId) {
+        TechnologyVo detail = baseMapper.detail(IWrapper.getWrapper().eq("pi.id", productId));
+        return detail;
+    }
+
     @DSTransactional
     @Override
     public void add(TechnologyDto technologyDto) {

+ 12 - 0
hx-mes/src/main/resources/mapper/technology/TechnologyMapper.xml

@@ -14,5 +14,17 @@
         from technology t
             ${ew.customSqlSegment}
     </select>
+    <select id="detail" resultType="com.fjhx.mes.entity.technology.vo.TechnologyVo">
+        SELECT
+        te.*
+        FROM
+        technology te
+        JOIN product_info pi ON pi.technology_id = te.id
+        <where>
+            ${ew.sqlSegment}
+        </where>
+        GROUP BY
+        te.id
+    </select>
 
 </mapper>