Ver Fonte

生产排程列表

yzc há 1 ano atrás
pai
commit
80c9247791

+ 12 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProduceOrderController.java

@@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -43,4 +45,14 @@ public class ProduceOrderController {
         produceOrderService.createOrder(produceOrderDto);
     }
 
+    /**
+     * 获取排程列表
+     *
+     * @return
+     */
+    @PostMapping("/schedulingList")
+    public List<ProductionOrderVo> getSchedulingList(@RequestBody ProduceOrderSelectDto produceOrderDto) {
+        return produceOrderService.getSchedulingList(produceOrderDto);
+    }
+
 }

+ 12 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProduceOrderSelectDto.java

@@ -1,5 +1,6 @@
 package com.fjhx.mes.entity.production.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
@@ -31,4 +32,15 @@ public class ProduceOrderSelectDto extends BaseSelectDto {
 	 */
 	private Date endDeliveryPeriod;
 
+	/**
+	 * 排程时间过滤
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM")
+	private String beginDate;
+
+	/**
+	 * 归属公司Id
+	 */
+	private Long companyId;
+
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionOrderVo.java

@@ -18,4 +18,9 @@ public class ProductionOrderVo extends ProductionOrder {
 
     private List<ProductionOrderDetailVo> produceOrderDetailList;
 
+    /**
+     * 产品名称
+     */
+    private String productName;
+
 }

+ 7 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProduceOrderMapper.java

@@ -7,6 +7,8 @@ import com.fjhx.mes.entity.production.vo.ProductionOrderVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,4 +25,9 @@ public interface ProduceOrderMapper extends BaseMapper<ProductionOrder> {
      */
     Page<ProductionOrderVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductionOrder> wrapper);
 
+    /**
+     * 获取排程列表
+     */
+    List<ProductionOrderVo> getSchedulingList(@Param("ew") IWrapper<ProductionOrder> wrapper);
+
 }

+ 7 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/ProduceOrderService.java

@@ -7,6 +7,8 @@ import com.fjhx.mes.entity.production.po.ProductionOrder;
 import com.fjhx.mes.entity.production.vo.ProductionOrderVo;
 import com.ruoyi.common.core.service.BaseService;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -28,4 +30,9 @@ public interface ProduceOrderService extends BaseService<ProductionOrder> {
      */
     void createOrder(ProductionOrderDto produceOrderDto);
 
+    /**
+     * 获取排程列表
+     */
+    List<ProductionOrderVo> getSchedulingList(ProduceOrderSelectDto dto);
+
 }

+ 39 - 3
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderServiceImpl.java

@@ -32,6 +32,7 @@ import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.fjhx.sale.service.contract.ContractService;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.system.service.ISysDeptService;
@@ -39,9 +40,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -121,6 +121,42 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
     }
 
     @Override
+    public List<ProductionOrderVo> getSchedulingList(ProduceOrderSelectDto dto) {
+        //没传默认当前月
+        if (ObjectUtil.isEmpty(dto.getBeginDate())) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            dto.setBeginDate(sdf.format(new Date()));
+        }
+
+        IWrapper<ProductionOrder> wrapper = getWrapper();
+        //排程时间过滤
+        wrapper.and(q -> q
+                .eq("DATE_FORMAT( po.create_time, '%Y-%m' )", dto.getBeginDate())
+                .or().eq("DATE_FORMAT( po.delivery_period, '%Y-%m' )", dto.getBeginDate())
+                .or(q1 -> q1
+                        .le("DATE_FORMAT( po.create_time, '%Y-%m' )", dto.getBeginDate())
+                        .ge("DATE_FORMAT( po.delivery_period, '%Y-%m' )", dto.getBeginDate())
+                )
+        );
+
+        //过滤未开始的订单
+        wrapper.eq("po", ProductionOrder::getProduceStatus, 0);
+
+        //权限过滤:生产排程-子公司看自己,总公司看全部
+        Long companyId = SecurityUtils.getCompanyId();
+        if (!Objects.equals(companyId, 100L)) {
+            wrapper.eq(ProductInfo::getCompanyId, companyId);
+        } else {
+            wrapper.eq(ProductInfo::getCompanyId, dto.getCompanyId());
+        }
+
+        wrapper.groupBy("po.id");
+        wrapper.orderByDesc("po", ProductionOrder::getId);
+        List<ProductionOrderVo> schedulingList = baseMapper.getSchedulingList(wrapper);
+        return schedulingList;
+    }
+
+    @Override
     @DSTransactional
     public void createOrder(ProductionOrderDto produceOrderDto) {
         Long contractId = produceOrderDto.getContractId();

+ 20 - 0
hx-mes/src/main/resources/mapper/production/ProduceOrderMapper.xml

@@ -14,5 +14,25 @@
 		from production_order po
 			${ew.customSqlSegment}
 	</select>
+	<select id="getSchedulingList" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderVo">
+		SELECT
+		po.`code`,
+		GROUP_CONCAT( pi.`name` ) AS productName,
+		po.create_time,
+		po.delivery_period
+		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}
+		<!--		WHERE-->
+		<!--		(-->
+		<!--			DATE_FORMAT( po.create_time, '%Y-%m' ) = '2024-01'-->
+		<!--			OR DATE_FORMAT( po.delivery_period, '%Y-%m' ) = '2024-01'-->
+		<!--			OR ( DATE_FORMAT( po.create_time, '%Y-%m' ) <= '2024-01' AND DATE_FORMAT( po.delivery_period, '%Y-%m' )>= '2024-01' )-->
+		<!--		)-->
+		<!--		GROUP BY-->
+		<!--		po.id-->
+	</select>
 
 </mapper>