Ver Fonte

生产任务

yzc há 1 ano atrás
pai
commit
343bdcd951

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/produce/ProduceOrderDetailController.java

@@ -1,5 +1,12 @@
 package com.fjhx.mes.controller.produce;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.produce.dto.ProduceOrderDetailSelectDto;
+import com.fjhx.mes.entity.produce.vo.ProduceOrderDetailVo;
+import com.fjhx.mes.service.produce.ProduceOrderDetailService;
+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;
 
@@ -16,5 +23,15 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/produceOrderDetail")
 public class ProduceOrderDetailController {
 
+    @Autowired
+    private ProduceOrderDetailService produceOrderDetailService;
+
+    /**
+     * 生产任务分页
+     */
+    @PostMapping("/page")
+    public Page<ProduceOrderDetailVo> page(@RequestBody ProduceOrderDetailSelectDto dto) {
+        return produceOrderDetailService.getPage(dto);
+    }
 
 }

+ 20 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/produce/dto/ProduceOrderDetailSelectDto.java

@@ -1,9 +1,12 @@
 package com.fjhx.mes.entity.produce.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * 生产订单明细列表查询入参实体
  *
@@ -14,4 +17,21 @@ import lombok.Setter;
 @Setter
 public class ProduceOrderDetailSelectDto extends BaseSelectDto {
 
+    /**
+     * 生产状态 0未开始 1进行中 2已完成
+     */
+    private Integer produceStatus;
+
+    /**
+     * 交期开始时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date staDeliveryPeriod;
+
+    /**
+     * 交期结束时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date endDeliveryPeriod;
+
 }

+ 8 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/produce/po/ProduceOrderDetail.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
@@ -60,4 +61,11 @@ public class ProduceOrderDetail extends BasePo {
      */
     private String tenantId;
 
+    /**
+     * 投产时间
+     */
+    private Date produceTime;
+
+    private Date finishTime;
+
 }

+ 27 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/produce/vo/ProduceOrderDetailVo.java

@@ -1,10 +1,13 @@
 package com.fjhx.mes.entity.produce.vo;
 
 import com.fjhx.mes.entity.produce.po.ProduceOrderDetail;
+import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 生产订单明细列表查询返回值实体
@@ -17,6 +20,16 @@ import java.math.BigDecimal;
 public class ProduceOrderDetailVo extends ProduceOrderDetail {
 
 	/**
+	 * 订单变化
+	 */
+	private String orderCode;
+
+	/**
+	 * 订单创建时间
+	 */
+	private Date orderCreateTime;
+
+	/**
 	 * 产品名称
 	 */
 	private String productName;
@@ -46,5 +59,19 @@ public class ProduceOrderDetailVo extends ProduceOrderDetail {
 	 */
 	private BigDecimal productHeight;
 
+	/**
+	 * 交期
+	 */
+	private Date deliveryPeriod;
+
+	/**
+	 * 生产用时
+	 */
+	private Long usageTime;
+
+	/**
+	 * 工序列表
+	 */
+	private List<ProductionProcessesVo> productionProcessesList;
 
 }

+ 6 - 1
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionProcessesVo.java

@@ -7,11 +7,16 @@ import lombok.Setter;
 /**
  * 工序列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2023-03-28
  */
 @Getter
 @Setter
 public class ProductionProcessesVo extends ProductionProcesses {
 
+    /**
+     * 产品id
+     */
+    private Long productId;
+
 }

+ 9 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/produce/ProduceOrderDetailMapper.java

@@ -1,7 +1,11 @@
 package com.fjhx.mes.mapper.produce;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.produce.po.ProduceOrderDetail;
+import com.fjhx.mes.entity.produce.vo.ProduceOrderDetailVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
 
 
 /**
@@ -14,4 +18,9 @@ import com.fjhx.mes.entity.produce.po.ProduceOrderDetail;
  */
 public interface ProduceOrderDetailMapper extends BaseMapper<ProduceOrderDetail> {
 
+    /**
+     * 生产订单分页
+     */
+    Page<ProduceOrderDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProduceOrderDetail> wrapper);
+
 }

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionProcessesMapper.java

@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -16,6 +19,7 @@ import org.apache.ibatis.annotations.Param;
  * @author
  * @since 2023-03-28
  */
+@Mapper
 public interface ProductionProcessesMapper extends BaseMapper<ProductionProcesses> {
 
     /**
@@ -25,4 +29,6 @@ public interface ProductionProcessesMapper extends BaseMapper<ProductionProcesse
 
     void updateFileName(@Param("id") Long id, @Param("fileName") String fileName);
 
+    List<ProductionProcessesVo> getProcessesByProductId(@Param("ew") IWrapper<Object> wrapper);
+
 }

+ 7 - 0
hx-mes/src/main/java/com/fjhx/mes/service/produce/ProduceOrderDetailService.java

@@ -1,6 +1,9 @@
 package com.fjhx.mes.service.produce;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.produce.dto.ProduceOrderDetailSelectDto;
 import com.fjhx.mes.entity.produce.po.ProduceOrderDetail;
+import com.fjhx.mes.entity.produce.vo.ProduceOrderDetailVo;
 import com.ruoyi.common.core.service.BaseService;
 
 
@@ -14,4 +17,8 @@ import com.ruoyi.common.core.service.BaseService;
  */
 public interface ProduceOrderDetailService extends BaseService<ProduceOrderDetail> {
 
+	/**
+	 * 生产任务分页
+	 */
+	Page<ProduceOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto);
 }

+ 81 - 0
hx-mes/src/main/java/com/fjhx/mes/service/produce/impl/ProduceOrderDetailServiceImpl.java

@@ -1,11 +1,27 @@
 package com.fjhx.mes.service.produce.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.mes.entity.produce.dto.ProduceOrderDetailSelectDto;
+import com.fjhx.mes.entity.produce.po.ProduceOrder;
 import com.fjhx.mes.entity.produce.po.ProduceOrderDetail;
+import com.fjhx.mes.entity.produce.vo.ProduceOrderDetailVo;
+import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
 import com.fjhx.mes.mapper.produce.ProduceOrderDetailMapper;
+import com.fjhx.mes.mapper.production.ProductionProcessesMapper;
 import com.fjhx.mes.service.produce.ProduceOrderDetailService;
+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 java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 
 /**
  * <p>
@@ -18,4 +34,69 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetailMapper, ProduceOrderDetail> implements ProduceOrderDetailService {
 
+    @Autowired
+    private ProductInfoService productInfoService;
+    @Autowired
+    private ProductionProcessesMapper productionProcessesMapper;
+
+    @Override
+    public Page<ProduceOrderDetailVo> getPage(ProduceOrderDetailSelectDto dto) {
+        IWrapper<ProduceOrderDetail> wrapper = getWrapper();
+
+        //生产状态
+        wrapper.eq("pod", ProduceOrderDetail::getProduceStatus, dto.getProduceStatus());
+        //交期-时间范围过滤
+        wrapper.ge("po", ProduceOrder::getDeliveryPeriod, dto.getStaDeliveryPeriod());
+        wrapper.le("po", ProduceOrder::getDeliveryPeriod, dto.getEndDeliveryPeriod());
+        //下单时间(创建时间)-时间范围过滤
+        wrapper.ge("po", ProduceOrder::getCreateTime, dto.getBeginTime());
+        wrapper.le("po", ProduceOrder::getCreateTime, dto.getEndTime());
+        //关键字
+        wrapper.keyword(dto.getKeyword(), new SqlField("po", ProduceOrder::getCode));
+
+        wrapper.orderByDesc("po", ProduceOrder::getCreateTime);
+        wrapper.orderByDesc("pod", ProduceOrderDetail::getId);
+
+        Page<ProduceOrderDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<ProduceOrderDetailVo> records = page.getRecords();
+        if (ObjectUtil.isEmpty(records)) {
+            return page;
+        }
+
+        //赋值产品信息
+        productInfoService.attributeAssign(records, ProduceOrderDetail::getProductId, (item, product) -> {
+            item.setProductCode(product.getCustomCode());
+            item.setProductName(product.getName());
+            item.setProductUnit(product.getUnit());
+            item.setProductSpec(product.getSpec());
+            item.setProductLength(product.getLength());
+            item.setProductWidth(product.getWidth());
+            item.setProductHeight(product.getHeight());
+        });
+
+        //赋值生产用时
+        for (ProduceOrderDetailVo record : records) {
+            record.setUsageTime(0L);
+            Date produceTime = record.getProduceTime();
+            Date finishTime = record.getFinishTime();
+            if (ObjectUtil.isNotEmpty(produceTime) && ObjectUtil.isNotEmpty(finishTime)) {
+                long usageTime = finishTime.getTime() - produceTime.getTime();
+                record.setUsageTime(usageTime / 1000 / 60 / 60);
+            }
+        }
+
+        //赋值工序列表
+        List<Long> pIds = records.stream().map(ProduceOrderDetail::getProductId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(pIds)) {
+            List<ProductionProcessesVo> processes = productionProcessesMapper.getProcessesByProductId(IWrapper.getWrapper().in("pi.id", pIds));
+            Map<Long, List<ProductionProcessesVo>> processesMap = processes.stream().collect(Collectors.groupingBy(ProductionProcessesVo::getProductId));
+            for (ProduceOrderDetailVo record : records) {
+                List<ProductionProcessesVo> productionProcessesVo = processesMap.get(record.getProductId());
+                record.setProductionProcessesList(productionProcessesVo);
+            }
+        }
+
+        return page;
+    }
+
 }

+ 24 - 0
hx-mes/src/main/resources/mapper/produce/ProduceOrderDetailMapper.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.mes.mapper.produce.ProduceOrderDetailMapper">
+	<select id="getPage" resultType="com.fjhx.mes.entity.produce.vo.ProduceOrderDetailVo">
+		SELECT pod.id,
+			   pod.produce_order_id,
+			   pod.contract_id,
+			   pod.contract_detail_id,
+			   pod.product_id,
+			   pod.quantity,
+			   pod.finish_quantity,
+			   pod.produce_status,
+			   pod.produce_time,
+			   pod.finish_time,
+			   pod.tenant_id,
+			   pod.create_user,
+			   pod.create_time,
+			   pod.update_user,
+			   pod.update_time,
+			   pod.del_flag,
+			   po.code        AS orderCode,
+			   po.create_time AS orderCreateTime,
+			   po.delivery_period
+		FROM produce_order_detail pod
+				 LEFT JOIN produce_order po ON pod.produce_order_id = po.id
+			${ew.customSqlSegment}
+	</select>
 </mapper>

+ 18 - 9
hx-mes/src/main/resources/mapper/production/ProductionProcessesMapper.xml

@@ -2,15 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mes.mapper.production.ProductionProcessesMapper">
     <select id="getPage" resultType="com.fjhx.mes.entity.production.vo.ProductionProcessesVo">
-        select
-            pp.id,
-            pp.name,
-            pp.remarks,
-            pp.file_name,
-            pp.create_user,
-            pp.create_time,
-            pp.update_user,
-            pp.update_time
+        select pp.id,
+               pp.name,
+               pp.remarks,
+               pp.file_name,
+               pp.create_user,
+               pp.create_time,
+               pp.update_user,
+               pp.update_time
         from production_processes pp
             ${ew.customSqlSegment}
     </select>
@@ -21,4 +20,14 @@
         where id = #{id}
     </update>
 
+    <select id="getProcessesByProductId" resultType="com.fjhx.mes.entity.production.vo.ProductionProcessesVo">
+        SELECT pp.id,
+               pp.`name`,
+               pi.id as productId
+        FROM production_processes pp
+                 JOIN technology_process_line tpl ON tpl.source_processes_id = pp.id
+                 JOIN product_info pi ON pi.technology_id = tpl.technology_id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>