From 71594bd2dc9201834aa533099e9e49a9b84506cd Mon Sep 17 00:00:00 2001 From: wangfei <3597712270@qq.com> Date: 星期四, 12 六月 2025 15:32:25 +0800 Subject: [PATCH] 新增韩语 --- hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java | 347 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 296 insertions(+), 51 deletions(-) diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java index c4debd3..8cf818c 100644 --- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java +++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java @@ -1,27 +1,38 @@ package com.mes.damage.service.impl; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.query.MPJQueryWrapper; +import com.mes.common.config.Const; import com.mes.damage.entity.Damage; import com.mes.damage.entity.DamagePrint; import com.mes.damage.mapper.DamageMapper; import com.mes.damage.service.DamageService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.mapper.GlassInfoMapper; +import com.mes.pp.entity.DamageDetails; +import com.mes.pp.entity.ReportingWork; +import com.mes.pp.entity.ReportingWorkDetail; import com.mes.work_assignment.entity.WorkAssignment; import com.mes.work_assignment.mapper.WorkAssignmentMapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.sql.Timestamp; import java.time.LocalDateTime; -import java.util.Collections; -import java.util.HashMap; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -34,6 +45,7 @@ * @author wu * @since 2024-06-13 */ +@Slf4j @Service public class DamageServiceImpl extends MPJBaseServiceImpl<DamageMapper, Damage> implements DamageService { @@ -41,8 +53,10 @@ GlassInfoMapper glassInfoMapper; @Resource WorkAssignmentMapper workAssignmentMapper; - @Autowired - private DamageMapper damageMapper; + + + private final static String ERP_URL = "http://192.168.2.100:8086"; + /** * 鏌ヨ鎶ュ伐淇℃伅 @@ -62,10 +76,10 @@ } List<Damage> damageList = baseMapper.selectList(damageSelectWrapper); - for (Damage damage : damageList) { - damage.setStatus(2); - } - return baseMapper.selectList(damageSelectWrapper); +// for (Damage damage : damageList) { +// damage.setStatus(2); +// } + return damageList; } /** @@ -74,23 +88,113 @@ @Override public void submitDamage(List<Damage> damageList) { Map<String, List<Damage>> firstMap = damageList.stream().collect(Collectors.groupingBy(e -> e.getProcessId() + ":" - + e.getWorkingProcedure() + ":" + e.getDeviceName() + ":" + e.getTeamsGroupsName())); - + + e.getWorkingProcedure() + ":" + e.getDeviceName() + ":" + e.getTeamsGroupsName() + ":" + e.getOrderNumber() + ":" + e.getTechnologyNumber())); for (Map.Entry<String, List<Damage>> entry : firstMap.entrySet()) { + ReportingWork reportingWork = new ReportingWork(); + List<ReportingWorkDetail> reportingWorkDetails = new ArrayList<>(); String key = entry.getKey(); List<Damage> damages = entry.getValue(); + reportingWork.setOrderId(damages.get(0).getProcessId().substring(0, 10)); + reportingWork.setProductionId(damages.get(0).getProcessId().substring(0, 11)); + reportingWork.setProcessId(damages.get(0).getProcessId() + "/" + damages.get(0).getTechnologyNumber()); +// reportingWork.setDeviceName(damages.get(0).getDeviceName()); + if (StringUtils.isBlank(damages.get(0).getDeviceName())) { + reportingWork.setDeviceName("auto"); + } else { + reportingWork.setDeviceName(damages.get(0).getDeviceName()); + } + reportingWork.setThisProcess(damages.get(0).getWorkingProcedure()); + reportingWork.setThisCompletedQuantity(0); + reportingWork.setThisWornQuantity(0); + reportingWork.setClasses("鏃╃彮"); + reportingWork.setReportingWorkTime(LocalDateTime.now()); + reportingWork.setTeamsGroupsName(damages.get(0).getTeamsGroupsName()); + reportingWork.setCreator("auto"); - System.out.println("Key: " + key); + ReportingWorkDetail reportingWorkDetail = new ReportingWorkDetail(); + reportingWorkDetail.setTechnologyNumber(damages.get(0).getTechnologyNumber()); + reportingWorkDetail.setOrderNumber(damages.get(0).getOrderNumber()); + reportingWorkDetail.setCompletedQuantity(0); + reportingWorkDetail.setBreakageQuantity(0); - Map<String, List<Damage>> secondMap = damageList.stream().collect(Collectors.groupingBy(e -> e.getProcessId() + ":" + + Map<String, List<Damage>> secondMap = damages.stream().collect(Collectors.groupingBy(e -> e.getProcessId() + ":" + e.getWorkingProcedure() + ":" + e.getDeviceName() + ":" + e.getTeamsGroupsName())); + List<DamageDetails> damageDetailses = new ArrayList<>(); for (Map.Entry<String, List<Damage>> entrys : secondMap.entrySet()) { + List<Damage> damagesdetails = entrys.getValue(); + if (damagesdetails.get(0).getType() != 8 && damagesdetails.get(0).getType() != 9) { + reportingWorkDetail.setCompletedQuantity(damagesdetails.size()); + reportingWork.setThisCompletedQuantity(damagesdetails.size() + reportingWork.getThisCompletedQuantity()); + } else { + reportingWork.setThisWornQuantity(damagesdetails.size() + reportingWork.getThisWornQuantity()); + reportingWorkDetail.setBreakageQuantity(damagesdetails.size()); + DamageDetails damageDetails = new DamageDetails(); + damageDetails.setBreakageQuantity(damagesdetails.size()); + damageDetails.setBreakageType(damagesdetails.get(0).getBreakageType()); + damageDetails.setBreakageReason(damagesdetails.get(0).getBreakageReason()); + damageDetails.setResponsibleProcess(damagesdetails.get(0).getResponsibleProcess()); + damageDetails.setResponsibleEquipment(damagesdetails.get(0).getResponsibleEquipment()); + damageDetails.setResponsibleTeam(damagesdetails.get(0).getResponsibleTeam()); + damageDetails.setResponsiblePersonnel(null); + if (damagesdetails.get(0).getStatus() == 7) { + damageDetails.setQualityInspector("auto"); + damageDetails.setPatchStatus(1); + damageDetails.setQualityInsStatus(2); + } else { + damageDetails.setQualityInspector(""); + damageDetails.setPatchStatus(0); + damageDetails.setQualityInsStatus(0); + } + damageDetailses.add(damageDetails); + } } + reportingWorkDetails.add(reportingWorkDetail); + reportingWorkDetail.setDamageDetails(damageDetailses); + sendToERP(reportingWork, reportingWorkDetails, Boolean.FALSE); } + } + @Override + public Boolean submitReport(Damage damage) { + ReportingWork reportingWork = new ReportingWork(); + reportingWork.setOrderId(damage.getProcessId().substring(0, 10)); + reportingWork.setProductionId(damage.getProcessId().substring(0, 11)); + reportingWork.setProcessId(damage.getProcessId() + "/" + damage.getTechnologyNumber()); + if (StringUtils.isBlank(damage.getDeviceName())) { + reportingWork.setDeviceName("auto"); + } else { + reportingWork.setDeviceName(damage.getDeviceName()); + } + reportingWork.setThisProcess(damage.getWorkingProcedure()); + reportingWork.setThisCompletedQuantity(1); + reportingWork.setThisWornQuantity(0); + reportingWork.setClasses("鏃╃彮"); + reportingWork.setReportingWorkTime(LocalDateTime.now()); + reportingWork.setTeamsGroupsName(damage.getTeamsGroupsName()); + reportingWork.setCreator("auto"); + List<ReportingWorkDetail> reportingWorkDetails = new ArrayList<>(); + ReportingWorkDetail reportingWorkDetail = new ReportingWorkDetail(); + reportingWorkDetail.setTechnologyNumber(damage.getTechnologyNumber()); + reportingWorkDetail.setOrderNumber(damage.getOrderNumber()); + reportingWorkDetail.setCompletedQuantity(1); + reportingWorkDetail.setBreakageQuantity(0); + reportingWorkDetails.add(reportingWorkDetail); + return sendToERP(reportingWork, reportingWorkDetails, Boolean.TRUE); + } + + @Override + public void autoSubmitReport(String glassId, int deviceId, String workingProcedure, String remark, int type) { + Damage damage = new Damage(); + damage.setGlassId(glassId); + damage.setWorkingProcedure(workingProcedure); + damage.setLine(deviceId); + damage.setType(type); + damage.setRemark(remark); + this.insertDamage(damage); } /** @@ -98,25 +202,53 @@ */ @Override public void insertDamage(Damage damage) { - LambdaQueryWrapper<GlassInfo> glassInfoSelectWrapper = new LambdaQueryWrapper<>(); - glassInfoSelectWrapper.eq(GlassInfo::getGlassId, damage.getGlassId()); - GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoSelectWrapper); - BeanUtils.copyProperties(glassInfo, damage); - - LambdaQueryWrapper<WorkAssignment> workAssignmentSelectWrapper = new LambdaQueryWrapper<>(); - workAssignmentSelectWrapper - .eq(WorkAssignment::getLine, damage.getLine()) - .eq(WorkAssignment::getWorkProcesses, damage.getWorkingProcedure()); - WorkAssignment workAssignment = workAssignmentMapper.selectOne(workAssignmentSelectWrapper); - if (workAssignment != null) { - damage.setTeamsGroupsName(workAssignment.getTeamsGroupsName()); - damage.setDeviceName(workAssignment.getDeviceName()); + List<Damage> damage1 = null; + if (Const.GLASS_STATE_DAMAGE.equals(damage.getType()) || Const.GLASS_STATE_TAKE.equals(damage.getType())) { + damage1 = baseMapper.selectList( + new LambdaQueryWrapper<Damage>() + .in(Damage::getType, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE) + .notIn(Damage::getStatus, 7, 8) + .lt(Damage::getStatus, 7) + .eq(Damage::getGlassId, damage.getGlassId()) + ); + } else { + damage1 = baseMapper.selectList( + new LambdaQueryWrapper<Damage>() + .notIn(Damage::getType, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE) + .eq(Damage::getLine, damage.getLine()) + .eq(Damage::getWorkingProcedure, damage.getWorkingProcedure()) + .eq(Damage::getGlassId, damage.getGlassId()) + ); } - damage.setProcessId(glassInfo.getFlowCardId()); - damage.setOrderNumber(glassInfo.getGlassType()); - damage.setTechnologyNumber(glassInfo.getLayer()); - damage.setDamageTime(Timestamp.valueOf(LocalDateTime.now())); - baseMapper.insert(damage); + if (damage1 == null || damage1.size() == 0) { + LambdaQueryWrapper<GlassInfo> glassInfoSelectWrapper = new LambdaQueryWrapper<>(); + glassInfoSelectWrapper.eq(GlassInfo::getGlassId, damage.getGlassId()); + GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoSelectWrapper); + BeanUtils.copyProperties(glassInfo, damage); + + LambdaQueryWrapper<WorkAssignment> workAssignmentSelectWrapper = new LambdaQueryWrapper<>(); + workAssignmentSelectWrapper + .eq(WorkAssignment::getLine, damage.getLine()) + .eq(WorkAssignment::getWorkProcesses, damage.getWorkingProcedure()); + WorkAssignment workAssignment = workAssignmentMapper.selectOne(workAssignmentSelectWrapper); + if (workAssignment != null) { + damage.setTeamsGroupsName(workAssignment.getTeamsGroupsName()); + damage.setDeviceName(workAssignment.getDeviceName()); + } + damage.setProcessId(glassInfo.getFlowCardId()); + damage.setOrderNumber(glassInfo.getGlassType()); + damage.setTechnologyNumber(glassInfo.getLayer()); + damage.setDamageTime(Timestamp.valueOf(LocalDateTime.now())); + if (damage.getType() == null) { + damage.setType(1); + } + if (damage.getType() == 1 && submitReport(damage)) { + damage.setStatus(3); + } else { + damage.setStatus(1); + } + baseMapper.insert(damage); + } } /** @@ -146,28 +278,141 @@ this.saveBatch(damageList); } + /** + * 鎷胯蛋鎵撳嵃鏁版嵁鏌ヨ + */ @Override - public List<Damage> selectDamagePrint(Damage damage) { - QueryWrapper<Damage> wrapper = new QueryWrapper<>(); - wrapper.select("working_procedure,engineer_id,teams_groups_name,device_name,count(glass_id)as glass_id") - .eq("type",damage.getType()) - .eq("working_procedure",damage.getWorkingProcedure()) - .groupBy("working_procedure,engineer_id,teams_groups_name,device_name"); - if (damage.getEngineerId() != null) { - wrapper.eq("engineer_id", damage.getEngineerId()); - } - return this.list(wrapper); + public List<DamagePrint> selectDamagePrint(Damage damage) { + MPJQueryWrapper<Damage> listDamage = new MPJQueryWrapper<Damage>() + .select("t.engineer_id,t.glass_id,b.tempering_layout_id,b.tempering_feed_sequence,b.width,b.height,b.thickness") + .leftJoin("glass_info as b on t.glass_id=b.glass_id") + .eq("t.working_procedure", damage.getWorkingProcedure()) + .eq("t.type", damage.getType()); + // 鍔ㄦ�佹坊鍔犳潯浠讹紝褰� id 鏈夊�兼椂 + if (damage.getEngineerId() != null) { + listDamage.eq("t.engineer_id", damage.getEngineerId()); + } + return baseMapper.selectJoinList(DamagePrint.class, listDamage); + } + + /** + * 鎷胯蛋鎵撳嵃鎵撳嵃璇︽儏鏌ヨ + */ + @Override + public List<DamagePrint> selectDamagePrintDetails(Damage damage) { + List<DamagePrint> listDamage = baseMapper.selectJoinList(DamagePrint.class, new MPJQueryWrapper<Damage>() + .select("b.flow_card_id,b.layer,t.engineer_id,b.tempering_layout_id,b.tempering_feed_sequence,t.glass_id,b.width,b.height,b.thickness") + .leftJoin("glass_info as b on t.glass_id=b.glass_id") + .eq("t.working_procedure", damage.getWorkingProcedure()) + .eq("t.type", damage.getType()) + .eq("t.engineer_id", damage.getEngineerId()) + ); + return listDamage; } @Override - public List<DamagePrint> selectDamagePrintDetails(Damage damage) { - List<DamagePrint> listDamage=damageMapper.selectJoinList(DamagePrint.class,new MPJQueryWrapper<Damage>() - .select("b.flow_card_id,b.layer,t.engineer_id,b.tempering_layout_id,b.tempering_feed_sequence,t.glass_id,b.width,b.height,b.thickness") - .leftJoin("glass_info as b on t.glass_id=b.glass_id") - .eq("t.working_procedure",damage.getWorkingProcedure()) - .eq("t.type",damage.getType()) - .eq("t.engineer_id",damage.getEngineerId()) + public void deleteByGlassId(String glassId) { + baseMapper.delete( + new LambdaQueryWrapper<Damage>() + .eq(Damage::getGlassId, glassId) + .in(Damage::getType, Const.GLASS_STATE_DAMAGE_TAKE) + .lt(Damage::getStatus, 7) ); - return listDamage; + } + + @Override + public Boolean sendToERP(ReportingWork reportingWork, List<ReportingWorkDetail> reportingWorkDetails, Boolean type) { + log.info("鎶ュ伐鏁版嵁reportingWork锛歿}锛宺eportingWorkDetails锛歿}", reportingWork, reportingWorkDetails); + try { + // 鐩爣绯荤粺鐨凙PI URL + + + String url1 = ERP_URL + "/reportingWork/mesReportingWork"; + String url2 = ERP_URL + "/reportingWork/mesSaveReportingWorkWorn"; + String url; + if (type) { + url = url1; + } else { + url = url2; + } + URL obj = new URL(url); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + + // 璁剧疆璇锋眰鏂规硶鍜岃姹傚ご + con.setRequestMethod("POST"); + con.setRequestProperty("Content-Type", "application/json; utf-8"); + con.setRequestProperty("Accept", "application/json"); + con.setDoOutput(true); + + // 鍒涘缓 JSON 瀵硅薄 + JSONObject result = new JSONObject(); + + ObjectMapper objectMapper = new ObjectMapper(); + + // 灏� ReportingWork 杞崲涓� JSONObject + + // 灏� ReportingWorkDetail 鍒楄〃杞崲涓� JSONArray + + if (type) { + JSONObject detailsJsonObject = new JSONObject(objectMapper.writeValueAsString(reportingWorkDetails.get(0))); + result.put("detail", detailsJsonObject); + reportingWork.setProcessId(reportingWork.getProcessId().substring(0, 14)); + } else { + JSONArray detailsJsonArray = new JSONArray(objectMapper.writeValueAsString(reportingWorkDetails)); + result.put("detail", detailsJsonArray); + } + JSONObject reportingWorkJson = new JSONObject(objectMapper.writeValueAsString(reportingWork)); + reportingWorkJson.put("reportingWorkTime", reportingWork.getReportingWorkTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); + // 灏� JSON 瀵硅薄鍜屾暟缁勬坊鍔犲埌缁撴灉瀵硅薄涓� + result.put("title", reportingWorkJson); + + result.put("type", 0); + if (reportingWorkDetails.get(0).getDamageDetails() != null) { + if (reportingWorkDetails.get(0).getDamageDetails().get(0).getPatchStatus() == 1) { + result.put("isPatch", 1); + } else { + result.put("isPatch", 0); + } + } + result.put("userId", "admin"); + result.put("userName", "admin"); + result.put("qualityInsStatus", 0); + // 灏� result 瀵硅薄杞崲涓哄瓧绗︿覆 + String jsonInputString = result.toString(); + System.out.println("jsonInputString : " + result); + // 鍙戦�佽姹� + try (OutputStream os = con.getOutputStream()) { + byte[] input = jsonInputString.getBytes("utf-8"); + os.write(input, 0, input.length); + } + + // 鑾峰彇鍝嶅簲鐮� + int responseCode = con.getResponseCode(); + System.out.println("Response Code : " + responseCode); + + // 鑾峰彇鍝嶅簲鍐呭 + try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) { + StringBuilder response = new StringBuilder(); + String inputLine; + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + // 瑙f瀽鍝嶅簲鍐呭 + JSONObject jsonResponse = new JSONObject(response.toString()); + + // 鎻愬彇 code 鍜� message + int code = jsonResponse.getInt("code"); + String message = jsonResponse.getStr("data"); + log.info("鎶ュ伐鎯呭喌锛歿},{}", code, message); + if (code == 200 && message.equals("true")) { + return true; + } else { + return false; + } + } + } catch (Exception e) { + e.printStackTrace(); + return false; + } } } -- Gitblit v1.8.0