From 7e5796e4813bb1f4d2696a0fd05f408147c3b96e Mon Sep 17 00:00:00 2001 From: wangfei <3597712270@qq.com> Date: 星期三, 11 六月 2025 15:16:01 +0800 Subject: [PATCH] 所有项目必填判断 --- hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java | 477 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 343 insertions(+), 134 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 dccec5e..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,209 +1,418 @@ 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.update.LambdaUpdateWrapper; -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.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.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.stream.Collectors; /** * <p> - * 鏈嶅姟瀹炵幇绫� + * 鏈嶅姟瀹炵幇绫� * </p> * * @author wu * @since 2024-06-13 */ +@Slf4j @Service -public class DamageServiceImpl extends ServiceImpl<DamageMapper, Damage> implements DamageService { +public class DamageServiceImpl extends MPJBaseServiceImpl<DamageMapper, Damage> implements DamageService { @Resource GlassInfoMapper glassInfoMapper; @Resource WorkAssignmentMapper workAssignmentMapper; + + private final static String ERP_URL = "http://192.168.2.100:8086"; + + /** * 鏌ヨ鎶ュ伐淇℃伅 */ @Override - public List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure){ - LambdaQueryWrapper<Damage> damageSelectWrapper =new LambdaQueryWrapper<>(); - damageSelectWrapper.between(Damage::getDamageTime,startTime,endTime); - if (type!=0){ - damageSelectWrapper.eq(Damage::getType,type); + public List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure) { + LambdaQueryWrapper<Damage> damageSelectWrapper = new LambdaQueryWrapper<>(); + damageSelectWrapper.between(Damage::getDamageTime, startTime, endTime); + if (type != 0) { + damageSelectWrapper.eq(Damage::getType, type); } - if (status!=0){ - damageSelectWrapper.eq(Damage::getStatus,status); + if (status != 0) { + damageSelectWrapper.eq(Damage::getStatus, status); } - if(!"0".equals(workingProcedure)){ - damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedure); + if (!"0".equals(workingProcedure)) { + damageSelectWrapper.eq(Damage::getWorkingProcedure, workingProcedure); } 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; } /** * 鎻愪氦鎶ュ伐 */ @Override - public void submitDamage(List<Damage> damageList){ - Map<String, Map<String, Map<String, Map<String, List<Damage>>>>> resultMap = damageList.stream() - .collect(Collectors.groupingBy( - Damage::getProcessId, - Collectors.groupingBy( - Damage::getWorkingProcedure, - Collectors.groupingBy( - Damage::getDeviceName, - Collectors.groupingBy(Damage::getTeamsGroupsName) - ) - ) - )); - // 閬嶅巻 resultMap - for (Map.Entry<String, Map<String, Map<String, Map<String, List<Damage>>>>> processEntry : resultMap.entrySet()) { - String processId = processEntry.getKey(); - System.out.println("ProcessId: " + processId); + 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.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"); - // 鑾峰彇绗簩灞傜殑 Map锛屾寜 workingProcedure 鍒嗙粍鐨勭粨鏋� - Map<String, Map<String, Map<String, List<Damage>>>> workingProcedureMap = processEntry.getValue(); - - // 閬嶅巻 workingProcedureMap - for (Map.Entry<String, Map<String, Map<String, List<Damage>>>> workingProcedureEntry : workingProcedureMap.entrySet()) { - String workingProcedure = workingProcedureEntry.getKey(); - System.out.println(" WorkingProcedure: " + workingProcedure); - - // 鑾峰彇绗笁灞傜殑 Map锛屾寜 deviceName 鍒嗙粍鐨勭粨鏋� - Map<String, Map<String, List<Damage>>> deviceNameMap = workingProcedureEntry.getValue(); - - // 閬嶅巻 deviceNameMap - for (Map.Entry<String, Map<String, List<Damage>>> deviceNameEntry : deviceNameMap.entrySet()) { - String deviceName = deviceNameEntry.getKey(); - System.out.println(" DeviceName: " + deviceName); - - // 鑾峰彇绗洓灞傜殑 Map锛屾寜 teamsGroupsName 鍒嗙粍鐨勭粨鏋� - Map<String, List<Damage>> teamsGroupsNameMap = deviceNameEntry.getValue(); - - // 閬嶅巻 teamsGroupsNameMap - for (Map.Entry<String, List<Damage>> teamsGroupsNameEntry : teamsGroupsNameMap.entrySet()) { - String teamsGroupsName = teamsGroupsNameEntry.getKey(); - System.out.println(" TeamsGroupsName: " + teamsGroupsName); - - // 鑾峰彇 Damage 鍒楄〃 - List<Damage> damageListForTeamsGroupsName = teamsGroupsNameEntry.getValue(); - //鎶ュ伐涓昏〃鏁版嵁 - ReportingWork reportingWork=new ReportingWork(); - reportingWork.setProcessId(processId); - reportingWork.setThisProcess(workingProcedure); - reportingWork.setDeviceName(deviceName); - reportingWork.setTeamsGroupsName(teamsGroupsName); - - Map<Integer, Map<Integer, Map<String, List<Damage>>>> groupedByOrderTechBreakage = damageListForTeamsGroupsName.stream() - .map(damage -> Optional.ofNullable(damage)) // 浣跨敤Optional澶勭悊鍙兘涓簄ull鐨勫厓绱� - .filter(Optional::isPresent) // 杩囨护鎺夌┖鐨凮ptional - .map(Optional::get) // 鑾峰彇闈炵┖鐨凞amage瀵硅薄 - .collect(Collectors.groupingBy( - damage -> Optional.ofNullable(damage.getOrderNumber()).orElse(0), // 浣跨敤orElse璁剧疆榛樿鍊硷紝浠ュ鐞唍ull鍊� - Collectors.groupingBy( - damage -> Optional.ofNullable(damage.getTechnologyNumber()).orElse(0), // 鍚屾牱澶勭悊technologyNumber鍙兘涓簄ull鐨勬儏鍐� - Collectors.groupingBy( - damage -> Optional.ofNullable(damage.getBreakageType()).orElse("Unknown"), // 澶勭悊breakageType鍙兘涓簄ull鐨勬儏鍐� - Collectors.toList() - ) - ) - )); - - // 閬嶅巻 groupedByOrderTechBreakage - for (Map.Entry<Integer, Map<Integer, Map<String, List<Damage>>>> orderEntry : groupedByOrderTechBreakage.entrySet()) { - Integer orderNumber = orderEntry.getKey(); - System.out.println(" OrderNumber: " + orderNumber); - - // 鑾峰彇绗簩灞傜殑 Map锛屾寜 technologyNumber 鍒嗙粍鐨勭粨鏋� - Map<Integer, Map<String, List<Damage>>> technologyNumberMap = orderEntry.getValue(); - - // 閬嶅巻 technologyNumberMap - for (Map.Entry<Integer, Map<String, List<Damage>>> technologyEntry : technologyNumberMap.entrySet()) { - Integer technologyNumber = technologyEntry.getKey(); - System.out.println(" TechnologyNumber: " + technologyNumber); - - // 鑾峰彇绗笁灞傜殑 Map锛屾寜 breakageType 鍒嗙粍鐨勭粨鏋� - Map<String, List<Damage>> breakageTypeMap = technologyEntry.getValue(); - - // 閬嶅巻 breakageTypeMap - for (Map.Entry<String, List<Damage>> breakageTypeEntry : breakageTypeMap.entrySet()) { - String breakageType = breakageTypeEntry.getKey(); - System.out.println(" BreakageType: " + breakageType); + ReportingWorkDetail reportingWorkDetail = new ReportingWorkDetail(); + reportingWorkDetail.setTechnologyNumber(damages.get(0).getTechnologyNumber()); + reportingWorkDetail.setOrderNumber(damages.get(0).getOrderNumber()); + reportingWorkDetail.setCompletedQuantity(0); + reportingWorkDetail.setBreakageQuantity(0); - // 鑾峰彇 Damage 鍒楄〃 - List<Damage> damageListForBreakageType = breakageTypeEntry.getValue(); - int completedQuantity=0; - int breakageQuantity=0; - // 閬嶅巻 Damage 鍒楄〃 - for (Damage damage : damageListForBreakageType) { - // 鎵撳嵃鎴栧鐞嗘瘡涓� Damage 瀵硅薄 - System.out.println(" Damage: " + damage.toString()); - if(damage.getType()==1){ - completedQuantity+=1; - }else if(damage.getType()==2){ - breakageQuantity+=1; - } - } - } - } - } + 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); } /** * 娣诲姞鎶ュ伐淇℃伅 */ @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); + public void insertDamage(Damage damage) { + 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()) + ); + } + 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()); + 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())); - damage.setType(2); + if (damage.getType() == null) { + damage.setType(1); + } + if (damage.getType() == 1 && submitReport(damage)) { + damage.setStatus(3); + } else { + damage.setStatus(1); + } baseMapper.insert(damage); } } + + /** + * 娣诲姞鎶ュ伐淇℃伅 + */ + @Override + public void batchInsertDamage(List<Damage> damageList) { + WorkAssignment workAssignment = workAssignmentMapper.selectOne(new LambdaQueryWrapper<WorkAssignment>() + .eq(WorkAssignment::getLine, damageList.get(0).getLine()) + .eq(WorkAssignment::getWorkProcesses, damageList.get(0).getWorkingProcedure())); + + List<String> glassList = damageList.stream().map(Damage::getGlassId).collect(Collectors.toList()); + List<GlassInfo> glassInfoList = glassInfoMapper.selectList(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassList)); + Map<String, List<GlassInfo>> listMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId)); + for (Damage damage : damageList) { + GlassInfo glassInfo = listMap.get(damage.getGlassId()).get(0); + BeanUtils.copyProperties(glassInfo, damage); + 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())); + } + this.saveBatch(damageList); + } + + /** + * 鎷胯蛋鎵撳嵃鏁版嵁鏌ヨ + */ + @Override + 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 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) + ); + } + + @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