package com.example.erp.service.pp; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.erp.common.Constants; import com.example.erp.entity.pp.FlowCard; import com.example.erp.entity.sd.*; import com.example.erp.entity.userInfo.Log; import com.example.erp.exception.ServiceException; import com.example.erp.mapper.pp.FlowCardMapper; import com.example.erp.mapper.sd.*; import com.example.erp.service.userInfo.LogService; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.util.List; import java.util.Map; import com.fasterxml.jackson.core.type.TypeReference; import java.io.IOException; import java.sql.Date; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; import static com.example.erp.service.sd.OrderService.getOrderProcessDetails; @Service @DS("pp") public class FlowCardService { final FlowCardMapper flowCardMapper; final OrderGlassDetailMapper orderGlassDetailMapper; final OrderProcessDetailMapper orderProcessDetailMapper; final LogService logService; private final ProductMapper productMapper; private final ProductDetailMapper productDetailMapper; private final OrderDetailMapper orderDetailMapper; private final OrderMapper orderMapper; public FlowCardService(FlowCardMapper flowCardMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, LogService logService, ProductMapper productMapper, ProductDetailMapper productDetailMapper, OrderDetailMapper orderDetailMapper, OrderMapper orderMapper) { this.flowCardMapper = flowCardMapper; this.orderGlassDetailMapper = orderGlassDetailMapper; this.orderProcessDetailMapper = orderProcessDetailMapper; this.logService = logService; this.productMapper = productMapper; this.productDetailMapper = productDetailMapper; this.orderDetailMapper = orderDetailMapper; this.orderMapper = orderMapper; } //流程卡管理查询 public Map selectProcessCard(Integer pageNum, Integer pageSize,List selectDate, FlowCard flowCard) { Integer offset = (pageNum - 1) * pageSize; String endDate = LocalDate.now().toString(); String startDate = LocalDate.now().minusDays(15).toString(); if(selectDate !=null && selectDate.size()==2){ if(!selectDate.get(0).isEmpty()){ startDate = selectDate.get(0); } if(!selectDate.get(1).isEmpty()){ endDate = selectDate.get(1); } } Map map = new HashMap<>(); map.put("data", flowCardMapper.selectFlowCard(offset, pageSize, startDate, endDate, flowCard)); map.put("total", flowCardMapper.getPageTotal(offset, pageSize, startDate, endDate, flowCard)); List list = new ArrayList<>(); list.add(startDate); list.add(endDate); map.put("selectDate",list); return map; } //分架查询 public Map selectAddProcess(Date selectTime1, Date selectTime2, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.selectFlowCardMp(selectTime1, selectTime2, flowCard)); return map; } //分架明细查询 public Map detailsSelectSv(String orderId, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.detailsSelectMp(orderId, flowCard)); return map; } //删除流程卡 public Boolean deleteFlowCardSv(String orderId, String processId, String userId, String userName) { if (!orderId.isEmpty() && !processId.isEmpty()) { //判断该流程卡是否报工 Integer count = flowCardMapper.reportingWorkCount(processId); if (count == 0) { //修改分架状态 flowCardMapper.updateDeleteState(orderId, processId); //删除报工流程明细表数据 flowCardMapper.deleteReportingWork(processId); //删除分架明细 flowCardMapper.deleteFlowCardMp(orderId, processId); //删除排序表数据 flowCardMapper.deleteflowCardSort(orderId, processId); //判断该订单流程卡是否全部删除 Integer flowNumber = flowCardMapper.selectFlowCardCount(orderId); if (flowNumber == 0) { //修改订单表分架状态为0,全部删除 flowCardMapper.updateProcessingCard(orderId, 0); } else { //修改订单表分架状态为1,删除部分 flowCardMapper.updateProcessingCard(orderId, 1); } //保存日志 Log log = new Log(); log.setContent(orderId + processId); log.setFunction("deleteFlowCardSv流程卡删除"); log.setOperatorId(userId); log.setOperator(userName); logService.saveLog(log); return true; } else { return false; } } else { return false; } } //分架新增明细查询 public Map selectNoCardSv(String orderId, String productionId, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.selectNoCardMp(orderId, productionId, flowCard)); map.put("maxFlowCard", flowCardMapper.selectMaxFlowCard(orderId, productionId)); map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney()); return map; } //修改排版状态 public Boolean updateLayoutStatusSv(String processId, Integer state) { if (!processId.isEmpty()) { flowCardMapper.updateLayoutStatusMp(processId, state); return true; } else { return false; } } //保存流程卡数据 public Boolean addFlowCardSv(String orderId, Map object) { String userName = ""; if (object.get("userName") != null) { userName = object.get("userName").toString(); } String productionId = ""; if (object.get("productionId") != null) { productionId = object.get("productionId").toString(); } List FlowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class); if (!FlowCardList.isEmpty()) { for (FlowCard flowCard : FlowCardList) { //查询每个序号的层数 Integer layer = flowCardMapper.selectLayer(productionId, flowCard.getOrderNumber()); //添加流程卡数据 flowCardMapper.addFlowCardMp(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getLandingSequence(), flowCard.getQuantity(), productionId, userName, layer); //修改分架状态,将状态改为1 flowCardMapper.updateFlowState(productionId, flowCard.getOrderNumber()); //查询该订单未分架数量 Integer FlowCount = flowCardMapper.selectFlowCount(orderId); if (FlowCount == 0) { //修改订单表分架状态为2 flowCardMapper.updateProcessingCard(orderId, 2); } else { //修改订单表分架状态为1,未全部分架完成 flowCardMapper.updateProcessingCard(orderId, 1); } //查询订单小片表获取工艺传入小片工艺表 List orderGlassDetailList = orderGlassDetailMapper.selectList( new QueryWrapper() .eq("order_id", orderId) .eq("order_number", flowCard.getOrderNumber()) ); List orderProcessDetailList = getOrderProcessDetails(orderGlassDetailList); orderProcessDetailList.forEach( orderGlassDetail -> orderGlassDetail.setProcessId(flowCard.getProcessId())); //赋值订单工艺表 orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList); } //保存日志 Log log = new Log(); log.setContent(object.toString()); log.setFunction("addFlowCardSv流程卡新增"); log.setOperatorId((String) object.get("userId")); log.setOperator((String) object.get("userName")); logService.saveLog(log); return true; } else { return false; } } public Map selectSchedulingSv(String selectTime1, String selectTime2, String orderId, String processes, Integer state, FlowCard flowCard) { Map map = new HashMap<>(); if (state == 2) {//已排产 map.put("data", flowCardMapper.selectOkSchedulingMp(selectTime1, selectTime2, orderId, processes, flowCard)); } else if (state == 1) {//未排产 map.put("data", flowCardMapper.selectNoSchedulingMp(selectTime1, selectTime2, orderId, processes, flowCard)); } return map; } //首次查询排版数据 public Map selectLastScheduling(String selectTime1, String selectTime2, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.selectLastSchedulingMp(selectTime1, selectTime2, flowCard)); return map; } public Object flowCardDetailSv(String processId, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.flowCardDetailMp(processId, flowCard)); map.put("merge", flowCardMapper.flowCardDetailMergeMp(processId)); return map; } public Object selectPrintFlowCardSv(Date selectTime1, Date selectTime2, String orderId, String project, String userId, Integer state, FlowCard flowCard) { if ("null".equals(orderId)) { orderId = ""; } if ("null".equals(project)) { project = ""; } Map map = new HashMap<>(); map.put("data", flowCardMapper.selectPrintFlowCardMp(selectTime1, selectTime2, orderId, project,state, flowCard)); String roleId = flowCardMapper.selectUserMp(userId); map.put("user", roleId); return map; } public Object selectPrintFlowCard(Date selectTime1, Date selectTime2) { Map map = new HashMap<>(); map.put("data", flowCardMapper.selectPrintFlowCard(selectTime1, selectTime2)); return map; } public Object selectPrintSv(Map object, String inquiryMode) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); if ("1".equals(inquiryMode)) {//合并流程卡 itemmap.put("detail", flowCardMapper.selectPrintMp(flowCard.getOrderId())); } else if ("3".equals(inquiryMode)) {//合并流程卡不按配置显示 itemmap.put("detail", flowCardMapper.selectPrintAllMp(flowCard.getOrderId())); } else {//非合并流程卡 itemmap.put("detail", flowCardMapper.selectPrintNotMp(flowCard.getOrderId())); } list.add(itemmap); } } map.put("data", list); map.put("type", flowCardMapper.selectType()); return map; } private static Map parseJson(String json) { ObjectMapper objectMapper = new ObjectMapper(); try { return objectMapper.readValue(json, new TypeReference>() { }); } catch (IOException e) { e.printStackTrace(); return null; } } public Map getSelectPrintingSv(Map object, String printMerge, String printLike, String merge, String flashback, String compound) { if (printMerge == null) { printMerge = ""; } if (printLike == null) { printLike = ""; } if (merge == null) { merge = ""; } Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { Set processedKeys = new HashSet<>(); for (FlowCard flowCard : flowCardList) { String processId = flowCard.getProcessId(); Integer orderNumber = flowCard.getOrderNumber(); String uniqueKey = processId + "|" + orderNumber; // 用特殊字符连接防止冲突 Map itemmap = new HashMap<>(); //流程卡表头表尾数据 //是否传入合并层数 if (printMerge.equals("") || printMerge.equals("null")) { //是否包含切割 //boolean containsCutting = flowCard.getProcess().contains("切割"); String processSub = flowCard.getProcess().substring(0, 2); //获取工序对应的别称 String processName = flowCardMapper.getProcessName(processSub); if (processName.equals("stepC") || processName.equals("stepD")) {//工艺是否包含夹胶中空 itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), String.valueOf("null".equals(compound) ? flowCard.getTechnologyNumber()//正常层 : compound ),//同架层 flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); if (compound == null || "null".equals(compound) || compound.trim().isEmpty()){ List> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(),flashback); itemmap.put("detailList", detailList); }else {//有需要同架的层 List> detailList = flowCardMapper.getDetailCompoundList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(),flashback,compound); itemmap.put("detailList", detailList); } } else { if (merge.equals("1") && flowCard.getMerge().equals(1)) {//否 // 检查是否已经处理过该 processId,如果处理过则跳过 if (processedKeys.contains(uniqueKey)) { continue; } // 将该 processId 加入已处理集合 processedKeys.add(uniqueKey); itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListMerge(flowCard.getProcessId(), flowCard.getProcess(),flashback); itemmap.put("detailList", detailList); } else { itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), String.valueOf("null".equals(compound) ? flowCard.getTechnologyNumber()//正常层 : compound ),//同架层 flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); if (compound == null || "null".equals(compound) || compound.trim().isEmpty()){ List> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback); itemmap.put("detailList", detailList); }else {//有需要同架的层 List> detailList = flowCardMapper.getDetailListLikeCompound(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(),flashback,compound); itemmap.put("detailList", detailList); } } } } else {//否 //流程卡明细数据 if (printLike.equals("") || printLike.equals("null")) { itemmap.put("detail", flowCardMapper.getPrimaryListMerge(flowCard.getProcessId(), printMerge, flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flashback); itemmap.put("detailList", detailList); } else { itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), printMerge, flowCard.getProcess(), flashback); itemmap.put("detailList", detailList); } } //工艺流程 //List> processList = flowCardMapper.getProcessList(flowCard.getProcessId(), flowCard.getTechnologyNumber()); String input = flowCard.getProcess(); String delimiter = "->"; // 分割字符串 String[] parts = input.split(delimiter); // 创建 List> List> processList = new ArrayList<>(); // 遍历分割后的部分并将其存入 List> for (int i = 0; i < parts.length; i++) { Map maps = new HashMap<>(); maps.put("id", i); // 添加一个索引字段 maps.put("process", parts[i]); // 添加实际的值 processList.add(maps); } itemmap.put("processList", processList); // itemmap.put("numberList", numberList); itemmap.put("count", flowCardMapper.countFlowCard(flowCard.getOrderId())); itemmap.put("remarkList", flowCardMapper.remakList(flowCard.getProcessId())); list.add(itemmap); } } map.put("data", list); //初始化值 printLike = null; return map; } public Map getSelectPrintProject(String printProject, String merge, String flashback) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 if (merge == null) { merge = ""; } List flowCardList = flowCardMapper.getFlowCardListPrintProject(printProject); if (!flowCardList.isEmpty()) { Set processedKeys = new HashSet<>(); for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); String processId = flowCard.getProcessId(); Integer orderNumber = flowCard.getOrderNumber(); String uniqueKey = processId + "|" + orderNumber; // 用特殊字符连接防止冲突 //是否包含切割 //boolean containsCutting = flowCard.getProcess().contains("切割"); String processSub = flowCard.getProcess().substring(0, 2); //获取工序对应的别称 String processName = flowCardMapper.getProcessName(processSub); if (processName.equals("stepC") || processName.equals("stepD")) {//工艺是否包含夹胶中空 itemmap.put("detail", flowCardMapper.getPrimaryListLimt(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); if (flowCard.getPatchState().equals(0)) { List> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flashback); itemmap.put("detailList", detailList); } else { List> detailList = flowCardMapper.getDetailLists(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess(), flowCard.getOrderNumber()); itemmap.put("detailList", detailList); } } else { if (flowCard.getPatchState().equals(0)) { if (merge.equals("1") && flowCard.getMerge().equals(1)) { // 检查是否已经处理过该 processId,如果处理过则跳过 if (processedKeys.contains(uniqueKey)) { continue; } // 将该 processId 加入已处理集合 processedKeys.add(uniqueKey); itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListMerge(flowCard.getProcessId(), flowCard.getProcess(), flashback); itemmap.put("detailList", detailList); } else { itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListLike(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(), flashback); itemmap.put("detailList", detailList); } } else { itemmap.put("detail", flowCardMapper.getPrimaryLists(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getGlassChild(), flowCard.getProcess(), flowCard.getOrderId(), flowCard.getQuantity())); List> detailList = flowCardMapper.getDetailListLikes(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getProcess(), printProject, flowCard.getQuantity()); itemmap.put("detailList", detailList); } } //工艺流程 //List> processList = flowCardMapper.getProcessList(flowCard.getProcessId(), flowCard.getTechnologyNumber()); String input = flowCard.getProcess(); String delimiter = "->"; // 分割字符串 String[] parts = input.split(delimiter); // 创建 List> List> processList = new ArrayList<>(); // 遍历分割后的部分并将其存入 List> for (int i = 0; i < parts.length; i++) { Map maps = new HashMap<>(); maps.put("id", i); // 添加一个索引字段 maps.put("process", parts[i]); // 添加实际的值 processList.add(maps); } itemmap.put("processList", processList); // itemmap.put("numberList", numberList); if (flowCard.getPatchState().equals(0)) { itemmap.put("count", flowCardMapper.countFlowCard(flowCard.getOrderId())); } else { itemmap.put("count", flowCardList.size()); } itemmap.put("state", flowCard.getPatchState()); itemmap.put("remarkList", flowCardMapper.remakList(flowCard.getProcessId())); list.add(itemmap); } } map.put("data", list); return map; } public Boolean updateComposingSv(Map object) { List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("composing")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { flowCardMapper.updateComposing(flowCard.getProcessId()); } return true; } else { return false; } } public Boolean updateProcessCardRack(Map object) { List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("composing")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { flowCardMapper.updateProcessCardRack(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getRack()); } return true; } else { return false; } } public Map getSelectPrintLabelSv(String projectNo, String type) { Map map = new HashMap<>(); if (Objects.equals(type, "1")) { map.put("data", flowCardMapper.getPrintLabel(projectNo)); } else if (Objects.equals(type, "2")) { map.put("data", flowCardMapper.getPrintLabel2(projectNo)); } else if (Objects.equals(type, "3")) { map.put("data", flowCardMapper.getPrintLabel3(projectNo)); } return map; } public Map getSelectPrintLabelSv1(Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintLabel1(flowCard.getProcessId(), flowCard.getTechnologyNumber())); list.add(itemmap); } } map.put("data", list); return map; } public Map getSelectPrintLabelDetails(Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintLabelDetail(flowCard)); list.add(itemmap); } } map.put("data", list); return map; } public Map printFlowCardDetailsSv(String processId, String technologyNumber, String process, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.printFlowCardDetailsMp(processId, technologyNumber, process, flowCard)); return map; } public Boolean printSortSv(Map object) { List FlowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class); if (!FlowCardList.isEmpty()) { for (FlowCard flowCard : FlowCardList) { //判断保存的数据是否已存在 Integer count = flowCardMapper.printAddSortCountMp(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getTechnologyNumber(), flowCard.getSort(), flowCard.getProcess()); if (count > 0) { flowCardMapper.printUpdateSortMp(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getTechnologyNumber(), flowCard.getSort(), flowCard.getProcess()); } else { flowCardMapper.printAddSortMp(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getTechnologyNumber(), flowCard.getSort(), flowCard.getProcess()); } } } return true; } public Map getSelectPrintCustomLabelSv(String type, Integer lableType, Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { Set processedKeys = new HashSet<>(); if (lableType != 2) {//成品标签 for (FlowCard flowCard : flowCardList) { String processId = flowCard.getProcessId(); Integer orderNumber = flowCard.getOrderNumber(); String uniqueKey = processId + "|" + orderNumber; // 用特殊字符连接防止冲突 // 检查是否已经处理过该 processId,如果处理过则跳过 if (processedKeys.contains(uniqueKey)) { continue; } Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintCustomData(flowCard.getProcessId(), flowCard.getOrderNumber())); list.add(itemmap); // 将该 processId 加入已处理集合 processedKeys.add(uniqueKey); } } else {//小片标签 for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess())); list.add(itemmap); } } } map.put("data", list); map.put("title", flowCardMapper.getPrintTitle(type)); return map; } public Map getSelectPrintCustomLabelSv2(String type, Integer lableType, Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { Set processedKeys = new HashSet<>(); if (lableType != 2) {//成品标签 for (FlowCard flowCard : flowCardList) { String processId = flowCard.getProcessId(); Integer orderNumber = flowCard.getOrderNumber(); String uniqueKey = processId + "|" + orderNumber; // 用特殊字符连接防止冲突 // 检查是否已经处理过该 processId,如果处理过则跳过 if (processedKeys.contains(uniqueKey)) { continue; } Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintCustomData2(flowCard.getProcessId())); list.add(itemmap); // 将该 processId 加入已处理集合 processedKeys.add(uniqueKey); } } else {//小片标签 for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess())); list.add(itemmap); } } } map.put("data", list); map.put("title", flowCardMapper.getPrintTitle(type)); return map; } public Object getCustomLabelDetailSv(String name, String form, String id, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.getCustomLabelDetailMp(name, form, id, flowCard)); return map; } public Boolean updatePrintStateSv(Integer printState, Map object) { List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { // 更新打印状态 flowCardMapper.updatePrintStateMp(printState, flowCard.getProcessId(), flowCard.getTechnologyNumber()); } return true; } else { return false; } } public Map printFlowCardOrderSortSv(String orderId, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.printFlowCardOrderSortMp(orderId, flowCard)); return map; } public Boolean printOrderSort(Map object) { List FlowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class); if (!FlowCardList.isEmpty()) { for (FlowCard flowCard : FlowCardList) { flowCardMapper.printOrderSortMp(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getTechnologyNumber(), flowCard.getSort()); } } return true; } public Map getSelectPrintingRefundSv(Map object, String printMerge, String printLike, String mergeTechnologyNumber) { if (printMerge == null) { printMerge = ""; } if (printLike == null) { printLike = ""; } Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); //流程卡表头表尾数据 //是否传入合并层数 if (printMerge.equals("") || printMerge.equals("null")) { itemmap.put("detail", flowCardMapper.getPrimaryListRefund(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), mergeTechnologyNumber, flowCard.getPatchReason(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListRefund(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), flowCard.getPatchReason()); itemmap.put("detailList", detailList); } else { //流程卡明细数据 if (printLike.equals("") || printLike.equals("null")) { itemmap.put("detail", flowCardMapper.getPrimaryListMergeRefund(flowCard.getProcessId(), printMerge, flowCard.getOrderNumber(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListRefund(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), flowCard.getPatchReason()); itemmap.put("detailList", detailList); } else { itemmap.put("detail", flowCardMapper.getPrimaryListRefund(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), mergeTechnologyNumber, flowCard.getPatchReason(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListLikeRefund(flowCard.getProcessId(), printMerge, flowCard.getOrderNumber(), flowCard.getReportingWorkId()); itemmap.put("detailList", detailList); } } //工艺流程 List> processList = flowCardMapper.getProcessList(flowCard.getProcessId(), flowCard.getTechnologyNumber()); //工序列表 List> processNameList = flowCardMapper.getProcessNameList(); itemmap.put("processList", processList); itemmap.put("processNameList", processNameList); // itemmap.put("numberList", numberList); list.add(itemmap); } } map.put("data", list); //初始化值 printLike = null; return map; } public Map getSelectPrinReworkSv(Map object, String printMerge, String printLike) { if (printMerge == null) { printMerge = ""; } if (printLike == null) { printLike = ""; } Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); //流程卡表头表尾数据 //是否传入合并层数 if (printMerge.equals("") || printMerge.equals("null")) { itemmap.put("detail", flowCardMapper.getPrimaryListRework(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListRework(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getOrderNumber(), flowCard.getReportingWorkId()); itemmap.put("detailList", detailList); } else { //流程卡明细数据 if (printLike.equals("") || printLike.equals("null")) { itemmap.put("detail", flowCardMapper.getPrimaryListMergeRework(flowCard.getProcessId(), printMerge, flowCard.getOrderNumber(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListRework(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getOrderNumber(), flowCard.getReportingWorkId()); itemmap.put("detailList", detailList); } else { itemmap.put("detail", flowCardMapper.getPrimaryListRework(flowCard.getProcessId(), String.valueOf(flowCard.getTechnologyNumber()), flowCard.getOrderNumber(), flowCard.getReportingWorkId(), flowCard.getOrderId())); List> detailList = flowCardMapper.getDetailListLikeRework(flowCard.getProcessId(), printMerge, flowCard.getOrderNumber(), flowCard.getReportingWorkId()); itemmap.put("detailList", detailList); } } //工艺流程 List> processList = flowCardMapper.getProcessList(flowCard.getProcessId(), flowCard.getTechnologyNumber()); itemmap.put("processList", processList); // itemmap.put("numberList", numberList); list.add(itemmap); } } map.put("data", list); //初始化值 printLike = null; return map; } public Object selectPrintDetailsSv(Map object, String inquiryMode, Integer type) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); if (type == 1) {//明细打印 itemmap.put("detail", flowCardMapper.selectPrintDetailsMp(flowCard.getOrderId())); } else if (type == 2) {//明细分架打印 itemmap.put("detail", flowCardMapper.selectPrintDetailsMp1(flowCard.getOrderId())); }else if (type == 3) {//订单打印 itemmap.put("detail", flowCardMapper.selectPrintDetailsMp2(flowCard.getOrderId())); } list.add(itemmap); } } map.put("data", list); map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney()); map.put("type", flowCardMapper.selectType()); return map; } public Map getSelectPrintCustomLabelDetailsSv(String type, Integer lableType, Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { Set processedKeys = new HashSet<>(); if (lableType != 2) {//成品标签 for (FlowCard flowCard : flowCardList) { String orderId = flowCard.getOrderId(); String processId = flowCard.getProcessId(); String orderNumber = flowCard.getOrderNumber().toString(); String uniqueKey = processId + "|" + orderNumber; // 用特殊字符连接防止冲突 if (processId!=null){ // 检查是否已经处理过该 processId,如果处理过则跳过 if (processedKeys.contains(uniqueKey)) { continue; } Map itemmap = new HashMap<>(); Integer sumQuantity = flowCardMapper.getSumQuantity(flowCard.getOrderId()); List> details = flowCardMapper.getPrintCustomDataDetails(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getPrintQuantity()); for (Map detail : details) { detail.put("sumQuantity", sumQuantity); } itemmap.put("data", details); list.add(itemmap); // 将该 processId 加入已处理集合 processedKeys.add(uniqueKey); } else{ Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintOrderDataDetails(flowCard.getOrderId(), flowCard.getOrderNumber(), flowCard.getPrintQuantity())); list.add(itemmap); } } } else {//小片标签 for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.getPrintCustomDataSemi(flowCard.getProcessId(), flowCard.getTechnologyNumber(), flowCard.getProcess())); list.add(itemmap); } } } map.put("data", list); map.put("title", flowCardMapper.getPrintTitle(type)); return map; } public Map getPrintCustomDataProjectNo(String type, String projectNo) { Map map = new HashMap<>(); map.put("data", flowCardMapper.getPrintCustomDataProjectNo(projectNo)); map.put("title", flowCardMapper.getPrintTitle(type)); return map; } public Object selectSortTableSv(Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); itemmap.put("data", flowCardMapper.selectSortTableMp(flowCard.getOrderId())); list.add(itemmap); } } map.put("data", list); return map; } public String mergeFlowCard(Map object, Integer merge) { String returns = "false"; List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class); if (!flowCardList.isEmpty()) { List> flowCardList1 = flowCardMapper.selectFlowCardMerge(flowCardList.get(0).getProcessId()); if (merge == 0){ int index = 1; for (int i = 0; i < flowCardList1.size(); i++) { if (Integer.valueOf(flowCardList1.get(i).get("count2").toString()) > 1) { List technologyNumber = Arrays.stream(flowCardList1.get(i).get("count1").toString().split(",")) .map(Integer::parseInt) .collect(Collectors.toList()); flowCardMapper.updateFlowCardMerge(flowCardList.get(0).getProcessId(), technologyNumber, index); index += 1; returns = "true"; } } }else {//取消合并 flowCardMapper.updateFlowCardIsMerge(flowCardList.get(0).getProcessId()); returns = "true"; } } return returns; } public List getProcessCard(Map processCards) { String processCard = processCards.get("processCard"); if (!processCard.contains("/")) { throw new ServiceException(Constants.Code_600, "错误的流程卡号,请检查!"); } String[] processCardList = processCard.split("/"); List result = IntStream.range(0, processCardList[1].length()) .mapToObj(i -> String.valueOf(processCardList[1].charAt(i))) .collect(Collectors.toList()); List flowCardList = flowCardMapper.selectList( new QueryWrapper() .eq("process_id", processCardList[0]) .in("technology_number", result) ); for (FlowCard flowCard : flowCardList) { flowCard.setOrderGlassDetail( orderGlassDetailMapper.selectOne( new QueryWrapper() .eq("order_id", flowCard.getOrderId()) .eq("order_number", flowCard.getOrderNumber()) .eq("technology_number", flowCard.getTechnologyNumber()) ) ); String str = flowCard.getOrderGlassDetail().getGlassChild(); String delimiter = "mm"; int index = str.indexOf(delimiter); Integer subString = Integer.valueOf(str.substring(0, index).trim()); flowCard.getOrderGlassDetail().setThickness(subString); } return flowCardList; } public Map getProcessCardAll(Map processCards) { String processCard = processCards.get("processCard"); if (!processCard.contains("/")) { throw new ServiceException(Constants.Code_600, "错误的流程卡号,请检查!"); } String[] processCardList = processCard.split("/"); List result = IntStream.range(0, processCardList[1].length()) .mapToObj(i -> String.valueOf(processCardList[1].charAt(i))) .collect(Collectors.toList()); List flowCardList = flowCardMapper.selectList( new QueryWrapper() .eq("process_id", processCardList[0]) .in("technology_number", result) ); for (FlowCard flowCard : flowCardList) { flowCard.setOrderGlassDetail( orderGlassDetailMapper.selectOne( new QueryWrapper() .eq("order_id", flowCard.getOrderId()) .eq("order_number", flowCard.getOrderNumber()) .eq("technology_number", flowCard.getTechnologyNumber()) ) ); String str = flowCard.getOrderGlassDetail().getGlassChild(); String delimiter = "mm"; int index = str.indexOf(delimiter); Integer subString = Integer.valueOf(str.substring(0, index).trim()); flowCard.getOrderGlassDetail().setThickness(subString); } OrderDetail orderDetail = orderDetailMapper .selectOne(new QueryWrapper() .eq("order_id", flowCardList.get(0).getOrderId()) .eq("order_number", flowCardList.get(0).getOrderNumber()) ); Product product = productMapper .selectOne(new QueryWrapper() .eq("id",orderDetail.getProductId())); product.setProductDetails(productDetailMapper .selectList(new QueryWrapper() .eq("prod_id",orderDetail.getProductId()) ) ); Order order = orderMapper. selectOne(new QueryWrapper() .eq("order_id", flowCardList.get(0).getOrderId())); order.setMoney(null); Map map = new HashMap<>(); map.put("product",product); map.put("flowCard",flowCardList); map.put("order",order); return map; } public Boolean checkboxDeleteSv(Map object) { String userName = ""; if (object.get("userName") != null) { userName = object.get("userName").toString(); } String userId = ""; if (object.get("userId") != null) { userId = object.get("userId").toString(); } List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("composing")), FlowCard.class); for (FlowCard flowCard : flowCardList) { //查询是否报工 Integer count = flowCardMapper.reportingWorkCount(flowCard.getProcessId()); if (count == 0) { //修改分架状态 flowCardMapper.updateDeleteState(flowCard.getOrderId(), flowCard.getProcessId()); //删除报工流程明细表数据 flowCardMapper.deleteReportingWork(flowCard.getProcessId()); //删除分架明细 flowCardMapper.deleteFlowCardMp(flowCard.getOrderId(), flowCard.getProcessId()); //删除排序表数据 flowCardMapper.deleteflowCardSort(flowCard.getOrderId(), flowCard.getProcessId()); //判断该订单流程卡是否全部删除 Integer flowNumber = flowCardMapper.selectFlowCardCount(flowCard.getOrderId()); if (flowNumber == 0) { //修改订单表分架状态为0,全部删除 flowCardMapper.updateProcessingCard(flowCard.getOrderId(), 0); } else { //修改订单表分架状态为1,删除部分 flowCardMapper.updateProcessingCard(flowCard.getOrderId(), 1); } //保存日志 Log log = new Log(); log.setContent(flowCard.getOrderId() + flowCard.getProcessId()); log.setFunction("checkboxDeleteSv流程卡删除"); log.setOperatorId(userId); log.setOperator(userName); logService.saveLog(log); } else { return false; } } return true; } public Map getPrintProjectDetails(String projectNo) { Map map = new HashMap<>(); map.put("data", flowCardMapper.getPrintProjectDetailsMp(projectNo)); return map; } public Map getPrintCustomDataProjectNoDetailSv(String type, Integer detailType, Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); //是否是工程明细打印 if (detailType == 0) {//工程打印明细 itemmap.put("data", flowCardMapper.getPrintCustomDataProjectDetail(flowCard.getProjectNo(), flowCard.getStockId())); } //非工程打印 else if (detailType == 1) { itemmap.put("data", flowCardMapper.getPrintCustomDataProject(flowCard.getProjectNo())); } else { itemmap.put("data", flowCardMapper.getPrintCustomDataProject(flowCard.getProjectNo())); } list.add(itemmap); } } map.put("data", list); map.put("title", flowCardMapper.getPrintTitle(type)); return map; } public Boolean updateProcessSv(String processId, String technologyNumber, String orderId, String Orderprocess, Map object) { //判断该流程卡是否报工 Integer count = flowCardMapper.reportingWorkCount(processId); if (count == 0) { //删除小片工艺表对应的数据 flowCardMapper.deleteProcessMp(processId, technologyNumber); //重新插入修改好工艺流程卡的数据 List newCraftList = (List) object.get("newCraft"); List numberList = (List) object.get("technologyNumber"); // 判断 newCraftList 是否为空 if (newCraftList != null) { for (String number : numberList) { //修改订单小片表工艺流程 flowCardMapper.updateOrderProcessMp(orderId, number, technologyNumber, Orderprocess); for (String process : newCraftList) { flowCardMapper.updateProcessMp(processId, technologyNumber, process, number); } } } return true; } else { return false; } } public Integer updateProjectLabelPrintCount(String projectNo) { flowCardMapper.updateProjectLabelPrintCount(projectNo); return flowCardMapper.selectProjectLabelPrintCount(projectNo); } public Integer updateProjectProcessPrintCount(String projectNo) { flowCardMapper.updateProjectProcessPrintCount(projectNo); return flowCardMapper.selectProjectProcessPrintCount(projectNo); } public Map flowCardDetail(Map object) { Map map = new HashMap<>(); List> list = new ArrayList>();//最终结果 List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { Map itemmap = new HashMap<>(); itemmap.put("detail", flowCardMapper.getFlowCardDetail(flowCard.getProcessId())); list.add(itemmap); } } map.put("data", list); return map; } public Object processCardAutoRack(Map object) { String orderId = object.get("orderId").toString(); String productionId = object.get("productionId").toString(); Integer inMaxQuantity = Integer.parseInt(object.get("inMaxQuantity").toString()); Float inWeight = Float.parseFloat(object.get("inWeight").toString()); Float shelfThickness = Float.parseFloat(object.get("shelfThickness").toString()); Float spacerThickness = Float.parseFloat(object.get("spacerThickness").toString()); Float inLenMax = Float.parseFloat(object.get("inLenMax").toString()); Float inLenMin = Float.parseFloat(object.get("inLenMin").toString()); Float inShortMax = Float.parseFloat(object.get("inShortMax").toString()); Float inShortMin = Float.parseFloat(object.get("inShortMin").toString()); /*String orderId = "NG25000004"; String productionId = "NG25000004A"; Integer inMaxQuantity = 1; Float inWeight = 4000.0f; Float shelfThickness = 2000.0f; Float maxHeight = 1520.0f; Float maxWid = 400.0f; Float spacerThickness = 0.0f;//垫片厚度*/ Map thickness = flowCardMapper.getGlassThicknessByProdutionId(orderId, productionId); //成品玻璃总厚度 Float glassTotalThickness = Float.parseFloat(thickness.get("totalThickness").toString()); //成品玻璃厚度 Float glassThickness = Float.parseFloat(thickness.get("thickness").toString()); //获取此工程号订单明细信息 List orderDetails = flowCardMapper.getOrderDetailByProductionId(orderId, productionId,"scope",inLenMax,inLenMin,inShortMax,inShortMin,glassThickness); List orderDetailsNotScope = flowCardMapper.getOrderDetailByProductionId(orderId, productionId,"notScope",inLenMax,inLenMin,inShortMax,inShortMin,glassThickness); //根据玻璃厚度和垫片厚度当前架子最大可放数量 Integer shelfMaxQuantityByThickness = (int) (shelfThickness / (glassTotalThickness + spacerThickness)); //用于接收最终生成的流程卡 List orderDetailList = new ArrayList<>(); //流程卡自增符号 int flowCardNo = 1; // 当前架子剩余可放数量 Integer shelfQuantity = 0; for (OrderDetail orderDetail : orderDetails) { //架子根据尺寸重量最大能放多少 int shelfQuantityByWeight = (int) (inWeight / (orderDetail.getHeight() * orderDetail.getWidth() * glassThickness * 2.5 / 1000000) ); //当前订单明细剩余数量 if (shelfQuantity == 0) { shelfQuantity =Math.min( Math.min(shelfMaxQuantityByThickness,inMaxQuantity),shelfQuantityByWeight); }else if(shelfQuantity>0){//架子剩余数量大于0时,判断当前架子剩余重量,是否支持最新序号的的成品重量 String FlowCardId = orderDetailList.get(orderDetailList.size() - 1).getProcessId(); double flowCardWeight = 0.0; for (OrderDetail orderDetail1 : orderDetailList) { if (orderDetail1.getProcessId().equals(FlowCardId)) { flowCardWeight += orderDetail1.getHeight()*orderDetail1.getQuantity()* orderDetail1.getWidth()* glassThickness* 2.5 / 1000000; } } if(flowCardWeight>0){ flowCardWeight = inWeight - flowCardWeight; //按照当前流程卡剩余重量,计算当前流程卡剩余数量 int remainingQuantity = (int) (flowCardWeight / (orderDetail.getHeight() * orderDetail.getWidth() * glassThickness * 2.5 / 1000000)); shelfQuantity =Math.min(Math.min(Math.min(shelfQuantityByWeight, Math.min(inMaxQuantity, shelfMaxQuantityByThickness)),shelfQuantity),remainingQuantity); if (shelfQuantity == 0) { shelfQuantity = Math.min(shelfQuantityByWeight, Math.min(inMaxQuantity, shelfMaxQuantityByThickness)); flowCardNo += 1; } } } //取最小值 //Integer maxQuantity = 0; while (orderDetail.getQuantity() > 0) { OrderDetail newOrderDetail = new OrderDetail(); //当死循环中,当前架子剩余数量为0时,重新计算架子剩余数量 if (shelfQuantity == 0) { shelfQuantity = Math.min(Math.min(shelfMaxQuantityByThickness,inMaxQuantity),shelfQuantityByWeight); } String processId = productionId + String.format("%03d", flowCardNo); //取最小值 //maxQuantity = Math.min(shelfQuantity, Math.min(inMaxQuantity, shelfMaxQuantityByThickness)); //maxQuantity = Math.min(shelfQuantity, shelfMaxQuantityByThickness); /*System.out.println("订单序号:"+orderDetail.getOrderNumber()); System.out.println(shelfQuantity + "," + "," + shelfMaxQuantityByThickness); System.out.println(flowCardNo + "," + maxQuantity); System.out.println("------");*/ if(shelfQuantity<=0){ return false; } if (orderDetail.getQuantity() > shelfQuantity) { newOrderDetail.setProcessId(processId); newOrderDetail.setQuantity(Long.valueOf(shelfQuantity)); newOrderDetail.setHeight(orderDetail.getHeight()); newOrderDetail.setWidth(orderDetail.getWidth()); newOrderDetail.setOrderNumber(orderDetail.getOrderNumber()); newOrderDetail.setShape(orderDetail.getShape()); newOrderDetail.setLandingSequence(flowCardNo); orderDetailList.add(newOrderDetail); orderDetail.setQuantity(orderDetail.getQuantity() - shelfQuantity); orderDetail.setBaiscQuantity(String.valueOf(Integer.valueOf(orderDetail.getBaiscQuantity())-shelfQuantity)); flowCardNo += 1; shelfQuantity = shelfQuantity - shelfQuantity; } else { newOrderDetail.setProcessId(processId); newOrderDetail.setQuantity(orderDetail.getQuantity()); newOrderDetail.setHeight(orderDetail.getHeight()); newOrderDetail.setWidth(orderDetail.getWidth()); newOrderDetail.setOrderNumber(orderDetail.getOrderNumber()); newOrderDetail.setShape(orderDetail.getShape()); newOrderDetail.setLandingSequence(flowCardNo); newOrderDetail.setBaiscQuantity(String.valueOf(orderDetail.getBaiscQuantity())); orderDetailList.add(newOrderDetail); //当前架子剩余数量 shelfQuantity = shelfQuantity - Math.toIntExact(orderDetail.getQuantity()); if (shelfQuantity == 0) { flowCardNo += 1; } orderDetail.setQuantity(0L); } } } Map map = new HashMap<>(); Collections.reverse(orderDetailList); map.put("orderDetailList", orderDetailList); map.put("orderDetailsNotScope", orderDetailsNotScope); return map; } public Boolean revokeComposingSv(Map object) { List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("composing")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { //获取没有工程号的条数,已生成工程号不能撤回 Integer count = flowCardMapper.selectProjectNo(flowCard.getProcessId()); if (count == 0){ flowCardMapper.revokeComposing(flowCard.getProcessId()); } else { return false; } } return true; } else { return false; } } public List exportDateProcessSv(Map dates) { List date= (List) dates.get("date"); return flowCardMapper.exportDateProcessMp(date); } }