yzc 2 anni fa
parent
commit
ecd1cceec2
22 ha cambiato i file con 818 aggiunte e 9 eliminazioni
  1. 68 0
      hx-mes/src/main/java/com/fjhx/mes/controller/production/ProductionPlanController.java
  2. 71 0
      hx-mes/src/main/java/com/fjhx/mes/controller/work/WorkOrderController.java
  3. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProductionPlanDto.java
  4. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProductionPlanSelectDto.java
  5. 47 0
      hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionPlan.java
  6. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionPlanVo.java
  7. 10 4
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/vo/TechnologyVo.java
  8. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/work/dto/WorkOrderDto.java
  9. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/work/dto/WorkOrderSelectDto.java
  10. 52 0
      hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java
  11. 28 0
      hx-mes/src/main/java/com/fjhx/mes/entity/work/vo/WorkOrderVo.java
  12. 26 0
      hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionPlanMapper.java
  13. 26 0
      hx-mes/src/main/java/com/fjhx/mes/mapper/work/WorkOrderMapper.java
  14. 46 0
      hx-mes/src/main/java/com/fjhx/mes/service/production/ProductionPlanService.java
  15. 57 0
      hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionPlanServiceImpl.java
  16. 21 4
      hx-mes/src/main/java/com/fjhx/mes/service/technology/impl/TechnologyServiceImpl.java
  17. 46 0
      hx-mes/src/main/java/com/fjhx/mes/service/work/WorkOrderService.java
  18. 93 0
      hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java
  19. 100 0
      hx-mes/src/main/java/com/fjhx/mes/utils/code/CodeEnum.java
  20. 20 0
      hx-mes/src/main/resources/mapper/production/ProductionPlanMapper.xml
  21. 21 0
      hx-mes/src/main/resources/mapper/work/WorkOrderMapper.xml
  22. 1 1
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalDetailsServiceImpl.java

+ 68 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProductionPlanController.java

@@ -0,0 +1,68 @@
+package com.fjhx.mes.controller.production;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.production.vo.ProductionPlanVo;
+import com.fjhx.mes.entity.production.dto.ProductionPlanSelectDto;
+import com.fjhx.mes.entity.production.dto.ProductionPlanDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.mes.service.production.ProductionPlanService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 生产计划 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@RestController
+@RequestMapping("/productionPlan")
+public class ProductionPlanController {
+
+    @Autowired
+    private ProductionPlanService productionPlanService;
+
+    /**
+     * 生产计划分页
+     */
+    @PostMapping("/page")
+    public Page<ProductionPlanVo> page(@RequestBody ProductionPlanSelectDto dto) {
+        return productionPlanService.getPage(dto);
+    }
+
+    /**
+     * 生产计划明细
+     */
+    @PostMapping("/detail")
+    public ProductionPlanVo detail(@RequestBody BaseSelectDto dto) {
+        return productionPlanService.detail(dto.getId());
+    }
+
+    /**
+     * 生产计划新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody ProductionPlanDto productionPlanDto) {
+        productionPlanService.add(productionPlanDto);
+    }
+
+    /**
+     * 生产计划编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody ProductionPlanDto productionPlanDto) {
+        productionPlanService.edit(productionPlanDto);
+    }
+
+    /**
+     * 生产计划删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        productionPlanService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/work/WorkOrderController.java

@@ -0,0 +1,71 @@
+package com.fjhx.mes.controller.work;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.work.vo.WorkOrderVo;
+import com.fjhx.mes.entity.work.dto.WorkOrderSelectDto;
+import com.fjhx.mes.entity.work.dto.WorkOrderDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.mes.service.work.WorkOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 工单 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@DS(SourceConstant.MES)
+@RestController
+@RequestMapping("/workOrder")
+public class WorkOrderController {
+
+    @Autowired
+    private WorkOrderService workOrderService;
+
+    /**
+     * 工单分页
+     */
+    @PostMapping("/page")
+    public Page<WorkOrderVo> page(@RequestBody WorkOrderSelectDto dto) {
+        return workOrderService.getPage(dto);
+    }
+
+    /**
+     * 工单明细
+     */
+    @PostMapping("/detail")
+    public WorkOrderVo detail(@RequestBody BaseSelectDto dto) {
+        return workOrderService.detail(dto.getId());
+    }
+
+    /**
+     * 工单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody WorkOrderDto workOrderDto) {
+        workOrderService.add(workOrderDto);
+    }
+
+    /**
+     * 工单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody WorkOrderDto workOrderDto) {
+        workOrderService.edit(workOrderDto);
+    }
+
+    /**
+     * 工单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        workOrderService.delete(dto.getId());
+    }
+
+}

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProductionPlanDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.production.dto;
+
+import com.fjhx.mes.entity.production.po.ProductionPlan;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 生产计划新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+public class ProductionPlanDto extends ProductionPlan {
+
+}

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProductionPlanSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.production.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 生产计划列表查询入参实体
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+public class ProductionPlanSelectDto extends BaseSelectDto {
+
+}

+ 47 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionPlan.java

@@ -0,0 +1,47 @@
+package com.fjhx.mes.entity.production.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 生产计划
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+@TableName("production_plan")
+public class ProductionPlan extends BasePo {
+
+    /**
+     * 工单id
+     */
+    private Integer workOrderId;
+
+    /**
+     * 计划开始时间
+     */
+    private Date startDate;
+
+    /**
+     * 计划结束时间
+     */
+    private Date stopDate;
+
+    /**
+     * 计划数量
+     */
+    private Long quantity;
+
+    /**
+     * 计划状态 0未开始 1进行中 2完成
+     */
+    private Integer status;
+
+}

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionPlanVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.production.vo;
+
+import com.fjhx.mes.entity.production.po.ProductionPlan;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 生产计划列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+public class ProductionPlanVo extends ProductionPlan {
+
+}

+ 10 - 4
hx-mes/src/main/java/com/fjhx/mes/entity/technology/vo/TechnologyVo.java

@@ -1,11 +1,13 @@
 package com.fjhx.mes.entity.technology.vo;
 
 import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.technology.po.Technology;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 工艺列表查询返回值实体
@@ -17,12 +19,16 @@ import java.util.List;
 @Setter
 public class TechnologyVo extends Technology {
 
+    /**工艺线路名列表*/
+    private List<String> processRouteNameList;
+
+    /**适用商品名列表*/
+    private List<String> applicableProductsNameList;
+
     /**工艺线路列表*/
-    private List<String> processRouteList;
+    private List<ProductionProcesses> processRouteList;
 
     /**适用商品列表*/
-    private List<String> applicableProductsList;
-
-    private List<ProductInfo> productsList;
+    private List<ProductInfo> applicableProductsList;
 
 }

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/dto/WorkOrderDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.work.dto;
+
+import com.fjhx.mes.entity.work.po.WorkOrder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工单新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+public class WorkOrderDto extends WorkOrder {
+
+}

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/dto/WorkOrderSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.work.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工单列表查询入参实体
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+public class WorkOrderSelectDto extends BaseSelectDto {
+
+}

+ 52 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java

@@ -0,0 +1,52 @@
+package com.fjhx.mes.entity.work.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 工单
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+@TableName("work_order")
+public class WorkOrder extends BasePo {
+
+    /**
+     * 工单编号
+     */
+    private String code;
+
+    /**
+     * 工单来源
+     */
+    private Integer source;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 工单数量
+     */
+    private Long quantity;
+
+    /**
+     * 说明
+     */
+    private String remarks;
+
+    /**
+     * 工单状态
+     */
+    private Integer status;
+
+}

+ 28 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/vo/WorkOrderVo.java

@@ -0,0 +1,28 @@
+package com.fjhx.mes.entity.work.vo;
+
+import com.fjhx.mes.entity.production.po.ProductionPlan;
+import com.fjhx.mes.entity.work.po.WorkOrder;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 工单列表查询返回值实体
+ *
+ * @author
+ * @since 2023-03-29
+ */
+@Getter
+@Setter
+public class WorkOrderVo extends WorkOrder {
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**生产计划列表*/
+    private List<ProductionPlan> productionPlans;
+
+}

+ 26 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionPlanMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.mes.mapper.production;
+
+import com.fjhx.mes.entity.production.po.ProductionPlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.production.vo.ProductionPlanVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 生产计划 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+public interface ProductionPlanMapper extends BaseMapper<ProductionPlan> {
+
+    /**
+     * 生产计划分页
+     */
+    Page<ProductionPlanVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductionPlan> wrapper);
+
+}

+ 26 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/work/WorkOrderMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.mes.mapper.work;
+
+import com.fjhx.mes.entity.work.po.WorkOrder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.work.vo.WorkOrderVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 工单 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
+
+    /**
+     * 工单分页
+     */
+    Page<WorkOrderVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<WorkOrder> wrapper);
+
+}

+ 46 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/ProductionPlanService.java

@@ -0,0 +1,46 @@
+package com.fjhx.mes.service.production;
+
+import com.fjhx.mes.entity.production.po.ProductionPlan;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.production.vo.ProductionPlanVo;
+import com.fjhx.mes.entity.production.dto.ProductionPlanSelectDto;
+import com.fjhx.mes.entity.production.dto.ProductionPlanDto;
+
+
+/**
+ * <p>
+ * 生产计划 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+public interface ProductionPlanService extends BaseService<ProductionPlan> {
+
+    /**
+     * 生产计划分页
+     */
+    Page<ProductionPlanVo> getPage(ProductionPlanSelectDto dto);
+
+    /**
+     * 生产计划明细
+     */
+    ProductionPlanVo detail(Long id);
+
+    /**
+     * 生产计划新增
+     */
+    void add(ProductionPlanDto productionPlanDto);
+
+    /**
+     * 生产计划编辑
+     */
+    void edit(ProductionPlanDto productionPlanDto);
+
+    /**
+     * 生产计划删除
+     */
+    void delete(Long id);
+
+}

+ 57 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionPlanServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.mes.service.production.impl;
+
+import com.fjhx.mes.entity.production.po.ProductionPlan;
+import com.fjhx.mes.mapper.production.ProductionPlanMapper;
+import com.fjhx.mes.service.production.ProductionPlanService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.production.vo.ProductionPlanVo;
+import com.fjhx.mes.entity.production.dto.ProductionPlanSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.mes.entity.production.dto.ProductionPlanDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 生产计划 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+@Service
+public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper, ProductionPlan> implements ProductionPlanService {
+
+    @Override
+    public Page<ProductionPlanVo> getPage(ProductionPlanSelectDto dto) {
+        IWrapper<ProductionPlan> wrapper = getWrapper();
+        wrapper.orderByDesc("pp", ProductionPlan::getId);
+        Page<ProductionPlanVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public ProductionPlanVo detail(Long id) {
+        ProductionPlan ProductionPlan = this.getById(id);
+        ProductionPlanVo result = BeanUtil.toBean(ProductionPlan, ProductionPlanVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(ProductionPlanDto productionPlanDto) {
+        this.save(productionPlanDto);
+    }
+
+    @Override
+    public void edit(ProductionPlanDto productionPlanDto) {
+        this.updateById(productionPlanDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

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

@@ -72,9 +72,13 @@ public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technol
                 List<ApplicableProducts> applicableProductsList1 = applicableProductsMap.get(technologyVo.getId());
                 for (ApplicableProducts applicableProducts : applicableProductsList1) {
                     ProductInfo productInfo = productInfoMap.get(applicableProducts.getProductId());
-                    productNameList.add(productInfo.getName());
+                    if(ObjectUtil.isNotEmpty(productInfo)) {
+                        productNameList.add(productInfo.getName());
+                    }else{
+                        productNameList.add("未知商品:"+applicableProducts.getProductId());
+                    }
                 }
-                technologyVo.setApplicableProductsList(productNameList);
+                technologyVo.setApplicableProductsNameList(productNameList);
             }
         }
 
@@ -98,7 +102,7 @@ public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technol
                         ProductionProcesses productionProcesses = productionProcessesMap.get(processRouteId);
                         arr.add(productionProcesses.getName());
                     }
-                    technologyVo.setProcessRouteList(arr);
+                    technologyVo.setProcessRouteNameList(arr);
                 }
             }
         }
@@ -109,10 +113,23 @@ public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technol
     public TechnologyVo detail(Long id) {
         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());
         List<ProductInfo> productInfos = productInfoService.listByIds(productList);
-        result.setProductsList(productInfos);
+        result.setApplicableProductsList(productInfos);
+        //获取工艺线路信息
+        List<String> processRouteIds = Arrays.asList(result.getProcessRoute().split(","));
+        List<ProductionProcesses> productionProcessesList = productionProcessesService.listByIds(processRouteIds);
+        Map<Long, ProductionProcesses> productionProcessesMap = productionProcessesList.stream()
+                .collect(Collectors.groupingBy(ProductionProcesses::getId,
+                Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+        //对工艺线路排序必须按照前端提交的顺序排序
+        List<ProductionProcesses> newProductionProcessesList = new ArrayList<>();
+        for (String processRouteId : processRouteIds){
+            newProductionProcessesList.add(productionProcessesMap.get(Long.parseLong(processRouteId)));
+        }
+        result.setProcessRouteList(newProductionProcessesList);
         return result;
     }
 

+ 46 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/WorkOrderService.java

@@ -0,0 +1,46 @@
+package com.fjhx.mes.service.work;
+
+import com.fjhx.mes.entity.work.po.WorkOrder;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.work.vo.WorkOrderVo;
+import com.fjhx.mes.entity.work.dto.WorkOrderSelectDto;
+import com.fjhx.mes.entity.work.dto.WorkOrderDto;
+
+
+/**
+ * <p>
+ * 工单 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-29
+ */
+public interface WorkOrderService extends BaseService<WorkOrder> {
+
+    /**
+     * 工单分页
+     */
+    Page<WorkOrderVo> getPage(WorkOrderSelectDto dto);
+
+    /**
+     * 工单明细
+     */
+    WorkOrderVo detail(Long id);
+
+    /**
+     * 工单新增
+     */
+    void add(WorkOrderDto workOrderDto);
+
+    /**
+     * 工单编辑
+     */
+    void edit(WorkOrderDto workOrderDto);
+
+    /**
+     * 工单删除
+     */
+    void delete(Long id);
+
+}

+ 93 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java

@@ -0,0 +1,93 @@
+package com.fjhx.mes.service.work.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+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.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.mes.entity.production.po.ProductionPlan;
+import com.fjhx.mes.entity.work.dto.WorkOrderDto;
+import com.fjhx.mes.entity.work.dto.WorkOrderSelectDto;
+import com.fjhx.mes.entity.work.po.WorkOrder;
+import com.fjhx.mes.entity.work.vo.WorkOrderVo;
+import com.fjhx.mes.mapper.work.WorkOrderMapper;
+import com.fjhx.mes.service.production.ProductionPlanService;
+import com.fjhx.mes.service.work.WorkOrderService;
+import com.fjhx.mes.utils.code.CodeEnum;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 工单 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-03-29
+ */
+@Service
+public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
+
+    @Autowired
+    ProductInfoService productInfoService;
+    @Autowired
+    ProductionPlanService productionPlanService;
+
+    @Override
+    public Page<WorkOrderVo> getPage(WorkOrderSelectDto dto) {
+        IWrapper<WorkOrder> wrapper = getWrapper();
+        wrapper.orderByDesc("wo", WorkOrder::getId);
+        wrapper.like("wo",WorkOrder::getCode,dto.getKeyword());
+        wrapper.like("wo",WorkOrder::getQuantity,dto.getKeyword());
+        Page<WorkOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<WorkOrderVo> records = page.getRecords();
+        //赋值产品名
+        List<Long> productIds = records.stream().map(WorkOrder::getProductId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(productIds)) {
+            List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
+            Map<Long, ProductInfo> ProductInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
+                    Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+            for (WorkOrderVo workOrder : records) {
+                ProductInfo productInfo = ProductInfoMap.get(workOrder.getProductId());
+                workOrder.setProductName(productInfo.getName());
+            }
+        }
+        return page;
+    }
+
+    @Override
+    public WorkOrderVo detail(Long id) {
+        WorkOrder WorkOrder = this.getById(id);
+        WorkOrderVo result = BeanUtil.toBean(WorkOrder, WorkOrderVo.class);
+        List<ProductionPlan> list = productionPlanService.list(q -> q.eq(ProductionPlan::getWorkOrderId, id));
+        result.setProductionPlans(list);
+        return result;
+    }
+
+    @Override
+    public void add(WorkOrderDto workOrderDto) {
+        //生成工单编号,以及设置默认状态
+        workOrderDto.setCode(CodeEnum.SUPPLIER.getCode());
+        workOrderDto.setStatus(0);
+        this.save(workOrderDto);
+    }
+
+    @Override
+    public void edit(WorkOrderDto workOrderDto) {
+        this.updateById(workOrderDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 100 - 0
hx-mes/src/main/java/com/fjhx/mes/utils/code/CodeEnum.java

@@ -0,0 +1,100 @@
+package com.fjhx.mes.utils.code;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.mes.service.work.WorkOrderService;
+import com.obs.services.internal.ServiceException;
+import lombok.Getter;
+import org.apache.logging.log4j.core.util.Assert;
+
+import java.util.Date;
+import java.util.Map;
+
+@Getter
+public enum CodeEnum {
+
+    // 供应商
+    SUPPLIER("WO", "yyMM-", "code", 3, WorkOrderService.class),
+    ;
+
+    CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {
+        this.prefix = prefix;
+        this.dateFormat = dateFormat;
+        this.length = length;
+        this.codeFieldName = codeFieldName;
+        this.service = SpringUtil.getBean(serviceCls);
+    }
+
+    // 编码前缀
+    private final String prefix;
+    // 编码加日期规则
+    private final String dateFormat;
+    // 长度
+    private final Integer length;
+    // 编码字段名
+    private final String codeFieldName;
+    // service
+    private final IService<?> service;
+
+    /**
+     * 获取键值对
+     */
+    public String getCode() {
+        String itemPrefix;
+
+        if (ObjectUtil.isNotEmpty(dateFormat)) {
+            Date date = new Date();
+            String format = DateUtil.format(date, dateFormat);
+            itemPrefix = prefix + format;
+        } else {
+            itemPrefix = prefix;
+        }
+
+        Object obj = service.query()
+                .likeRight(codeFieldName, itemPrefix)
+                .orderByDesc(codeFieldName)
+                .last("limit 1")
+                .one();
+
+        if (obj == null) {
+            return itemPrefix + autoGenericCode(length, 0);
+        }
+
+        Map<String, Object> map = Convert.toMap(String.class, Object.class, obj);
+
+        String code = Convert.toStr(map.get(CharSequenceUtil.toCamelCase(codeFieldName)));
+        Integer codeNum = Convert.toInt(code.substring(itemPrefix.length()));
+        if (ObjectUtil.isEmpty(codeNum)) {
+            throw new ServiceException("自定义编码与系统编码生成规则冲突,暂时无法生成编码,请联系管理员");
+        }
+
+        return itemPrefix + autoGenericCode(length, codeNum);
+    }
+
+    /**
+     * 获取键值对
+     */
+    public String getCode(String code) {
+        if (ObjectUtil.isNotEmpty(code)) {
+            Long count = service.query().eq(codeFieldName, code).count();
+            if (count != 0) {
+                throw new ServiceException("编码已存在");
+            }
+            return code;
+        } else {
+            return getCode();
+        }
+    }
+
+    /**
+     * 不够位数的在前面补0,保留num的长度位数字
+     */
+    private static String autoGenericCode(int length, Integer codeNum) {
+        return String.format("%0" + length + "d", codeNum + 1);
+    }
+
+}

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

@@ -0,0 +1,20 @@
+<?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.production.ProductionPlanMapper">
+    <select id="getPage" resultType="com.fjhx.mes.entity.production.vo.ProductionPlanVo">
+        select
+            pp.id,
+            pp.work_order_id,
+            pp.start_date,
+            pp.stop_date,
+            pp.quantity,
+            pp.status,
+            pp.create_user,
+            pp.create_time,
+            pp.update_user,
+            pp.update_time
+        from production_plan pp
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 21 - 0
hx-mes/src/main/resources/mapper/work/WorkOrderMapper.xml

@@ -0,0 +1,21 @@
+<?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.work.WorkOrderMapper">
+    <select id="getPage" resultType="com.fjhx.mes.entity.work.vo.WorkOrderVo">
+        select
+            wo.id,
+            wo.code,
+            wo.source,
+            wo.product_id,
+            wo.quantity,
+            wo.remarks,
+            wo.status,
+            wo.create_user,
+            wo.create_time,
+            wo.update_user,
+            wo.update_time
+        from work_order wo
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 1 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalDetailsServiceImpl.java

@@ -41,7 +41,7 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
     @Override
     public Page<StockJournalDetailsVo> getPage(StockJournalSelectDto dto) {
         IWrapper<StockJournalDetails> wrapper = getWrapper();
-        wrapper.eq( StockJournal::getType,dto.getType());
+        wrapper.eq("sj.type",dto.getType());
         wrapper.like("w.name",dto.getKeyword());
         wrapper.eq("w.id",dto.getWarehouseId());
         wrapper.eq("sjd.product_id",dto.getProductId());