XiaoRuby
2023-09-01 8e39c9bbf8a8bb4707f2a766295b40497ae96706
MOM系统-9-01 生产订单 生产计划完成
已添加10个文件
已修改18个文件
已删除3个文件
1026 ■■■■■ 文件已修改
inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/controller/ManufactureOrderController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/controller/ProductionPlanController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/mapper/ManualTechnologyMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderProcessMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureSchedulingMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrder.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrderProcess.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureScheduling.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto1.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManufactureOrderDto.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderProcessService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderService.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ManufactureSchedulingService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ProductionPlanService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderProcessServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderServiceImpl.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureSchedulingServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/impl/ProductionPlanServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/resources/mapper/ManualTechnologyMapper.xml 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/resources/mapper/ManufactureOrderMapper.xml 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/resources/mapper/ManufactureOrderProcessMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/resources/mapper/ManufactureSchedulingMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
@@ -85,7 +85,7 @@
                    .techfather(technology.getFather())
                    .deviceGroup(technology.getDeviceGroup())
                    .manufactureOrderId(manufactureOrder.getId())
                    .technologyId(technology.getId())
                    .productionQuota(technology.getProductionQuota())
                    .build();
            //新增编制工序表
            manualTechnologyMapper.insert(manualTechnology);
pom.xml
@@ -38,7 +38,7 @@
        <openfeign.version>3.1.3</openfeign.version>
        <feign-okhttp.version>11.0</feign-okhttp.version>
        <shiro.version>1.5.3</shiro.version>
        <freemwork.version>2.3.32</freemwork.version>
        <hutool.version>5.8.16</hutool.version>
        <!--提交前-->
        <!-- æ‰“包后导出的路径 -->
        <package.path>${project.build.directory}/BLOG</package.path>
@@ -88,6 +88,12 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
        </dependency>
    </dependencies>
    <dependencyManagement>
production-server/src/main/java/com/yuanchu/mom/controller/ManufactureOrderController.java
@@ -6,6 +6,8 @@
import com.yuanchu.mom.pojo.dto.ManualTechnologyDto;
import com.yuanchu.mom.service.DeviceService;
import com.yuanchu.mom.service.ManualTechnologyService;
import com.yuanchu.mom.service.ManufactureSchedulingService;
import com.yuanchu.mom.utils.MyUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -39,11 +41,15 @@
    @Autowired
    private ManufactureOrderService manufactureOrderService;
    @Autowired
    private ManufactureSchedulingService manufactureSchedulingService;
    @Resource
    ManualTechnologyService manualTechnologyService;
    @Resource
    DeviceService deviceService;
    @ApiOperation(value = "查询生产订单列表")
    @ApiImplicitParams(value = {
@@ -72,6 +78,15 @@
        return Result.success(manualTechnologyService.seleDatil(manOrdId));
    }
    @ApiOperation(value = "点击查看排产")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "manOrdId", value = "生产订单id", dataTypeClass = Integer.class, required = true)
    })
    @GetMapping("/select_Scheduling")
    public Result<?> selectScheduling(Integer manOrdId) {
        return Result.success(manufactureSchedulingService.selectScheduling(manOrdId));
    }
    @ApiOperation(value = "点击排产-->二级树选择设备")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "deviceGroup", value = "设备组", dataTypeClass = String.class, required = true)
@@ -82,28 +97,28 @@
    }
    @ApiOperation(value = "点击排产-->确定按钮")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "date", value = "排产开始日期", dataTypeClass = String.class, required = true),
            @ApiImplicitParam(name = "manOrdId", value = "生产订单Id", dataTypeClass = String.class, required = true),
            @ApiImplicitParam(name = "schedulingNumber", value = "排产数量", dataTypeClass = Integer.class, required = true),
    })
    @PostMapping("/output")
    public Result<?> output(@RequestParam(value = "date") @NotBlank(message = "排产开始日期不能为空") String date,
                            @RequestParam(value = "manOrdId") @NotNull(message = "生产订单Id不能为空") Integer manOrdId,
                            @RequestParam(value = "schedulingNumber") @NotNull(message = "排产数量不能为空") Integer schedulingNumber,
                            @Validated @RequestBody List<ManualTechnologyDto> manualTechnologyDtoList
    ) throws ParseException {
        manualTechnologyService.output(date, manOrdId, schedulingNumber, manualTechnologyDtoList);
    public Result<?> output(@Validated @RequestBody ManualTechnologyDto manualTechnologyDto) throws ParseException {
        // åˆ¤æ–­è¾“入数量是否超出
        Integer isExceed = manufactureOrderService.checkScheduled(manualTechnologyDto.getManOrdId(), manualTechnologyDto.getSchedulingNumber());
        if (isExceed >= 0){
            manualTechnologyService.output(manualTechnologyDto);
        return Result.success("排产成功!");
        } else {
            MyUtil.PrintLog(isExceed.toString());
            int i = manualTechnologyDto.getSchedulingNumber() + isExceed;
            return Result.fail("排产错误,当前剩余排产为:" + i);
        }
    }
    @ApiOperation(value = "下达")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "manOrdId", value = "生产订单id", dataTypeClass = Integer.class, required = true)
            @ApiImplicitParam(name = "manufactureOrderId", value = "订单id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "schedulingId", value = "排产Id", dataTypeClass = Integer.class, required = true)
    })
    @PostMapping("/down")
    public Result<?> down(Integer manOrdId) {
        manufactureOrderService.down(manOrdId);
    public Result<?> down(Integer manufactureOrderId, Integer schedulingId) {
        manufactureOrderService.down(manufactureOrderId, schedulingId);
        return Result.success("下达成功!");
    }
production-server/src/main/java/com/yuanchu/mom/controller/ProductionPlanController.java
@@ -1,7 +1,8 @@
package com.yuanchu.mom.controller;
import com.yuanchu.mom.service.ManualTechnologyService;
import com.yuanchu.mom.service.ManufactureOrderService;
import com.yuanchu.mom.service.ProductionPlanService;
import com.yuanchu.mom.service.ManufactureSchedulingService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -12,31 +13,20 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Api(tags = "生产管理-->生产计划")
@RestController
@RequestMapping("/productionPlan")
public class ProductionPlanController {
    @Resource
    ProductionPlanService productionPlanService;
    @Autowired
    private ManualTechnologyService manualTechnologyService;
    @Autowired
    private ManufactureOrderService manufactureOrderService;
    @ApiOperation(value = "查询生产计划列表")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "deviceId", value = "设备id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "orderCode", value = "订单号", dataTypeClass = String.class),
            @ApiImplicitParam(name = "name", value = "产品名称", dataTypeClass = String.class),
            @ApiImplicitParam(name = "startTime", value = "计划开始日期", dataTypeClass = String.class),
            @ApiImplicitParam(name = "endTime", value = "计划结束日期", dataTypeClass = String.class)
    })
    @GetMapping("/selectAllPlan")
    public Result selectAllPlan(Integer deviceId, String orderCode, String name, String startTime, String endTime) {
        return Result.success(productionPlanService.selectAllPlan(deviceId,orderCode,name,startTime,endTime));
    }
    @Autowired
    private ManufactureSchedulingService manufactureSchedulingService;
    @ApiOperation(value = "二级树")
    @GetMapping("/tow_tree")
@@ -46,10 +36,38 @@
    @ApiOperation(value = "查看排产详情")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "manOrdId", value = "生产订单id", dataTypeClass = Integer.class, required = true)
            @ApiImplicitParam(name = "schedulingId", value = "排产id", dataTypeClass = Integer.class, required = true)
    })
    @GetMapping("/sePros")
    public Result sePros(Integer manOrdId) {
        return Result.success(manufactureOrderService.sePros(manOrdId));
    public Result<?> sePros(Integer schedulingId) {
        return Result.success(manufactureOrderService.sePros(schedulingId));
    }
    @ApiOperation(value = "根据生产订单查看生产计划")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "manOrdId", value = "生产订单id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "productName", value = "产品名称", dataTypeClass = String.class),
            @ApiImplicitParam(name = "startTime", value = "开始日期", dataTypeClass = String.class),
            @ApiImplicitParam(name = "endTime", value = "结束日期", dataTypeClass = String.class)
    })
    @GetMapping("/produceTable")
    public Result<?> selectProduceTable(Integer manOrdId, String productName, String startTime, String endTime) {
        return Result.success(manufactureSchedulingService.selectProduceTable(manOrdId, productName, startTime, endTime));
    }
    @ApiOperation(value = "查看排产详情-->失焦修改时间")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "technologyId", value = "工序Id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "startTime", value = "开始时间", dataTypeClass = String.class, required = true, dataType = "date"),
    })
    @GetMapping("/update_time")
    public Result<?> updateTime(Integer technologyId, String startTime) {
        Integer isUpdateSuccess = manualTechnologyService.updateTime(technologyId, startTime);
        if (isUpdateSuccess >= 1) {
            return Result.success("更新成功!");
        }
        return Result.fail("更新失败!");
    }
}
production-server/src/main/java/com/yuanchu/mom/mapper/ManualTechnologyMapper.java
@@ -17,8 +17,6 @@
    //排产-->查看
    List<Map<String, Object>> seleDatil(Integer manOrdId);
    //批量更新
    void updateBatchManualTechnology(Integer schedulingNumber, List<ManualTechnology> manualTechnologies);
    List<Map<String, Object>> selectListTowTree(Integer schedulingId);
}
production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderMapper.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.ManufactureOrder;
import com.yuanchu.mom.pojo.dto.ManufactureOrderDto;
import java.util.List;
import java.util.Map;
@@ -20,14 +19,10 @@
    //查询生产订单列表
    IPage<Map<String, Object>> selectAllManord(Page<Object> page, String downTime, String delTime, String customerCode, Integer type);
    //查看生产计划
    List<Map<String, Object>> selectAllPlan(Integer deviceId, String orderCode, String name, String startTime, String endTime);
    void deleteManufacture(List<String> manOrdId);
    List<Map<String, Object>> towTree();
    void updateManufacture(Integer manufactureOrderId, Integer manufactureOrder);
    void updateManufacture(Integer manufactureOrderId, Integer schedulingNumber);
}
production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderProcessMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.yuanchu.mom.mapper;
import com.yuanchu.mom.mybatis_config.MyBaseMapper;
import com.yuanchu.mom.pojo.ManufactureOrderProcess;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * æŽ’产对应工序 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 02:46:48
 */
public interface ManufactureOrderProcessMapper extends MyBaseMapper<ManufactureOrderProcess> {
}
production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureSchedulingMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.mapper;
import com.yuanchu.mom.pojo.ManufactureScheduling;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æŽ’产表 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 11:54:28
 */
public interface ManufactureSchedulingMapper extends BaseMapper<ManufactureScheduling> {
    List<Map<String, Object>> selectScheduling(Integer manOrdId);
    List<Map<String, Object>> selectProduceTable(Integer manOrdId, String productName, String startTime, String endTime);
    Map<String, Object> sePros(Integer schedulingId);
}
production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java
@@ -47,13 +47,8 @@
     **/
    private String deviceGroup;
    /**
     * å…³è” è®¾å¤‡id
     **/
    private Integer deviceId;
    @ApiModelProperty(value = "关联 å·¥è‰ºId")
    private Integer technologyId;
    @ApiModelProperty(value = "生产定额(个/天)")
    private Integer productionQuota;
    /**
     * å…³è” ç”Ÿäº§è®¢å•id
@@ -61,6 +56,7 @@
    private Integer manufactureOrderId;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    @TableLogic(value = "1", delval = "0")
    private Integer state;
    @TableField(fill = FieldFill.INSERT)
@@ -72,27 +68,5 @@
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updateTime;
    /**
     * å¼€å§‹æ—¥æœŸ(计划)
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;
    /**
     * ç»“束日期(计划)
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
    /**
     * å‘¨æœŸ
     **/
    private Integer period;
    @ApiModelProperty(value = "排产数量")
    private Integer schedulingNumber;
}
production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrder.java
@@ -72,6 +72,8 @@
     **/
    private Integer number;
    @ApiModelProperty(value = "已排产数量")
    private Integer scheduledProduction;
    /**
     * ä¸‹å•日期
     **/
@@ -87,16 +89,12 @@
    private Date deltime;
    /**
     * çŠ¶æ€0:待排产;1:已排产
     **/
    private Integer type;
    /**
     * è´¨é‡è¿½æº¯å·
     **/
    private String qualityTraceability;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    @TableLogic(value = "1", delval = "0")
    private Integer state;
    @TableField(fill = FieldFill.INSERT)
production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrderProcess.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * æŽ’产对应工序
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 02:46:48
 */
@Data
@Accessors(chain = true)
@TableName("manufacture_order_process")
@ApiModel(value = "ManufactureOrderProcess对象", description = "排产对应工序")
public class ManufactureOrderProcess implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键Id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("关联 è®¾å¤‡Id")
    private Integer deviceId;
    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;
    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
    @ApiModelProperty("周期")
    private Integer period;
    @ApiModelProperty("关联 ç¼–制工序表Id")
    private Integer manualTechnologyId;
    @ApiModelProperty("关联 æŽ’产表 Id")
    private Integer manufactureSchedulingId;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    @TableLogic(value = "1", delval = "0")
    private Integer state;
    @TableField(fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updateTime;
}
production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureScheduling.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * æŽ’产表
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 11:54:28
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "ManufactureScheduling对象", description = "排产表")
public class ManufactureScheduling implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键Id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;
    @ApiModelProperty("结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
    @ApiModelProperty("下达状态")
    private Integer goState;
    @ApiModelProperty("已排产数量")
    private Integer scheduled;
    @ApiModelProperty("关联生产订单Id")
    private Integer manufactureOrderId;
    @TableField(fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updateTime;
    @ApiModelProperty("逻辑删除")
    @TableLogic(value = "1", delval = "0")
    private Integer state;
}
production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto.java
@@ -3,21 +3,25 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
//更新排产(选择设备)
public class ManualTechnologyDto {
    //工序id
    @NotNull(message = "工序Id不能为空")
    @ApiModelProperty(value = "工序Id", example = "1", required = true)
    private Integer id;
    @NotBlank(message = "排产开始日期不能为空")
    @ApiModelProperty(value = "排产开始日期", example = "2023-08-31", required = true, dataType = "date")
    private String date;
    @ApiModelProperty(value = "工艺Id", example = "2", required = true)
    private Integer technologyId;
    @NotNull(message = "生产订单Id不能为空")
    @ApiModelProperty(value = "生产订单Id", example = "3", required = true)
    private Integer manOrdId;
    @NotNull(message = "设备id不能为空")
    @ApiModelProperty(value = "设备Id", example = "1", required = true)
    private Integer  deviceId;
    @NotNull(message = "排产数量不能为空")
    @ApiModelProperty(value = "排产数量", example = "20", required = true)
    private Integer schedulingNumber;
    private List<ManualTechnologyDto1> orderProcess;
}
production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto1.java
@@ -2,52 +2,22 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date;
//查看排产详情中的计划编制
@Data
public class ManualTechnologyDto1 {
    /**
     * å·¥åºid
     **/
    private Integer mtechId;
    @NotNull(message = "工序Id不能为空")
    @ApiModelProperty(value = "工序Id", example = "1", required = true)
    private Integer manualTechnologyId;
    /**
     * å·¥åºåç§°
     **/
    private String techname;
    /**
     * å·¥åºçˆ¶ç±»
     **/
    private String techfather;
    /**
     * è®¾å¤‡å(机台)
     **/
    private String deviceName;
    /**
     * å¼€å§‹æ—¥æœŸ(计划)
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;
    /**
     * ç»“束日期(计划)
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
    /**
     * å‘¨æœŸ
     **/
    private Integer period;
    @NotNull(message = "设备id不能为空")
    @ApiModelProperty(value = "设备Id", example = "1", required = true)
    private Integer  deviceId;
}
production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManufactureOrderDto.java
ÎļþÒÑɾ³ý
production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java
@@ -26,9 +26,14 @@
    /**
     * æŽ’产==>更新
     * @param manualTechnologyDtoList
     */
    void output(String date, Integer manufactureOrderId, Integer schedulingNumber, List<ManualTechnologyDto> manualTechnologyDtoList) throws ParseException;
    void output(ManualTechnologyDto manualTechnologyDto) throws ParseException;
    /**
     * æŸ¥çœ‹æŽ’产详情-->失焦修改时间
     * @param startTime å¼€å§‹æ—¶é—´
     * @return
     */
    Integer updateTime(Integer technologyId, String startTime);
}
production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderProcessService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.yuanchu.mom.service;
import com.yuanchu.mom.pojo.ManufactureOrderProcess;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * æŽ’产对应工序 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 02:46:48
 */
public interface ManufactureOrderProcessService extends IService<ManufactureOrderProcess> {
    void batchInsert(List<ManufactureOrderProcess> manufactureOrderProcessesDate);
}
production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderService.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.ManufactureOrder;
import com.yuanchu.mom.pojo.dto.ManufactureOrderDto;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -31,16 +30,17 @@
    /**
     * æŸ¥çœ‹æŽ’产详情
     * @param manOrdId
     * @param schedulingId
     * @return
     */
    ManufactureOrderDto sePros(Integer manOrdId);
    Map<String, Object> sePros(Integer schedulingId);
    /**
     * ä¸‹è¾¾
     * @param manOrdId
     * @param manufactureOrderId è®¢å•Id
     * @param schedulingId æŽ’产Id
     */
    void down(Integer manOrdId);
    void down(Integer manufactureOrderId, Integer schedulingId);
    /**
     * æ‰¹é‡åˆ é™¤
@@ -54,5 +54,12 @@
     * @return
     */
    List<Map<String, Object>> towTree();
    /**
     * åˆ¤æ–­è¾“入数量是否超出
     * @param manOrdId è®¢å•Id
     * @param schedulingNumber ç”¨æˆ·è¾“入数量
     */
    Integer checkScheduled(Integer manOrdId, Integer schedulingNumber);
}
production-server/src/main/java/com/yuanchu/mom/service/ManufactureSchedulingService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.yuanchu.mom.service;
import com.yuanchu.mom.pojo.ManufactureOrder;
import com.yuanchu.mom.pojo.ManufactureScheduling;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æŽ’产表 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 11:54:28
 */
public interface ManufactureSchedulingService extends IService<ManufactureScheduling> {
    List<Map<String, Object>> selectScheduling(Integer manOrdId);
    List<Map<String, Object>> selectProduceTable(Integer manOrdId, String productName, String startTime, String endTime);
    Map<String, Object> sePros(Integer schedulingId);
}
production-server/src/main/java/com/yuanchu/mom/service/ProductionPlanService.java
ÎļþÒÑɾ³ý
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java
@@ -1,16 +1,21 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.DeviceMapper;
import com.yuanchu.mom.mapper.ManualTechnologyMapper;
import com.yuanchu.mom.mapper.ManufactureOrderMapper;
import com.yuanchu.mom.pojo.ManualTechnology;
import com.yuanchu.mom.pojo.ManufactureOrder;
import com.yuanchu.mom.pojo.Technology;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.pojo.dto.ManualTechnologyDto;
import com.yuanchu.mom.pojo.dto.ManualTechnologyDto1;
import com.yuanchu.mom.service.ManualTechnologyService;
import com.yuanchu.mom.service.ManufactureOrderProcessService;
import com.yuanchu.mom.service.ManufactureSchedulingService;
import com.yuanchu.mom.service.TechnologyService;
import com.yuanchu.mom.utils.MyUtil;
import org.springframework.beans.BeanUtils;
@@ -22,6 +27,7 @@
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -43,36 +49,92 @@
    @Autowired
    private TechnologyService technologyService;
    @Autowired
    private ManufactureSchedulingService manufactureSchedulingService;
    @Autowired
    private ManufactureOrderProcessService manufactureOrderProcessService;
    //排产-->查看
    @Override
    public List<Map<String, Object>> seleDatil(Integer manOrdId) {
        return manualTechnologyMapper.seleDatil(manOrdId);
    }
    //排产-->更新
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void output(String date, Integer manufactureOrderId, Integer schedulingNumber, List<ManualTechnologyDto> manualTechnologyDtoList) throws ParseException {
        // æŸ¥è¯¢å·¥è‰ºï¼Œç”¨äºŽåŒ¹é…æ¯ä¸ªè®¢å•的工序周期
        LambdaQueryWrapper<Technology> wrapper = new LambdaQueryWrapper<>();
        wrapper.select(Technology::getId, Technology::getProductionQuota);
        List<Technology> technologies = technologyService.list(wrapper);
    public void output(ManualTechnologyDto manualTechnologyDto) throws ParseException {
        // æ ¹æ®æŽ’产数量计算工艺周期
        List<ManufactureOrderProcess> manufactureOrderProcessesPeriod = matchingCycle(
                manualTechnologyDto.getSchedulingNumber(),
                manualTechnologyDto.getManOrdId(),
                manualTechnologyDto.getOrderProcess());
        // æ ¹æ®å·¥åºç”Ÿäº§å®šé¢åŒ¹é…æ—¶é—´
        List<ManufactureOrderProcess> manufactureOrderProcessesDate = datePeriodCalculate(
                manualTechnologyDto.getDate(),
                manufactureOrderProcessesPeriod);
        // æ·»åŠ ä¸€æ¡æŽ’äº§è®°å½•åˆ°manufacture_scheduling表格,返回主键Id
        Date endTime = manufactureOrderProcessesDate.get(manufactureOrderProcessesDate.size() - 1).getEndTime();
        ManufactureScheduling manufactureScheduling = new ManufactureScheduling()
                .setScheduled(manualTechnologyDto.getSchedulingNumber())
                .setStartTime(DateUtil.parse(manualTechnologyDto.getDate()))
                .setEndTime(endTime)
                .setManufactureOrderId(manualTechnologyDto.getManOrdId())
                .setGoState(0); // 0 è¡¨ç¤ºå¾…下达
        manufactureSchedulingService.save(manufactureScheduling);
        // å°†æŽ’表Id插入到manufactureOrderProcessesDate中, å¼€å§‹æ‰¹é‡æ’å…¥manufactureOrderProcesses表格
        manufactureOrderProcessesDate.forEach(i -> i.setManufactureSchedulingId(manufactureScheduling.getId()));
        manufactureOrderProcessService.batchInsert(manufactureOrderProcessesDate);
        // æ›´æ–°è®¢å•的已排产数量
        manufactureOrderMapper.updateManufacture(manualTechnologyDto.getManOrdId(), manualTechnologyDto.getSchedulingNumber());
    }
    @Override
    public Integer updateTime(Integer technologyId, String startTime) {
//        // Hutool å·¥å…·ç±»è®¡ç®—间隔小时
//        DateTime startTime1 = DateUtil.parse(startTime);
//        DateTime endTime1 = DateUtil.parse(endTime);
//        long between = DateUtil.between(startTime1, endTime1, DateUnit.HOUR);
//        // æ›´æ–°
//        LambdaUpdateWrapper<ManualTechnology> updateWrapper = Wrappers.<ManualTechnology>lambdaUpdate()
//                .eq(ManualTechnology::getId, technologyId);
//        return manualTechnologyMapper.update(new ManualTechnology(), updateWrapper);
        return null;
    }
    // æ ¹æ®æŽ’产数量计算工艺周期
    private List<ManufactureOrderProcess> matchingCycle(Integer schedulingNumber, Integer manOrdId, List<ManualTechnologyDto1> manualTechnologyDtoList){
        // æŸ¥è¯¢ç¼–制工艺,用于匹配每个订单的工序周期
        LambdaQueryWrapper<ManualTechnology> queryWrapper = Wrappers.<ManualTechnology>lambdaQuery()
                .eq(ManualTechnology::getManufactureOrderId, manOrdId);
        List<ManualTechnology> technologies = manualTechnologyMapper.selectList(queryWrapper);
        //匹配每个订单的工序周期
        List<ManualTechnology> manualTechnologies = manualTechnologyDtoList.stream().map(manualTechnologyDto -> {
            ManualTechnology manualTechnology = new ManualTechnology();
            BeanUtils.copyProperties(manualTechnologyDto, manualTechnology);
        List<ManufactureOrderProcess> manufactureOrderProcessList = manualTechnologyDtoList.stream().map(manualTechnologyDto1 -> {
            ManufactureOrderProcess manufactureOrderProcess = new ManufactureOrderProcess();
            BeanUtils.copyProperties(manualTechnologyDto1, manufactureOrderProcess);
            technologies.forEach(i -> {
                if (Objects.equals(manualTechnology.getTechnologyId(), i.getId())){
                    manualTechnology.setPeriod((int) Math.ceil((double)schedulingNumber/i.getProductionQuota()));
                if (Objects.equals(manufactureOrderProcess.getManualTechnologyId(), i.getId())){
                    manufactureOrderProcess.setPeriod((int) Math.ceil((double)schedulingNumber/i.getProductionQuota()));
                }
            });
            return manualTechnology;
            return manufactureOrderProcess;
        }).collect(Collectors.toList());
        return manufactureOrderProcessList;
    }
    // æ ¹æ®å·¥åºç”Ÿäº§å®šé¢åŒ¹é…æ—¶é—´
    private List<ManufactureOrderProcess> datePeriodCalculate(String date, List<ManufactureOrderProcess> manualTechnologies) throws ParseException {
        // è®¡ç®—工序的开始日期以及结束日期
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = dateFormat.parse(date);
@@ -80,29 +142,21 @@
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(parse);
        //第一个工序
        ManualTechnology manualTechnology = manualTechnologies.get(0);
        ManufactureOrderProcess manualTechnology = manualTechnologies.get(0);
        calendar.add(Calendar.DATE, manualTechnology.getPeriod());
        manualTechnology.setStartTime(parse).setEndTime(calendar.getTime());
        //循环赋值时间
        for (int i = 0; i < manualTechnologies.size()-1 ; i++) {
            Calendar calendar1 = Calendar.getInstance();
            calendar1.setTime(manualTechnologies.get(i).getEndTime());
            ManualTechnology technology = manualTechnologies.get(i + 1);
            ManufactureOrderProcess technology = manualTechnologies.get(i + 1);
            calendar1.add(Calendar.DATE,1);
            technology.setStartTime(calendar1.getTime());
            calendar1.add(Calendar.DATE,technology.getPeriod());
            technology.setEndTime(calendar1.getTime());
        }
        // æ•°æ®å¤„理完成开始批量更新Mysql
        manualTechnologyMapper.updateBatchManualTechnology(schedulingNumber, manualTechnologies);
        // å·¥åºæ›´æ–°å®Œæ¯•,更新订单的状态,将其更新为已排产:1,还有待下达:0
        manufactureOrderMapper.updateManufacture(manufactureOrderId, schedulingNumber);
        return manualTechnologies;
    }
}
production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderProcessServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.yuanchu.mom.service.impl;
import com.yuanchu.mom.pojo.ManufactureOrderProcess;
import com.yuanchu.mom.mapper.ManufactureOrderProcessMapper;
import com.yuanchu.mom.service.ManufactureOrderProcessService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
 * æŽ’产对应工序 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 02:46:48
 */
@Service
public class ManufactureOrderProcessServiceImpl extends ServiceImpl<ManufactureOrderProcessMapper, ManufactureOrderProcess> implements ManufactureOrderProcessService {
    @Resource
    private ManufactureOrderProcessMapper manufactureOrderProcessMapper;
    @Override
    public void batchInsert(List<ManufactureOrderProcess> manufactureOrderProcessesDate) {
        manufactureOrderProcessMapper.insertBatchSomeColumn(manufactureOrderProcessesDate);
    }
}
production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderServiceImpl.java
@@ -1,26 +1,25 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.DeviceMapper;
import com.yuanchu.mom.mapper.ManualTechnologyMapper;
import com.yuanchu.mom.mapper.ManufactureOrderMapper;
import com.yuanchu.mom.pojo.ManualTechnology;
import com.yuanchu.mom.pojo.ManufactureOrder;
import com.yuanchu.mom.pojo.dto.ManualTechnologyDto1;
import com.yuanchu.mom.pojo.dto.ManufactureOrderDto;
import com.yuanchu.mom.pojo.ManufactureScheduling;
import com.yuanchu.mom.service.ManufactureOrderService;
import com.yuanchu.mom.utils.MyUtil;
import com.yuanchu.mom.service.ManufactureSchedulingService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * ç”Ÿäº§è®¢å•表(ManufactureOrder)表服务实现类
@@ -37,8 +36,8 @@
    @Resource
    ManualTechnologyMapper manualTechnologyMapper;
    @Resource
    DeviceMapper deviceMapper;
    @Autowired
    private ManufactureSchedulingService manufactureSchedulingService;
    //查询生产订单的列表
    @Override
@@ -46,34 +45,50 @@
        return manufactureOrderMapper.selectAllManord(page,downTime,delTime,customerCode,type);
    }
    //查看排产详情
    @Override
    public ManufactureOrderDto sePros(Integer manOrdId) {
        ManufactureOrderDto manufactureOrderDto = new ManufactureOrderDto();
    public Map<String, Object> sePros(Integer schedulingId) {
        //基本信息
        ManufactureOrder manufactureOrder = manufactureOrderMapper.selectById(manOrdId);
        BeanUtils.copyProperties(manufactureOrder,manufactureOrderDto);
        Map<String, Object> manufactureOrder = manufactureSchedulingService.sePros(schedulingId);
        //计划编制
        List<ManualTechnology> manualTechnologies = manualTechnologyMapper.selectList(Wrappers.<ManualTechnology>query().eq("manufacture_order_id", manOrdId));
        MyUtil.PrintLog(manualTechnologies.toString());
//        List<ManualTechnologyDto1> manualTechnologyDto1s = manualTechnologies.stream().map(manualTechnology -> {
//            ManualTechnologyDto1 manualTechnologyDto1 = new ManualTechnologyDto1();
//            BeanUtils.copyProperties(manualTechnology, manualTechnologyDto1);
//            manualTechnologyDto1.setMtechId(manualTechnology.getId());
//            manualTechnologyDto1.setDeviceName(deviceMapper.selectById(manualTechnology.getDeviceId()).getName());
//            return manualTechnologyDto1;
//        }).collect(Collectors.toList());
//        manufactureOrderDto.setMessage(manualTechnologyDto1s);
        return manufactureOrderDto;
        List<Map<String, Object>> mapList = manualTechnologyMapper.selectListTowTree(schedulingId);
        manufactureOrder.put("message",mapList);
        return manufactureOrder;
    }
    //下达
    @Override
    public void down(Integer manOrdId) {
        ManufactureOrder manufactureOrder = new ManufactureOrder().setId(manOrdId).setGoState(1).setType(0);
        manufactureOrderMapper.updateById(manufactureOrder);
    public void down(Integer manufactureOrderId, Integer schedulingId) {
        // å…ˆæ›´æ–°æŽ’产
        LambdaUpdateWrapper<ManufactureScheduling> updateWrapperScheduling = Wrappers.<ManufactureScheduling>lambdaUpdate()
                .eq(ManufactureScheduling::getId, schedulingId)
                .set(ManufactureScheduling::getGoState, 1);
        manufactureSchedulingService.update(updateWrapperScheduling);
        // ç„¶åŽæ›´æ–°è®¢å•表的状态
        LambdaQueryWrapper<ManufactureScheduling> queryWrapper = Wrappers.<ManufactureScheduling>lambdaQuery()
                .eq(ManufactureScheduling::getManufactureOrderId, manufactureOrderId)
                .select(ManufactureScheduling::getGoState);
        List<ManufactureScheduling> list = manufactureSchedulingService.list(queryWrapper);
        boolean goStateAll = false;
        for (int i = 0; i <= list.size() - 1; i++){
            if (list.get(i).getGoState() == 0) {
                goStateAll = true;
                break;
            }
        }
        LambdaUpdateWrapper<ManufactureOrder> updateWrapperOrder = new LambdaUpdateWrapper<>();
        updateWrapperOrder.eq(ManufactureOrder::getId, manufactureOrderId);
        // å¦‚果排产表中有一个是待下达,那么订单表中就为待下达
        if (goStateAll){
            // å¾…下达
            updateWrapperOrder.set(ManufactureOrder::getGoState, 0);
        } else {
            // å·²ä¸‹è¾¾
            updateWrapperOrder.set(ManufactureOrder::getGoState, 1);
        }
        manufactureOrderMapper.update(new ManufactureOrder(), updateWrapperOrder);
    }
    @Override
@@ -85,5 +100,18 @@
    public List<Map<String, Object>> towTree() {
        return manufactureOrderMapper.towTree();
    }
    @Override
    public Integer checkScheduled(Integer manOrdId, Integer schedulingNumber) {
        LambdaQueryWrapper<ManufactureOrder> queryWrapper = Wrappers.<ManufactureOrder>lambdaQuery()
                .eq(ManufactureOrder::getId, manOrdId)
                .eq(ManufactureOrder::getState, 1)
                .select(ManufactureOrder::getNumber, ManufactureOrder::getScheduledProduction);
        ManufactureOrder manufactureOrder = manufactureOrderMapper.selectOne(queryWrapper);
        if (ObjectUtils.isEmpty(manufactureOrder.getScheduledProduction())){
            manufactureOrder.setScheduledProduction(0);
        }
        return manufactureOrder.getNumber() - (manufactureOrder.getScheduledProduction() + schedulingNumber);
    }
}
production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureSchedulingServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yuanchu.mom.pojo.ManufactureScheduling;
import com.yuanchu.mom.mapper.ManufactureSchedulingMapper;
import com.yuanchu.mom.service.ManufactureSchedulingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æŽ’产表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-08-31 11:54:28
 */
@Service
public class ManufactureSchedulingServiceImpl extends ServiceImpl<ManufactureSchedulingMapper, ManufactureScheduling> implements ManufactureSchedulingService {
    @Resource
    private ManufactureSchedulingMapper manufactureSchedulingMapper;
    @Override
    public List<Map<String, Object>> selectScheduling(Integer manOrdId) {
        return manufactureSchedulingMapper.selectScheduling(manOrdId);
    }
    @Override
    public List<Map<String, Object>> selectProduceTable(Integer manOrdId, String productName, String startTime, String endTime) {
        return manufactureSchedulingMapper.selectProduceTable(manOrdId, productName, startTime, endTime);
    }
    @Override
    public Map<String, Object> sePros(Integer schedulingId) {
        return manufactureSchedulingMapper.sePros(schedulingId);
    }
}
production-server/src/main/java/com/yuanchu/mom/service/impl/ProductionPlanServiceImpl.java
ÎļþÒÑɾ³ý
production-server/src/main/resources/mapper/ManualTechnologyMapper.xml
@@ -1,37 +1,6 @@
<?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.yuanchu.mom.mapper.ManualTechnologyMapper">
    <!--批量更新-->
    <update id="updateBatchManualTechnology">
        UPDATE mom_ocean.manual_technology
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="device_id=case" suffix="end,">
                <foreach collection="manualTechnologies" item="manualTechnologie">
                    WHEN id =#{manualTechnologie.id} THEN #{manualTechnologie.deviceId}
                </foreach>
            </trim>
            <trim prefix="start_time=case" suffix="end,">
                <foreach collection="manualTechnologies" item="manualTechnologie">
                    WHEN id =#{manualTechnologie.id} THEN #{manualTechnologie.startTime}
                </foreach>
            </trim>
            <trim prefix="end_time=case" suffix="end,">
                <foreach collection="manualTechnologies" item="manualTechnologie">
                    WHEN id =#{manualTechnologie.id} THEN #{manualTechnologie.endTime}
                </foreach>
            </trim>
            <trim prefix="scheduling_number=case" suffix="end,">
                <foreach collection="manualTechnologies" item="manualTechnologie">
                    WHEN id =#{manualTechnologie.id} THEN #{schedulingNumber}
                </foreach>
            </trim>
        </trim>
        <where>
            <foreach collection="manualTechnologies" separator="or" item="manualTechnologie">
                id =#{manualTechnologie.id}
            </foreach>
        </where>
    </update>
    <resultMap id="seleDatilMap" type="map">
        <id property="lable" column="techfather"/>
@@ -42,7 +11,6 @@
        <id property="lable" column="techname"/>
        <result property="id" column="id"/>
        <result property="deviceGroup" column="device_group"/>
        <result property="deviceName" column="name"/>
        <result property="technologyId" column="manufacture_order_id"/>
    </resultMap>
@@ -50,12 +18,31 @@
        select manual_technology.id,
               techfather,
               techname,
               device_group,
               name,
               manufacture_order_id
               device_group
        from mom_ocean.manual_technology
                 left join mom_ocean.device
                           on device.id = device_id
        where manufacture_order_id = #{manOrdId}
    </select>
    <resultMap id="selectListTowTreeFirstMap" type="map">
        <id property="techfather" column="techfather"/>
        <collection property="children" javaType="list" resultMap="selectListTowTreeSecondMap"/>
    </resultMap>
    <resultMap id="selectListTowTreeSecondMap" type="map">
        <id property="id" column="id"/>
        <result property="techname" column="techname"/>
        <result property="deviceName" column="name"/>
        <result property="startTime" column="start_time"/>
        <result property="endTime" column="end_time"/>
        <result property="period" column="period"/>
    </resultMap>
    <select id="selectListTowTree" resultMap="selectListTowTreeFirstMap">
        SELECT p.`id`, t.`techfather`, t.`techname`, d.`name`, DATE_FORMAT(p.`start_time`, '%Y-%m-%d') start_time,
               DATE_FORMAT(p.`end_time`, '%Y-%m-%d') end_time, p.`period`
        FROM manufacture_order_process p
                 LEFT JOIN device d ON d.`id` = p.`device_id`
                 LEFT JOIN manual_technology t ON t.`id` = p.`manual_technology_id`
        WHERE p.`state` = 1
          AND p.`manufacture_scheduling_id` = #{schedulingId}
    </select>
</mapper>
production-server/src/main/resources/mapper/ManufactureOrderMapper.xml
@@ -12,10 +12,10 @@
        specifications,
        unit,
        number,
        DATE_FORMAT(downTime, '%Y-%m-%d') '下单日期',
        DATE_FORMAT(delTime, '%Y-%m-%d') '交货日期',
        scheduled_production,
        DATE_FORMAT(downTime, '%Y-%m-%d') downTime,
        DATE_FORMAT(delTime, '%Y-%m-%d') delTime,
        go_state,
        type
        from mom_ocean.manufacture_order
        where state=1
        <if test="downTime!=null and downTime!=''">
@@ -30,36 +30,6 @@
        <if test="type!=null">
            and type=#{type}
        </if>
    </select>
    <!--查看生产计划-->
    <select id="selectAllPlan" resultType="java.util.Map">
        select order_code,
               name,
               specifications,
               unit,
               number,
               proname,
               saleman,
               downman,
               techname,
               DATE_FORMAT(start_time, '%Y-%m-%d') '计划开始日期',
               DATE_FORMAT(end_time, '%Y-%m-%d') '计划结束日期'
        from mom_ocean.manual_technology mt
                 left join mom_ocean.manufacture_order mo
                           on mt.manufacture_order_id = mo.id
        where mo.state=1
        and go_state=1
        and device_id=#{deviceId}
        <if test="orderCode!=null and orderCode!=''">
            and order_code like concat('%',#{orderCode},'%')
        </if>
        <if test="startTime!=null and startTime!=''">
            and DATE_FORMAT(start_time, '%Y-%m-%d')=#{startTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            and DATE_FORMAT(end_time, '%Y-%m-%d')=#{endTime}
        </if>
        order by start_time
    </select>
    <update id="deleteManufacture">
@@ -89,7 +59,7 @@
    <update id="updateManufacture">
        UPDATE manufacture_order m
        SET m.`type` = 1, m.`go_state` = 0, m.`scheduled_production` = m.`scheduled_production` + #{schedulingNumber}
        SET m.`go_state` = 0, m.`scheduled_production` = IFNULL(m.`scheduled_production`, 0) + #{schedulingNumber}
        where m.id = #{manufactureOrderId}
    </update>
</mapper>
production-server/src/main/resources/mapper/ManufactureOrderProcessMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?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.yuanchu.mom.mapper.ManufactureOrderProcessMapper">
</mapper>
production-server/src/main/resources/mapper/ManufactureSchedulingMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
<?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.yuanchu.mom.mapper.ManufactureSchedulingMapper">
    <select id="selectScheduling" resultType="map">
        SELECT m.`id`, DATE_FORMAT(m.`create_time`, '%Y-%m-%d') createTime,
               DATE_FORMAT(m.`end_time`, '%Y-%m-%d') endTime, m.`scheduled`, m.`go_state`,
               DATE_FORMAT(m.`start_time`, '%Y-%m-%d') startTime
        FROM manufacture_scheduling m
        WHERE m.`manufacture_order_id` = 3
          AND m.`state` = 1
    </select>
    <select id="selectProduceTable" resultType="map">
        SELECT m.`id`, o.`name`, o.`specifications`, o.`unit`, m.`scheduled`, o.`proname`, o.`saleman`,
               o.`downman`, DATE_FORMAT(m.`start_time`, '%Y-%m-%d') startTime, DATE_FORMAT(m.`end_time`, '%Y-%m-%d') endTime
        FROM manufacture_scheduling m, manufacture_order o
        WHERE m.`manufacture_order_id` = #{manOrdId}
          AND m.`manufacture_order_id` = o.`id`
          AND m.`state` = 1
        <if test="productName != null and productName != ''">
            AND o.`name` LIKE CONCAT('%', #{productName}, '%')
        </if>
        <if test="startTime != null and startTime != ''">
            AND m.`start_time` >= #{startTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND m.`end_time` <![CDATA[ <= ]]> #{endTime}
        </if>
    </select>
    <select id="sePros" resultType="map">
        SELECT s.`scheduled`, o.`order_code`, o.`customer_code`, o.`name`, o.`specifications`, o.`unit`,
               DATE_FORMAT(o.`downTime`, '%Y-%m-%d') downTime, DATE_FORMAT(o.`delTime`, '%Y-%m-%d') delTime
        FROM manufacture_scheduling s, manufacture_order o
        WHERE s.`manufacture_order_id` = o.`id`
          AND s.`id` = #{schedulingId}
    </select>
</mapper>
system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
@@ -19,7 +19,7 @@
    public static String database_username = "user";
    public static String database_password= "123456";
    public static String author = "江苏鵷雏网络科技有限公司";
    public static String model_name = "/inspect-server"; // å¦‚果为分布式填子模块名称,如果不是分布式为空即可
    public static String model_name = "/production-server"; // å¦‚果为分布式填子模块名称,如果不是分布式为空即可
    public static String setParent = "com.yuanchu.mom"; // åŒ…路径
    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");
system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -1,20 +1,28 @@
package com.yuanchu.mom;
import com.yuanchu.mom.mapper.ManufactureOrderMapper;
import com.yuanchu.mom.utils.MyUtil;
import com.yuanchu.mom.mapper.ManualTechnologyMapper;
import com.yuanchu.mom.pojo.ManualTechnology;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@SpringBootTest
class SystemRunApplicationTest {
    @Resource
    private ManufactureOrderMapper manufactureOrderMapper;
    private ManualTechnologyMapper manualTechnologyMapper;
    @Test
    void contextLoads() {
        ManualTechnology manualTechnology = new ManualTechnology()
                .setTechname("tets")
                .setTechfather("test")
                .setDeviceGroup("grop")
                .setDeviceId(1)
                .setTechnologyId(2)
                .setManufactureOrderId(1)
                .setSchedulingNumber(12);
        manualTechnologyMapper.insert(manualTechnology);
    }
}