From 8e39c9bbf8a8bb4707f2a766295b40497ae96706 Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期五, 01 九月 2023 13:46:54 +0800
Subject: [PATCH] MOM系统-9-01 生产订单 生产计划完成
---
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java | 108 ++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 81 insertions(+), 27 deletions(-)
diff --git a/production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java b/production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java
index 7b48b05..a3ce511 100644
--- a/production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java
+++ b/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琛ㄦ牸锛岃繑鍥炰富閿甀d
+ 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);
+
+
+ // 灏嗘帓琛↖d鎻掑叆鍒癿anufactureOrderProcessesDate涓�, 寮�濮嬫壒閲忔彃鍏anufactureOrderProcesses琛ㄦ牸
+ 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());
}
-
-
- // 鏁版嵁澶勭悊瀹屾垚寮�濮嬫壒閲忔洿鏂癕ysql
- manualTechnologyMapper.updateBatchManualTechnology(schedulingNumber, manualTechnologies);
-
-
- // 宸ュ簭鏇存柊瀹屾瘯锛屾洿鏂拌鍗曠殑鐘舵�侊紝灏嗗叾鏇存柊涓哄凡鎺掍骇锛�1锛岃繕鏈夊緟涓嬭揪锛�0
- manufactureOrderMapper.updateManufacture(manufactureOrderId, schedulingNumber);
+ return manualTechnologies;
}
}
--
Gitblit v1.9.3