From 2d92826d942cd4c06e1f415d4a3896b99ec65e2b Mon Sep 17 00:00:00 2001 From: wu <731351411@qq.com> Date: 星期四, 07 十一月 2024 19:32:00 +0800 Subject: [PATCH] 更改配片逻辑 --- springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java | 344 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 344 insertions(+), 0 deletions(-) diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java index df711b9..401e8cf 100644 --- a/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java +++ b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java @@ -1,20 +1,30 @@ package com.example.springboot.service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.springboot.common.Result; +import com.example.springboot.component.PLCAutoMes; import com.example.springboot.component.Plchome; import com.example.springboot.component.S7control; +import com.example.springboot.entity.Flowcard; +import com.example.springboot.entity.GlassInfo; +import com.example.springboot.entity.MeasureSetting; import com.example.springboot.entity.Queue; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.StorageTask; +import com.example.springboot.entity.device.PlcParameterObject; +import com.example.springboot.mapper.AlbaniaMapper; import com.example.springboot.mapper.HomeMapper; +import com.example.springboot.mapper.QueueMapper; +import com.fasterxml.jackson.databind.ObjectMapper; @Service public class StorageCageService { @@ -25,7 +35,12 @@ private OutSliceServive outSliceServive; @Autowired + private QueueMapper QueueMapper; + + @Autowired private SpianService spianService; + @Autowired + private AlbaniaMapper albaniaMapper; public void EndTask(int types) { String A01glassid1 = spianService.queGlassid("DB103.128", 14).toString(); @@ -189,6 +204,7 @@ } else { if (id == 1) { // 璋冪敤浼嶅瓨鍌ㄨ繃绋� + System.out.println("璋冪敤涓婄墖鍑芥暟"); zhi = spianService.selectAll(queue.getglassId()); if (zhi == 200) { homeMapper.InsertQueueGlassId(queue, id); @@ -202,4 +218,332 @@ return Result.success(map); } + public List<StorageCage> SelectStorageCageInfo() { + return homeMapper.SelectStorageCageInfo(); + } + + // 澧炲姞/鍑忓皯鐞嗙墖绗肩幓鐠冩暟 + public Result UpdateStroageCageByCell(Integer cell, Integer num) { + if (num == 0) { + homeMapper.DeleteStroageCageByCell(cell); + } else { + homeMapper.updateStroageCageByCell(cell, num); + homeMapper.UpdateStroageCageWidthByCell(cell);// 淇敼绗煎瓙瀹藉害 + } + Map<String, Object> map = new HashMap<>(); + map.put("message", "200"); + return Result.success(map); + } + + // 鏌ヨ杩�/鍑虹墖浠诲姟 + public List<StorageTask> SelectStorageTask(int task_type) { + List<StorageTask> storageTasks = new ArrayList<>(); + String loadrack = "0"; + if (task_type == 0) { + storageTasks = homeMapper.SelectStorageTask(task_type); + } else { + storageTasks = homeMapper.SelectStorageTask(task_type); + } + for (StorageTask storageTask : storageTasks) { + if (task_type == 0) { + loadrack = storageTask.getLoadrack(); + } else { + loadrack = storageTask.getShelfRack(); + } + storageTask.setstorageCage(homeMapper.SelectStorageByCell(loadrack)); + } + return storageTasks; + } + + // 鏌ヨ杩�/鍑虹墖浠诲姟 + public List<GlassInfo> SelectMeasure() { + return homeMapper.SelectMeasure(); + } + // 鏌ヨ褰撳墠鑶滅郴鍘氬害 + public MeasureSetting SelectSetting() { + return homeMapper.SelectMeasureSetting(); + } + // 鏌ヨ娴嬮噺瀹介珮鍘氳啘绯� + public Map StorageCageForm() { + return homeMapper.SelectMeasureWidthHeight(); + } + + + // 鎵嬪姩瀹屾垚浠诲姟 + public Result FinishTask() { + for (int i = 1; i < 7; i++) { + int taskcont = albaniaMapper.SelectTaskcount(); // 姝e湪杩涜鐨勪换鍔℃暟閲� + System.out.println("浠诲姟鏁伴噺:"+taskcont); + if (taskcont == 0) { + break; + } + StorageTask storageTask = homeMapper.SelectStorageTaskById();// 鑾峰彇浠诲姟淇℃伅 + if (storageTask.getTaskType().equals("0")) { + System.out.println("瀹屾垚杩涚墖浠诲姟:"+storageTask.getId()); + homeMapper.FinishTask(storageTask.getId(), 1);// 瀹屾垚浠诲姟 + UpdateStroageCageByCell(Integer.parseInt(storageTask.getLoadrack()), 1);// 鐜荤拑鏁伴噺+1 + homeMapper.DeletequeueByGlassid(storageTask.getGlassId()); + } else { + System.out.println("瀹屾垚鍑虹墖浠诲姟:"+storageTask.getId()); + homeMapper.FinishTask(storageTask.getId(), 1);// 瀹屾垚浠诲姟 + StorageCage storageCage = homeMapper.SelectStorageByCell(storageTask.getShelfRack()); + if (storageCage.getNumber()==null||storageCage.getNumber() ==0) { + UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()), 0);// 娓呴櫎鏍煎唴淇℃伅 + } + // homeMapper.AddGlassNo(storageTask.getFlowcard(), storageTask.getMateid(), storageTask.geTier());// 娣诲姞鍑虹墖瀹屾垚鏁伴噺 + + } + } + Map<String, Object> map = new HashMap<>(); + map.put("message", "200"); + return Result.success(map); + } + + // 鑷姩瀹屾垚浠诲姟 + public Result LoseTask() { + for (int i = 1; i < 7; i++) { + int taskcont = albaniaMapper.SelectTaskcount(); // 姝e湪杩涜鐨勪换鍔℃暟閲� + System.out.println("浠诲姟鏁伴噺:"+taskcont); + if (taskcont == 0) { + break; + } + StorageTask storageTask = homeMapper.SelectStorageTaskById();// 鑾峰彇浠诲姟淇℃伅 + if (storageTask.getTaskType().equals("0")) { + System.out.println("瀹屾垚杩涚墖浠诲姟:"+storageTask.getId()); + homeMapper.FinishTask(storageTask.getId(), 1);// 瀹屾垚浠诲姟 + UpdateStroageCageByCell(Integer.parseInt(storageTask.getLoadrack()), 1);// 鐜荤拑鏁伴噺+1 + homeMapper.DeletequeueByGlassid(storageTask.getGlassId()); + } else { + System.out.println("瀹屾垚鍑虹墖浠诲姟:"+storageTask.getId()); + homeMapper.FinishTask(storageTask.getId(), 1);// 瀹屾垚浠诲姟 + StorageCage storageCage = homeMapper.SelectStorageByCell(storageTask.getShelfRack()); + if (storageCage.getNumber() > 1) { + UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()), -1);// 鐜荤拑鏁伴噺-1 + } else { + UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()), 0);// 娓呴櫎鏍煎唴淇℃伅 + } + homeMapper.AddGlassNo(storageTask.getFlowcard(), storageTask.getMateid(), storageTask.geTier());// 娣诲姞鍑虹墖瀹屾垚鏁伴噺 + + } + } + Map<String, Object> map = new HashMap<>(); + map.put("message", "200"); + return Result.success(map); + } + + // 鏌ヨ鐜荤拑淇℃伅 + public Result SelectGlassInfo(String width, String height, String thickness, String films) { + List<GlassInfo> glassInfoList = homeMapper.SelectGlassInfo(width, height, thickness, films); + Map<String, Object> map = new HashMap<>(); + map.put("StorageCageAddInfo", glassInfoList); + return Result.success(map); + } + + // 娣诲姞鐜荤拑鍒版牸瀛愬唴 + public Result StorageCageAddGlass(String cell, GlassInfo glassInfo) { + homeMapper.StorageCageAddGlass(cell, glassInfo); + UpdateStroageCageByCell(Integer.parseInt(cell), 1); + Map<String, Object> map = new HashMap<>(); + map.put("message", "200"); + return Result.success(map); + } + + // 鏌ヨ璁㈠崟浠诲姟 + public List<Flowcard> SelectOrderTask() { + List<Flowcard> OrderTask = homeMapper.SelectOrderTask(); + for (Flowcard flowcard : OrderTask) { + flowcard.setglassinfo(homeMapper.SelectOrderView(flowcard.getFlowcard())); + } + return OrderTask; + } + + // 寮�濮嬪嚭鐗� + public Result ClaimTasks(String flowcard, Integer state, Integer line) { + int count = homeMapper.SelectTaskCount(flowcard, line); + Map<String, Object> map = new HashMap<>(); + if (count == 0) { + if (state == 1) { + homeMapper.ClaimTasks(flowcard, 0, line); + } else { + homeMapper.ClaimTasks(flowcard, 1, line); + } + map.put("message", "200"); + } else { + map.put("message", "300"); + } + + return Result.success(map); + } + + // 浠诲姟妯″紡淇敼 + public Result ModeChange(String flowcard, Integer method) { + if (method == 1) { + homeMapper.ModeChange(flowcard, 0); + } else { + homeMapper.ModeChange(flowcard, 1); + } + Map<String, Object> map = new HashMap<>(); + map.put("message", "200"); + return Result.success(map); + } + + // 淇敼娴嬮噺淇℃伅 + public Result UpdateQueue(GlassInfo glassInfo) { + // 鍒犻櫎鏁版嵁 + QueueMapper.DeleteQueue(); + homeMapper.AddQueue(glassInfo.getFlowcard(), glassInfo.getWidth(), glassInfo.getHeight(), + glassInfo.getGlasstype(), glassInfo.getThickness(), glassInfo.getTier(),glassInfo.getMateid()); + Map<String, Object> map = new HashMap<>(); + PlcParameterObject plcmes = PLCAutoMes.PlcMesObject; + S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1); + map.put("message", "200"); + return Result.success(map); + } + + public List<StorageCage> SelectStorageCageByCage(int cage) { + return homeMapper.SelectStorageCageByCage(cage); + } + + // 浜哄伐鎷胯蛋 + public Result ManualTake(String glassInfo) { + // 璇诲彇DB105鍖烘枃浠� + PlcParameterObject plcmes = PLCAutoMes.PlcMesObject; + // 绉婚櫎 + S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 3); + // 鍒犻櫎鏁版嵁 + QueueMapper.DeleteErrorQueue(); + + // plcmes.getPlcParameter("GaToMES").setValue("3"); + Map<String, Object> map = new HashMap<>(); + map.put("message", "200"); + return Result.success(map); + } + + // 寮�濮嬩笂鐗� + public Result StartChange(String flowcard,int orderstate) { + homeMapper.StartChange(flowcard, orderstate); + Map<String, Object> map = new HashMap<>(); + int state = homeMapper.selectStartChange(flowcard); + map.put("message", "200"); + return Result.success(map); + } + + // 鍒犻櫎宸ョ▼ + public Result deleteTasks(Map num) { + String flowcard = (String) num.get("num"); + int aa = homeMapper.deleteFlowcard(flowcard.trim()); + homeMapper.deleteGlassinfo(flowcard.trim()); + System.out.println(flowcard); + Map<String, Object> map = new HashMap<>(); + map.put("message", flowcard.trim()); + return Result.success(map); + } + + // 淇濆瓨娴嬮噺璁剧疆 + public Result SaveMeasure(String films, Integer thickness) { + int Measure = homeMapper.SaveMeasure(films, thickness); + Map<String, Object> map = new HashMap<>(); + map.put("message", Measure); + return Result.success(map); + } + + // 閲嶆柊娴嬮噺 + public Result AnewMeasure(String glassInfo) { + // 璇诲彇DB105鍖烘枃浠� + PlcParameterObject plcmes = PLCAutoMes.PlcMesObject; + // 閲嶆柊娴嬮噺 + S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 2); + // 鍒犻櫎鏁版嵁 + QueueMapper.DeleteErrorQueue(); + // plcmes.getPlcParameter("GaToMES").setValue("2"); + Map<String, Object> map = new HashMap<>(); + map.put("message", "200"); + return Result.success(map); + } + + // 娣诲姞灏忕墖淇℃伅 + public Result AddGlassinfo(List<Map> IportDataStr) { + + // 绛涢�夊鐞嗘暟鎹� 1.鍘婚櫎鏃犵敤鏁版嵁 2.璁$畻閰嶇墖ID 3.璁$畻ID 4. 璁$畻鎬诲眰鏁� + List<Map> TypeDatas = homeMapper.SelectType(); + Map<String, String> TypeData = new HashMap<String, String>();// 寰楀埌澶勭悊瀹屽悗鎵�鏈夌殑绫诲瀷 + Map<String, Integer> groupby = new HashMap<String, Integer>(); // 寰楀埌澶勭悊瀹屽悗鎵�鏈夋�诲眰鏁�; + Map<String, Integer> OrderFinishedProduct = new HashMap<String, Integer>(); // 寰楀埌澶勭悊瀹屽悗璁㈠崟鎴愬搧鎬绘暟閲�; + // "order zong 0 1 10 2 10" + List<Map> RemoveErrorData = IportDataStr.stream() + .filter(item -> (item.get("order") != null && item.get("tier") != null + && + item.get("films") != null && item.get("base") != null && item.get("height") != null + && item.get("thickness") != null && item.get("quantity") != null + && item.get("matching") != null)) + .collect(Collectors.toList()); + + TypeDatas.forEach(item -> { + TypeData.put(item.get("type").toString(), item.get("glasstype").toString()); + }); + + RemoveErrorData.forEach(item -> { + String key = item.get("order").toString() + "_" + item.get("matching").toString(); + String keyCount = item.get("order").toString() + "_" + item.get("matching").toString() + "_" + + item.get("tier").toString(); + String keyCountSum = item.get("order").toString() + "_" + item.get("matching").toString() + "_Sum";// 璁㈠崟鎬绘暟 + if (OrderFinishedProduct.get(keyCount) != null) { + Integer count = OrderFinishedProduct.get(keyCount) + 1; + Integer sumcount = OrderFinishedProduct.get(keyCountSum) + + Integer.parseInt(item.get("quantity").toString()); + OrderFinishedProduct.put(keyCount, count); + OrderFinishedProduct.put(keyCountSum, sumcount); + } else if (OrderFinishedProduct.get(keyCount) == null && groupby.get(key) == null) { + OrderFinishedProduct.put(keyCount, 1); + OrderFinishedProduct.put(keyCountSum, Integer.parseInt(item.get("quantity").toString())); + } + if (groupby.get(key) != null) { + Integer Tiers = groupby.get(key) + 1; + groupby.put(key, Tiers); + } else { + groupby.put(key, 1); + } + }); + + System.out.println(RemoveErrorData.size()); + // 澶勭悊瀹屾垚 娣诲姞鏁版嵁搴� + int count = 1; + for (Map map : RemoveErrorData) { + String key = map.get("base").toString() + "_" + map.get("height").toString() + "_" + + map.get("thickness").toString() + "_" + map.get("films").toString()+ "_" + map.get("order").toString(); + + String tierkey = map.get("order").toString() + "_" + map.get("matching").toString(); + + String value = TypeData.get(key); + Integer glasstype; + System.out.println(key + ":" + TypeData.get(key)); + if (TypeData.get(key) == null) { + + glasstype = homeMapper.SelectMaxTypes(key); + if (glasstype == null) { + glasstype = homeMapper.SelectMaxType(); + } + if (glasstype == null) { + glasstype = 1; + } + } else { + glasstype = Integer.valueOf(value); + } + // + homeMapper.AddGlassinfo(map.get("order").toString(), glasstype, + Integer.parseInt(map.get("matching").toString()) // 闇�瑕佽绠� 閰嶇墖ID + , map.get("order").toString() + "-" + count + "" // 闇�瑕佽绠� 鐜荤拑ID + , Integer.parseInt(map.get("tier").toString()), map.get("films").toString(), + Double.parseDouble(map.get("base").toString()), Double.parseDouble(map.get("height").toString()), + Double.parseDouble(map.get("thickness").toString()), + Integer.parseInt(map.get("quantity").toString()), groupby.get(tierkey));// 闇�瑕佽绠楁�诲眰鏁� + // 璁㈠崟鍐呮�诲眰鏁� + homeMapper.InsertFlowcard(map.get("order").toString(), OrderFinishedProduct.get(tierkey + "_Sum")); + count++; + } + Map<String, Object> ResultCode = new HashMap<>(); + ResultCode.put("message", "200"); + return Result.success(ResultCode); + } + } -- Gitblit v1.8.0