From 68f6642d4d1fff10c6bd898d69dd7bff27adbc16 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期日, 24 九月 2023 15:18:29 +0800
Subject: [PATCH] 修改2.0 9.24
---
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 112 insertions(+), 6 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 874c759..82e3bdf 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,31 @@
package com.yuanchu.mom.service.impl;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
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.pojo.ManualTechnology;
+import com.yuanchu.mom.mapper.ManufactureOrderMapper;
+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.utils.MyUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 缂栧埗宸ュ簭琛�(ManualTechnology)琛ㄦ湇鍔″疄鐜扮被
@@ -25,12 +40,103 @@
ManualTechnologyMapper manualTechnologyMapper;
@Resource
- DeviceMapper deviceMapper;
+ ManufactureOrderMapper manufactureOrderMapper;
+
+ @Autowired
+ private ManufactureSchedulingService manufactureSchedulingService;
+
+ @Autowired
+ private ManufactureOrderProcessService manufactureOrderProcessService;
//鎺掍骇-->鏌ョ湅
@Override
- public List<Map<String,Object>> seleDatil(Integer manOrdId) {
+ public List<Map<String, Object>> seleDatil(Integer manOrdId) {
return manualTechnologyMapper.seleDatil(manOrdId);
}
+
+ //鎺掍骇-->鏇存柊
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ 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());
+ }
+
+ // 鏍规嵁鎺掍骇鏁伴噺璁$畻宸ヨ壓鍛ㄦ湡
+ 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<ManufactureOrderProcess> manufactureOrderProcessList = manualTechnologyDtoList.stream().map(manualTechnologyDto1 -> {
+ ManufactureOrderProcess manufactureOrderProcess = new ManufactureOrderProcess();
+ BeanUtils.copyProperties(manualTechnologyDto1, manufactureOrderProcess);
+ technologies.forEach(i -> {
+ if (Objects.equals(manufactureOrderProcess.getManualTechnologyId(), i.getId())){
+ manufactureOrderProcess.setPeriod((int) Math.ceil((double)schedulingNumber/i.getProductionQuota()));
+ }
+ });
+ 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);
+ //灏嗚捣濮嬫棩鏈熻祴鍊肩粰Calendar瀵硅薄
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(parse);
+ //绗竴涓伐搴�
+ 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());
+ 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());
+ }
+ return manualTechnologies;
+ }
}
--
Gitblit v1.9.3