diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/MesPrepareDetailDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/MesPrepareDetailDTO.java index 6f566e3c..01d2da62 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/MesPrepareDetailDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/MesPrepareDetailDTO.java @@ -84,6 +84,26 @@ public class MesPrepareDetailDTO extends BaseEntity { private String recoil; private String buyFlag; private String parentWorkOrder; + //以输入单位计的数量 + private String erfmg; + //条目单位 + private String erfme; + + public String getErfmg() { + return erfmg; + } + + public void setErfmg(String erfmg) { + this.erfmg = erfmg; + } + + public String getErfme() { + return erfme; + } + + public void setErfme(String erfme) { + this.erfme = erfme; + } public String getParentWorkOrder() { return parentWorkOrder; diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapMaterialPreparation.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapMaterialPreparation.java index c9aef40b..be0a7734 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapMaterialPreparation.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapMaterialPreparation.java @@ -29,6 +29,26 @@ public class SapMaterialPreparation { private String RGEKZ; //直接采购标识 private String DBSKZ; + //以输入单位计的数量 + private String ERFMG; + //条目单位 + private String ERFME; + + public String getERFMG() { + return ERFMG; + } + + public void setERFMG(String ERFMG) { + this.ERFMG = ERFMG; + } + + public String getERFME() { + return ERFME; + } + + public void setERFME(String ERFME) { + this.ERFME = ERFME; + } public String getAUFNR() { return AUFNR; diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/utils/StringUtils.java b/op-common/op-common-core/src/main/java/com/op/common/core/utils/StringUtils.java index a74a28af..f3e7defa 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/utils/StringUtils.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/utils/StringUtils.java @@ -475,13 +475,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { * * @param factoryCode 工厂代码 * @param lineCode 产线编码 - * @param productDate 生产日期 + * @param productDate 生产日期 生产日期减一天位有效期 * @param version 订单生产版本号最后一位 * @param productStatus 产出状态:正常是A * @param content 内容物 (根据产品,一般为0) * @return */ - public static final List batchAutoCreate(String factoryCode, String lineCode, Date productDate,String version, String content,int batchNum){ + public static final List batchAutoCreate(String factoryCode, String lineCode, Date productDate,String version, String content,int batchNum,char startZM){ SimpleDateFormat targetFormat = new SimpleDateFormat("yyyyMMdd"); // Create a Calendar instance and set it to the current date Calendar calendar = Calendar.getInstance(); @@ -495,7 +495,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { // Format the new date String toValidity = targetFormat.format(futureDate); List batchList=new ArrayList<>(); - for (char letter = 'A'; letter < 'A' + batchNum; letter++) { + + for (char letter = startZM; letter < startZM + batchNum; letter++) { String BatchCode=toValidity+Constants.LJ+targetFormat.format(productDate)+lineCode+factoryCode+letter+Constants.OUTPUT_STATUS_A+content+version; batchList.add(BatchCode); } diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java b/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java index bb3e5a57..a9716114 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java @@ -162,13 +162,13 @@ public class HttpUtils { conn.setRequestProperty("user-agent" , "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setRequestProperty("Accept-Charset" , "utf-8"); // conn.setRequestProperty("contentType" , "utf-8"); - conn.setRequestProperty("content-Type", "application/json; charset=utf-8"); + conn.setRequestProperty("content-Type", "application/json; charset=GBK"); conn.setDoOutput(true); conn.setDoInput(true); out = new PrintWriter(conn.getOutputStream()); out.print(param); out.flush(); - in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); + in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "GBK")); String line; while ((line = in.readLine()) != null) { result.append(line); diff --git a/op-modules/op-device/src/main/java/com/op/device/controller/EquOrderController.java b/op-modules/op-device/src/main/java/com/op/device/controller/EquOrderController.java index cd3343bd..286ad35f 100644 --- a/op-modules/op-device/src/main/java/com/op/device/controller/EquOrderController.java +++ b/op-modules/op-device/src/main/java/com/op/device/controller/EquOrderController.java @@ -39,7 +39,7 @@ public class EquOrderController extends BaseController { */ @RequiresPermissions("device:deviceOrder:list") @GetMapping("/list") - @Log(title = "保养记录", businessType = BusinessType.QUERY) + @Log(title = "查询工单", businessType = BusinessType.QUERY) public TableDataInfo list(EquOrder equOrder) { startPage(); List list = equOrderService.selectEquOrderList(equOrder); @@ -50,7 +50,7 @@ public class EquOrderController extends BaseController { * 导出计划工单列表 */ @RequiresPermissions("device:deviceOrder:export") - @Log(title = "点检记录", businessType = BusinessType.EXPORT) + @Log(title = "计划工单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, EquOrder equOrder) { List list = equOrderService.selectEquOrderList(equOrder); diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/EquOrderMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/EquOrderMapper.java index f8c54e8f..096a8849 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/EquOrderMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/EquOrderMapper.java @@ -187,4 +187,7 @@ public interface EquOrderMapper { * @param equ */ void updateEquipmentStatus(Equipment equ); + + //获取组线信息 + String getGroupLine(String auxiliaryEquipmentCode); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java index 5ca46a7c..8c0dcd63 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java @@ -396,6 +396,78 @@ public class DevicePDAServiceImpl implements IDevicePDAService { String key = "#header.poolName"; equRepairOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", "")); equRepairOrderMapper.insertEquRepairOrder(equRepairOrder); + + //微信提醒 + //PDA企业微信报修审核提醒 + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + noticeQo.setNoticeId(10L); + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + //在前端填的时候,需要判空!!!!!! + contentInfo = contentInfo + .replace("${message}", "\n") + .replace("${equipmentCode}", equOrder.getEquipmentCode()+"\n") + .replace("${orderCode}", equOrder.getOrderCode()+"\n") + .replace("${orderDesc}", equRepairOrder.getOrderSource() + "存在不达标检查项"+"\n") + ; + //故障开始时间 + if(equOrder.getOrderStart() != null){ + contentInfo = contentInfo.replace("${orderBreakdownTime}", myFmt.format(equOrder.getOrderStart())+"\n"); + }else{ + contentInfo = contentInfo.replace("${orderBreakdownTime}", "无"+"\n"); + } + + //报修人equOrder + if(equOrder.getPlanPersonName() != null){ + contentInfo = contentInfo.replace("${orderRepairmanName}", equOrder.getPlanPersonName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${orderRepairmanName}", "无"+"\n"); + } + + //查询设备相关信息 + //设备名称 + EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equOrder.getEquipmentCode()); + if(StringUtils.isNotEmpty(equ.getEquipmentName())){ + contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n"); + } + //设备位置 + if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){ + contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n"); + } + + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("PDA端"+ equRepairOrder.getOrderSource() + "报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("PDA端报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } } // 如果不存在未达标信息 diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java index 39d334e7..eb415717 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.uuid.IdUtils; import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; @@ -339,6 +340,13 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { if ("1".equals(plan.getUpkeep())) {//1委外工单 order.setOutsourceCode("BW" + orderCode); } + + if(StringUtils.isNotEmpty(plan.getEquipmentCode())){ + //查询组线 + String lineName = equOrderMapper.getGroupLine(plan.getEquipmentCode()); + order.setPlanProdLine(lineName); + } + /**equ_order**/ sce = equOrderMapper.insertEquOrder(order); System.out.println(plan.getPlanCode() + "========equ_order:" + sce); diff --git a/op-modules/op-device/src/main/resources/mapper/device/EquOrderMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/EquOrderMapper.xml index 32caab51..27598cf6 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/EquOrderMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/EquOrderMapper.xml @@ -47,7 +47,6 @@ - @@ -110,7 +109,7 @@ and eo.plan_type = #{planType} and eo.order_code like concat('%', #{orderCode}, '%') and eo.plan_workshop = #{planWorkshop} - and eo.plan_prod_line = #{planProdLine} + and eo.plan_prod_line like concat('%', #{planProdLine}, '%') and eo.plan_loop = #{planLoop} and eo.plan_loop_type = #{planLoopType} and eo.equipment_code like concat('%',#{equipmentCode}, '%') @@ -517,5 +516,12 @@ and del_flag = '0' + + diff --git a/op-modules/op-energy/src/main/java/com/op/energy/base/service/impl/BaseLineMonitorServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/base/service/impl/BaseLineMonitorServiceImpl.java index 9604da9d..771c1b3d 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/base/service/impl/BaseLineMonitorServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/base/service/impl/BaseLineMonitorServiceImpl.java @@ -95,7 +95,7 @@ public class BaseLineMonitorServiceImpl implements IBaseLineMonitorService { if (lineMonitor.getObjid().equals(lineMonitor.getParentId())) { continue; } - Long grade = 0L; + Long grade = 1L; grade = updateLineMonitorGrade(baseLineMonitors, lineMonitor, objIdList, grade); if (StringUtils.isNull(lineMonitor.getGrade()) || !lineMonitor.getGrade().equals(grade)) { lineMonitor.setGrade(grade); @@ -111,7 +111,6 @@ public class BaseLineMonitorServiceImpl implements IBaseLineMonitorService { /** * 线路计量信息等级更新 - * * @param baseLineMonitors * @param lineMonitor * @param objIdList @@ -294,7 +293,6 @@ public class BaseLineMonitorServiceImpl implements IBaseLineMonitorService { /** * 递归查找monitorId最下级节点中的表 - * * @param monitors * @param monitorId * @return diff --git a/op-modules/op-energy/src/main/java/com/op/energy/base/utils/ExportExcelUtil.java b/op-modules/op-energy/src/main/java/com/op/energy/base/utils/ExportExcelUtil.java index 27d842cb..8b1549b2 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/base/utils/ExportExcelUtil.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/base/utils/ExportExcelUtil.java @@ -609,6 +609,41 @@ public class ExportExcelUtil { return result; } + /** + * 获取List连续相同数据的开始和结束的下标 + * 与计量设备编号联动 + * @param countList + * @return + */ + public static List findConsecutiveIndices(List countList, List monitorIdList) { + List result = new ArrayList<>(); + + if (monitorIdList == null || monitorIdList.isEmpty()) { + return result; + } + + int start = 0; + int end = 0; + + for (int i = 1; i < monitorIdList.size(); i++) { + if (monitorIdList.get(i).equals(monitorIdList.get(i - 1))) { + end = i; + } else { + if (start != end) { + result.add(new int[]{start, end}); + } + start = i; + end = i; + } + } + + if (start != end) { + result.add(new int[]{start, end}); + } + + return result; + } + /** * 创建表格样式 * diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java index 412cf097..7db82206 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java @@ -187,7 +187,8 @@ public class dataAnalysisController extends BaseController { @PostMapping("/classificationExport") @ResponseBody - public void classificationExport(HttpServletResponse response, @RequestParam(required = false) Map paramMap) { + public void classificationExport(HttpServletResponse response, @RequestParam(required = false) Map paramMap) + { List list = dataAnalysisService.classificationExportReport(paramMap); List originalList = SpringUtils.deepCopy(list); @@ -198,12 +199,18 @@ public class dataAnalysisController extends BaseController { ArrayList threeList = new ArrayList<>(); ArrayList fourList = new ArrayList<>(); ArrayList fiveList = new ArrayList<>(); + ArrayList threeMList = new ArrayList<>(); + ArrayList fourMList = new ArrayList<>(); + ArrayList fiveMList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { oneList.add(list.get(i).getOneExpend() == null ? "" : list.get(i).getOneExpend().toPlainString()); twoList.add(list.get(i).getTwoExpend() == null ? "" : list.get(i).getTwoExpend().toPlainString()); threeList.add(list.get(i).getThreeExpend() == null ? "" : list.get(i).getThreeExpend().toPlainString()); fourList.add(list.get(i).getFourExpend() == null ? "" : list.get(i).getFourExpend().toPlainString()); fiveList.add(list.get(i).getFiveExpend() == null ? "" : list.get(i).getFiveExpend().toPlainString()); + threeMList.add(list.get(i).getThreeMonitorId() == null ? "" : list.get(i).getThreeMonitorId()); + fourMList.add(list.get(i).getFourMonitorId() == null ? "" : list.get(i).getFourMonitorId()); + fiveMList.add(list.get(i).getFiveMonitorId() == null ? "" : list.get(i).getFiveMonitorId()); } List oneListIndices = findConsecutiveIndices(oneList); for (int[] consecutiveIndex : oneListIndices) { @@ -217,24 +224,27 @@ public class dataAnalysisController extends BaseController { list.get(i).setTwoExpend(null); } } - List threeListIndices = findConsecutiveIndices(threeList); + List threeListIndices = findConsecutiveIndices(threeList, threeMList); for (int[] consecutiveIndex : threeListIndices) { + if(consecutiveIndex[1] - consecutiveIndex[0] < 1){ + continue; + } for (int i = consecutiveIndex[0] + 1; i < consecutiveIndex[1] + 1; i++) { list.get(i).setThreeExpend(null); } } - List fourListIndices = findConsecutiveIndices(fourList); + List fourListIndices = findConsecutiveIndices(fourList, fourMList); for (int[] consecutiveIndex : fourListIndices) { - if (consecutiveIndex[1] - consecutiveIndex[0] < 2) { + if(consecutiveIndex[1] - consecutiveIndex[0] < 1){ continue; } for (int i = consecutiveIndex[0] + 1; i < consecutiveIndex[1] + 1; i++) { list.get(i).setFourExpend(null); } } - List fiveListIndices = findConsecutiveIndices(fiveList); + List fiveListIndices = findConsecutiveIndices(fiveList, fiveMList); for (int[] consecutiveIndex : fiveListIndices) { - if (consecutiveIndex[1] - consecutiveIndex[0] < 2) { + if(consecutiveIndex[1] - consecutiveIndex[0] < 1){ continue; } for (int i = consecutiveIndex[0] + 1; i < consecutiveIndex[1] + 1; i++) { diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java index 4c4e19ed..0321117c 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java @@ -320,7 +320,6 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService { baseLineLoss.setParams(params); List baseLineLosses = baseLineLossMapper.selectBaseLineLossList(baseLineLoss); try { - List lineMonitorList = baseLineMonitorMapper.selectBaseLineMonitorList(new BaseLineMonitor()); for (BaseLineLoss lineLoss : baseLineLosses) { HashMap hashMap = new HashMap<>(); List> energyConsumptionList = new ArrayList<>(); diff --git a/op-modules/op-energy/src/main/resources/mapper/base/BaseLineMonitorMapper.xml b/op-modules/op-energy/src/main/resources/mapper/base/BaseLineMonitorMapper.xml index ffeffcca..e610bea3 100644 --- a/op-modules/op-energy/src/main/resources/mapper/base/BaseLineMonitorMapper.xml +++ b/op-modules/op-energy/src/main/resources/mapper/base/BaseLineMonitorMapper.xml @@ -32,43 +32,93 @@ - select objid, parent_id, monitor_id, monitor_name, monitor_addr, monitor_type, monitor_status, collect_device_id, build_id, ancestors, grade, correct_value, is_ammeter, line_name, line_length, line_status, power_capacity, water_capacity, dept_id, user_id, create_by, create_time, update_by, update_time from base_line_monitor + select blm.objid, + blm.parent_id, + blm.monitor_id, + bmi.monitor_name, + bmi.monitor_addr, + blm.monitor_type, + blm.monitor_status, + blm.collect_device_id, + blm.build_id, + blm.ancestors, + blm.grade, + blm.correct_value, + blm.is_ammeter, + blm.line_name, + blm.line_length, + blm.line_status, + blm.power_capacity, + blm.water_capacity, + blm.dept_id, + blm.user_id, + blm.create_by, + blm.create_time, + blm.update_by, + blm.update_time + from base_line_monitor blm + left join base_monitor_info bmi on blm.monitor_id = bmi.monitor_id diff --git a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml index 84af652d..04d8d248 100644 --- a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml +++ b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml @@ -88,13 +88,13 @@ (SELECT t.monitor_id FROM base_monitor_info t WHERE dbo.FIND_IN_SET(#{monitorSubset}, ancestors) > 0)) - and begin_time between #{params.beginBeginTime} and #{params.endBeginTime} + and CONVERT(VARCHAR(17), begin_time, 120) between #{params.beginBeginTime} and #{params.endBeginTime} - and begin_time between #{params.startTime} and #{params.endTime} + and CONVERT(VARCHAR(17), begin_time, 120) between #{params.startTime} and #{params.endTime} - and begin_time between #{params.beginCollectTime} and #{params.endCollectTime} + and CONVERT(VARCHAR(17), begin_time, 120) between #{params.beginCollectTime} and #{params.endCollectTime} and end_time = #{endTime} and record_time = #{recordTime} @@ -220,9 +220,8 @@ rpd.monitor_id monitorId, m.monitor_name monitorName, m.monitor_addr address, - sum(isnull(ert.expend,0)) expend, + sum(isnull(rpd.expend,0)) expend, max(rpd.meter_value) meterValue, - GROUP_CONCAT(DISTINCT bpu.user_name SEPARATOR ',') owningUser, concat(#{beginCollectTime},' 至 ',#{endCollectTime}) timeRange, m.monitor_hierarchy monitorHierarchy, m.grade @@ -243,7 +242,7 @@ left join base_public_user bpu on bmp.public_share_id = bpu.id - and left(CONVERT(VARCHAR(17), rpd.begin_time, 120)e,10) between #{beginCollectTime} and #{endCollectTime} + and left(CONVERT(VARCHAR(17), rpd.begin_time, 120),10) between #{beginCollectTime} and #{endCollectTime} and rpd.monitor_id IN diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java index c2de7b11..a75a09c4 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesReportWorkConsume.java @@ -114,6 +114,24 @@ public class MesReportWorkConsume extends BaseEntity { private String planQuantity; private String machineCode; private String rspos;//sap物料项目编号 + private String erfmg; + private String erfme; + + public String getErfmg() { + return erfmg; + } + + public void setErfmg(String erfmg) { + this.erfmg = erfmg; + } + + public String getErfme() { + return erfme; + } + + public void setErfme(String erfme) { + this.erfme = erfme; + } public String getRspos() { return rspos; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesLineMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesLineMapper.java index b6c32d7b..c578bd0d 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesLineMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesLineMapper.java @@ -72,7 +72,7 @@ public interface MesLineMapper { MesLine selectInfoByLineProduct(MesLine mesLine); - void insertLineProduct(MesLine mesLine); + int insertLineProduct(MesLine mesLine); void updateLineProduct(MesLine mesLine); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineServiceImpl.java index 7217382a..f683ea81 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineServiceImpl.java @@ -1,6 +1,7 @@ package com.op.mes.service.impl; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -14,6 +15,7 @@ import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.mes.domain.MesLineProcess; import com.op.mes.domain.MesLineProduct; +import com.op.mes.mapper.MesLineProductMapper; import com.op.mes.service.IMesLineProcessService; import com.op.mes.service.IMesLineProductService; import org.apache.commons.collections4.CollectionUtils; @@ -43,6 +45,9 @@ public class MesLineServiceImpl implements IMesLineService { @Autowired private MesLineMapper mesLineMapper; + @Autowired + private MesLineProductMapper mesLineProductMapper; + @Autowired private IMesLineProcessService mesLineProcessService; @Autowired @@ -97,49 +102,20 @@ public class MesLineServiceImpl implements IMesLineService { */ @Override @DS("#header.poolName") - @Transactional(propagation = Propagation.REQUIRED) + // @Transactional(propagation = Propagation.REQUIRED) public int insertMesLine(MesLine mesLine) { - mesLine.setCreateTime(DateUtils.getNowDate()); - mesLine.setCreateBy(SecurityUtils.getUsername()); - mesLine.setId(IdUtils.fastSimpleUUID()); - String belongTo = mesLine.getId(); // 获取工厂编码 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String key = "#header.poolName"; String factoryCode = request.getHeader(key.substring(8)).replace("ds_", ""); - mesLine.setFactoryCode(factoryCode); - // 绑定工艺 - List processList = mesLine.getProcessList(); - List qualityList = mesLine.getQualityList(); - if (!CollectionUtils.isEmpty(processList)) { - - String lineCode = mesLine.getLineCode(); - String lineName = mesLine.getLineName(); - for (int i = 0; i < processList.size(); i++) { - MesLineProcess mesLineProcess = new MesLineProcess(); - mesLineProcess.setBelongTo(belongTo); - mesLineProcess.setProcessName(processList.get(i)); - mesLineProcess.setQuality(qualityList.get(i)); - mesLineProcess.setLineCode(lineCode); - mesLineProcess.setLineName(lineName); - mesLineProcess.setFactoryCode(factoryCode); - mesLineProcessService.insertMesLineProcess(mesLineProcess); - } - } // 绑定产品 - List productList = mesLine.getProductList(); - if (CollectionUtils.isNotEmpty(productList)) { - for (MesLineProduct item : productList) { - item.setId(IdUtils.fastSimpleUUID()); - item.setBelongTo(belongTo); - item.setFactoryCode(factoryCode); - item.setCreateBy(SecurityUtils.getUsername()); - item.setCreateTime(DateUtils.getNowDate()); - } - mesLineProductService.batchInsertMesLineProduct(productList); - } + mesLine.setId(IdUtils.fastSimpleUUID()); + mesLine.setFactoryCode(factoryCode); + mesLine.setCreateBy(SecurityUtils.getUsername()); + mesLine.setCreateTime(DateUtils.getNowDate()); + int m = mesLineMapper.insertLineProduct(mesLine); - return mesLineMapper.insertMesLine(mesLine); + return m; } /** diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml index 64ab6d24..6815cce6 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml @@ -204,7 +204,7 @@ select id, line_code, use_man, efficiency from mes_line_product where del_flag = '0' and line_code = #{lineCode} - and use_man = #{useMan} and efficiency = #{efficiency} + and product_code = #{productCode} @@ -671,6 +672,9 @@ from base_product where del_flag = '0' and product_code = #{prodCode} + insert into mes_prepare_detail @@ -760,14 +764,15 @@ INSERT INTO mes_prepare_detail ( record_id,prepare_id,material_code,material_name,unit, quantity,create_by,create_time,factory_code,status, - locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order,attr1 + locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order,attr1, + erfmg,erfme )VALUES ( #{d.recordId},#{d.prepareId},#{d.materialCode},#{d.materailName},#{d.unit}, #{d.quantity},#{d.createBy},#{d.createTime},#{d.factoryCode},#{d.status}, #{d.locator},#{d.needDate},#{d.recoil},#{d.fundQuanlity},#{d.buyFlag},#{d.parentWorkOrder}, - #{d.attr1} + #{d.attr1},#{d.erfmg},#{d.erfme} ) @@ -778,7 +783,7 @@ product_name,unit,quantity_split,route_code,prod_line_code, product_date,parent_order, status,create_by,create_time, prod_type,factory_code,end_flag,del_flag,sort_no, - belong_work_order + belong_work_order,shift_id )VALUES ( @@ -786,7 +791,7 @@ #{d.productName},#{d.unit},#{d.quantitySplit},#{d.routeCode},#{d.prodLineCode}, #{d.productDate},#{d.parentOrder},#{d.status},#{d.createBy},#{d.createTime}, #{d.prodType}, #{d.factoryCode},#{d.endFlag},'2',#{d.sortNo}, - #{d.belongWorkOrder} + #{d.belongWorkOrder},#{d.shiftId} ) diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java index 9b7f1462..4d678ccc 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java @@ -214,6 +214,15 @@ public class QcCheckTaskIncome extends BaseEntity { private String pgzg;//QC主管:SFXYZG字段为"是",则此项选择QC主管信息 private String pgzr;//质量主管 private String oaFactoryF;//异常范围 + private String sccj; + + public String getSccj() { + return sccj; + } + + public void setSccj(String sccj) { + this.sccj = sccj; + } public String getOaFactoryF() { return oaFactoryF; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java index 971a2d15..01fd5968 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckUnqualified.java @@ -132,6 +132,15 @@ public class QcCheckUnqualified extends BaseEntity { private String pgzg;//QC主管:SFXYZG字段为"是",则此项选择QC主管信息 private String pgzr;//质量主管 private String oaFactoryF; + private String sccj;//所属车间 + + public String getSccj() { + return sccj; + } + + public void setSccj(String sccj) { + this.sccj = sccj; + } public String getOaFactoryF() { return oaFactoryF; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcMaterialGroupService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcMaterialGroupService.java index bacb239e..8b14ef83 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcMaterialGroupService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcMaterialGroupService.java @@ -23,7 +23,7 @@ public interface IQcMaterialGroupService { public QcMaterialGroup selectQcMaterialGroupById(String id); /** - * 获得原始物料分组 + * 获得检验标准 * @param qcMaterialGroup * @return */ diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java index 41b62061..6e099a99 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java @@ -140,7 +140,7 @@ public class QcCheckTaskIncomeServiceImpl implements /** * 新增来料检验 - * + * 来料检验要根据检验标准进行 * @param qcCheckTaskIncome 来料检验 * @return 结果 */ @@ -640,7 +640,7 @@ public class QcCheckTaskIncomeServiceImpl implements } @Override - @Transactional(rollbackFor = Exception.class) + //@Transactional(rollbackFor = Exception.class) public int commitCheckResults(QcCheckTaskIncome qcCheckTaskIncome) { logger.info("质检提交参数:"+JSONObject.toJSONString(qcCheckTaskIncome)); List details = qcCheckTaskIncome.getQcCheckTaskDetails(); @@ -815,25 +815,28 @@ public class QcCheckTaskIncomeServiceImpl implements if("produce".equals(qcCheckTaskIncome.getTypeCode())){ unqualified.setTypeCode(qcCheckTaskIncome.getTypeCode()); unqualified.setSfgyswt(qcCheckTaskIncome.getSfgyswt()); - + unqualified.setUser(qcCheckTaskIncome.getUpdateBy()); //申请人- - unqualified.setSqr(qcCheckTaskIncome.getSqr()); + unqualified.setSqr("MSL#"+qcCheckTaskIncome.getSqr()); //申请部门 unqualified.setSqbm(qcCheckTaskIncome.getSqbm()); + //所属车间 + unqualified.setSccj("MSD#"+qcCheckTaskIncome.getSccj()); //实际生产数量 unqualified.setQuality(qcCheckTaskIncome.getQuality().toString()); //发现地点 unqualified.setCheckLoc(qcCheckTaskIncome.getCheckLoc()); //是否需要主管审核 - unqualified.setSfgyswt(qcCheckTaskIncome.getSfgyswt()); + unqualified.setSfxyzg(qcCheckTaskIncome.getSfxyzg()); if(qcCheckTaskIncome.getSfgyswt().equals("0")){//是 //qc主管 - unqualified.setPgzg(qcCheckTaskIncome.getPgzg()); + unqualified.setPgzg("MSL#"+qcCheckTaskIncome.getPgzg()); //质量主管 - unqualified.setPgzr(qcCheckTaskIncome.getPgzr()); + unqualified.setPgzr("MSL#"+qcCheckTaskIncome.getPgzr()); } //是否供应商问题 unqualified.setSfgyswt(qcCheckTaskIncome.getSfgyswt()); + unqualified.setOaFactoryF(qcCheckTaskIncome.getOaFactoryF()); }else if("material".equals(qcCheckTaskIncome.getTypeCode())){ unqualified.setTypeCode(qcCheckTaskIncome.getTypeCode()); @@ -859,19 +862,20 @@ public class QcCheckTaskIncomeServiceImpl implements //来料数量 unqualified.setQuality(qcCheckTaskIncome.getQuality().toString()); //来料单位 - unqualified.setUnit(qcCheckTaskIncome.getUnit()); + //CAR:0 PC:1 其它:2 吨:3 千克:4 + unqualified.setUnit(getConvertUnit(qcCheckTaskIncome.getUnit())); //检验编号 unqualified.setCheckNo(qcCheckTaskIncome.getCheckNo()); //仓储报检人-李爱娟 - unqualified.setCzbjr(qcCheckTaskIncome.getCzbjr()); + unqualified.setCzbjr("MSL#"+qcCheckTaskIncome.getCzbjr()); //物料类别 unqualified.setMaterialType(qcCheckTaskIncome.getMaterialType()); //物料来源 unqualified.setMaterialFrom(qcCheckTaskIncome.getMaterialFrom()); //QC主管-朱继新 - unqualified.setQczg(qcCheckTaskIncome.getQczg()); + unqualified.setQczg("MSL#"+qcCheckTaskIncome.getQczg()); //申请人- - unqualified.setSqr(qcCheckTaskIncome.getSqr()); + unqualified.setSqr("MSL#"+qcCheckTaskIncome.getSqr()); unqualified.setUser(qcCheckTaskIncome.getUpdateBy()); //转出方 unqualified.setZcf(qcCheckTaskIncome.getZcf()); @@ -911,6 +915,8 @@ public class QcCheckTaskIncomeServiceImpl implements .replace("${quality}", qcCheckTaskIncome.getQuality()+"\n"); if(StringUtils.isNotBlank(qcCheckTaskIncome.getIncomeBatchNo())){ contentInfo = contentInfo.replace("${incomeBatchNo}", qcCheckTaskIncome.getIncomeBatchNo()+"\n"); + }else{ + contentInfo = contentInfo.replace("${incomeBatchNo}", "无"+"\n"); } if(StringUtils.isNotBlank(qcCheckTaskIncome.getOrderNo())){ contentInfo = contentInfo.replace("${orderNo}", qcCheckTaskIncome.getOrderNo()+"\n"); @@ -931,6 +937,15 @@ public class QcCheckTaskIncomeServiceImpl implements //发企业微信--------------------结束 } } + //CAR:0 PC:1 其它:2 吨:3 千克:4 + protected String getConvertUnit(String unit){ + String unitOa= ""; + switch (unit) { + case "ST": unitOa="1"; + default: unitOa="1"; + } + return unitOa; + } protected String getSampleQua(QcCheckTaskIncome qcCheckTaskIncome){ String sampleQuaStr = ""; @@ -993,4 +1008,9 @@ public class QcCheckTaskIncomeServiceImpl implements public SysUser getOaUserId(SysUser getUserIdList) { return qcCheckTaskIncomeMapper.getOaUserId(getUserIdList); } + + public static void main(String args[]){ + QcCheckTaskIncomeServiceImpl impl = new QcCheckTaskIncomeServiceImpl(); + System.out.println(impl.getConvertUnit("ST")); + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java index 0aba0dd8..9a4c1882 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java @@ -145,6 +145,7 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService * 新增生产过程检验任务 * * @param qcCheckTaskProduce 生产过程检验任务 + * 巡检 首检 * @return 结果 */ @Override diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java index e851b40a..16b45793 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTypeProjectServiceImpl.java @@ -247,7 +247,7 @@ public class QcCheckTypeProjectServiceImpl implements IQcCheckTypeProjectService return failOrder; } - @Transactional(rollbackFor = Exception.class) + //@Transactional(rollbackFor = Exception.class) public String syncFunc(QcMaterialGroupDetail materialGroupDetail){ String failOrder = ""; Date nowDate = DateUtils.getNowDate(); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java index 39466663..8f681429 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckUnqualifiedServiceImpl.java @@ -177,14 +177,13 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService * \"supplier\":\"广东高顺印刷包装有限公司\",\"CHARG\":\"null\",\"comeQty\":\"1117\", * \"DW\":\"ST\",\"JYBH\":\"202404180042\",\"BJY\":\"202404180042\",\"WLLY\":\"2\", * \"memo\":\"不合格\",\"PZGLBZG\":\"不合格\"}","user":"999999","requestLevel":0,"workflowId":113454} - */ private AjaxResult createLLOA(QcCheckUnqualified task){ //QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(task.getTaskId()); //发起来料检验OA流程 Map paramMap = new HashMap<>(); - paramMap.put("user",task.getSqr());//提交人工号 + paramMap.put("user",task.getUser());//提交人工号 paramMap.put("requestLevel",0);//流程紧急度 paramMap.put("requestName","ZL0010-来料检验不合格控制流程");//流程名称 paramMap.put("workflowId",113454);//该流程对应的唯- workFlowld @@ -195,7 +194,7 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService StringBuffer mainObject = new StringBuffer(); mainObject.append("{"); - mainObject.append("\"SQR\":"+"\""+task.getSqr()+"");//申请人-- + mainObject.append("\"SQR\":"+"\""+task.getSqr()+"\"");//申请人-- mainObject.append(",\"CQ\":"+task.getOaFactory());//厂区-- mainObject.append(",\"LLLB\":"+task.getMaterialType());//来料类别【0、1】 mainObject.append(",\"MATNR\":"+"\""+task.getMaterialCode()+"\"");//物料编码 @@ -306,6 +305,29 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService "SFGYSWT":"1" *是否供应商问题 1非供应商问题 0是供应商问题 }" } + + http://oa.lanju.cn/lanju/oa/submitOa.jsp? + user=9999999&requestLevel=0& + requestName=品质异常流程测试& + workflowId=113455& + mainObject={"CPMC":"榄菊加大盘野菊花蚊香塑料筒装(18装)(36单圈)", + "CPBM":"000000010101046600", + "SQBM":"0", + "SQR":"MSL#999999", \"SQR\":\"MSL#002007\", + "SQSJ":"2024-07-18", + "SCCJ":"MSD#10000769", \"SCCJ\":\"MSD#10000152\", + "SCPH":"LJ20240705ABACEQ", + "SCSL":100, + "FXDD":"测试发现地点", + "FXRQ":"2024-07-18 16:26:45", + "BH":"202407040001", + "YCFW":"1", + "PZYCMS":"zxl测试不合格发起oa", + "Notes":"", + "SFXYZG":"0", + "PGZG":"MSL%23001539", + "PGZR":"MSL%23001539", + "SFGYSWT":"0"} * @param task * @return */ @@ -314,31 +336,31 @@ public class QcCheckUnqualifiedServiceImpl implements IQcCheckUnqualifiedService QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(task.getTaskId()); //发起来料检验OA流程 Map paramMap = new HashMap<>(); - paramMap.put("user",task.getSqr());//提交人工号 + paramMap.put("user",task.getUser());//提交人工号 paramMap.put("requestLevel",0);//流程紧急度 paramMap.put("requestName","ZL0030-品质异常流程-智能制造-"+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",detailInfo.getIncomeTime())+"(产品名称:"+detailInfo.getMaterialName()+")");//流程名称 paramMap.put("workflowId",113455);//该流程对应的唯- workFlowld StringBuffer mainObject = new StringBuffer(); mainObject.append("{"); - mainObject.append("\"CPMC\":"+detailInfo.getMaterialName());//产品名称 - mainObject.append(",\"CPBM\":"+detailInfo.getMaterialCode());//产品编码 - mainObject.append(",\"SQBM\":"+task.getSqbm());//0品质保障部 + mainObject.append("\"CPMC\":"+"\""+detailInfo.getMaterialName()+"\"");//产品名称 + mainObject.append(",\"CPBM\":"+"\""+detailInfo.getMaterialCode()+"\"");//产品编码 + mainObject.append(",\"SQBM\":"+"\""+task.getSqbm()+"\"");//0品质保障部 mainObject.append(",\"SQR\":"+"\""+task.getSqr()+"\"");//申请人:默认当前用户 mainObject.append(",\"SQSJ\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd",detailInfo.getCheckTime())+"\"");//申请时间 - mainObject.append(",\"SCCJ\":"+"\"162\"");//所属车间 + mainObject.append(",\"SCCJ\":"+"\""+task.getSccj()+"\"");//所属车间 mainObject.append(",\"SCPH\":"+"\""+detailInfo.getIncomeBatchNo()+"\"");//生产批号 - mainObject.append(",\"SCSL\":"+"\""+task.getQuality()+"\"");//生产数量 + mainObject.append(",\"SCSL\":"+task.getQuality());//生产数量 mainObject.append(",\"FXDD\":"+"\""+task.getCheckLoc()+"\"");//发现地点 - mainObject.append(",\"FXRQ\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",detailInfo.getCheckTime())+"\"");//发现日期 + mainObject.append(",\"FXRQ\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd",detailInfo.getCheckTime())+"\"");//发现日期 mainObject.append(",\"BH\":"+"\""+detailInfo.getCheckNo()+"\"");//编号:流水号 年月日+四位流水号 - mainObject.append(",\"YCFW\":"+task.getOaFactoryF()+"\"");//*异常范围:下拉框榄菊所有工厂 1代表小榄工厂 + mainObject.append(",\"YCFW\":"+"\""+task.getOaFactoryF()+"\"");//*异常范围:下拉框榄菊所有工厂 1代表小榄工厂 mainObject.append(",\"PZYCMS\":"+"\""+detailInfo.getRemark()+"\"");//品质异常描述 mainObject.append(",\"Notes\":"+"\"\"");//测试备注 mainObject.append(",\"SFXYZG\":"+"\""+task.getSfxyzg()+"\"");//*是否需要主管审核 1否 0是 mainObject.append(",\"PGZG\":"+"\""+task.getPgzg()+"\"");//QC主管:SFXYZG字段为"是",则此项选择QC主管信息 mainObject.append(",\"PGZR\":"+"\""+task.getPgzr()+"\"");//质量主管 660:朱继新 - mainObject.append(",\"SFGYSWT\":"+task.getSfgyswt()+"\"");//*是否供应商问题 1非供应商问题 0是供应商问题 + mainObject.append(",\"SFGYSWT\":"+"\""+task.getSfgyswt()+"\"");//*是否供应商问题 1非供应商问题 0是供应商问题 mainObject.append("}"); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcGoalServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcGoalServiceImpl.java index f3aa0a00..44af3945 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcGoalServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcGoalServiceImpl.java @@ -1,22 +1,35 @@ package com.op.quality.service.impl; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.Iterator; -import java.util.List; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.StringUtils; +import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; +import com.op.quality.domain.QcCheckTaskIncome; +import com.op.quality.domain.QcCheckUnqualified; import com.op.quality.domain.vo.TreeSelect; +import com.op.quality.mapper.QcCheckTaskIncomeMapper; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.RemoteQualityService; +import com.op.system.api.domain.SysNoticeGroup; +import com.op.system.api.domain.dto.WechartDTO; +import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; import com.sun.xml.bind.v2.TODO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.quality.mapper.QcGoalMapper; import com.op.quality.domain.QcGoal; import com.op.quality.service.IQcGoalService; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -31,8 +44,24 @@ import javax.servlet.http.HttpServletRequest; */ @Service public class QcGoalServiceImpl implements IQcGoalService { + protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private QcGoalMapper qcGoalMapper; +// @Autowired +// private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper; +// @Autowired +// private RemoteOpenService remoteOpenService; +// +// private static Pattern p2= Pattern.compile("<[^>]+>"); + + @Autowired + private RemoteOpenService remoteOpenService; + @Autowired + private RemoteQualityService remoteQualityService; + + @Autowired + private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper; + /** * 查询质量目标 @@ -59,9 +88,147 @@ public class QcGoalServiceImpl implements IQcGoalService { for (QcGoal item : qcGoals) { item.setHasChildren(true); } +// QcCheckUnqualified task = new QcCheckUnqualified(); +// task.setUser("002007");//9999999 +// task.setSqr("660"); +// task.setOaFactory("0"); +// task.setMaterialType("0"); +// task.setMaterialCode("000000040000015128"); +// task.setMaterialName("榄菊蚊香加大盘Ф137.5mm×H100mm36圈内增高塑料筒(有字盖)2201"); +// task.setSupplierCode("0000100330"); +// task.setSupplierName("中山市荣星塑料包装有限公司"); +// task.setQuality("15296"); +// task.setUnit("ST"); +// task.setCheckNo("202407130047"); +// task.setCzbjr("284"); +// task.setMaterialFrom("2"); +// task.setZcf("0"); +// task.setZcoemcm("转出工厂"); +// task.setRemark("zxl测试不合格发起oa"); +// task.setQczg("660"); +// this.createLLOA(task); + +// //手持来料质检触发 +// QcCheckTaskIncomeDTO qcCheckTaskIncomeDTO = new QcCheckTaskIncomeDTO(); +// qcCheckTaskIncomeDTO.setPoolName("ds_1000" ); +// qcCheckTaskIncomeDTO.setCheckLoc("mjtest"); +// qcCheckTaskIncomeDTO.setCheckType("checkTypeLL"); +//// qcCheckTaskIncomeDTO.setCheckManCode("mobile"); +//// qcCheckTaskIncomeDTO.setCheckManName("手持测试用户"); +// qcCheckTaskIncomeDTO.setSupplierCode("0000102272"); +// qcCheckTaskIncomeDTO.setFactoryCode("1000"); +// qcCheckTaskIncomeDTO.setSupplierName("广州市彩晴包装印刷有限公司"); +// qcCheckTaskIncomeDTO.setOrderType("8040");//包材固定码 +// qcCheckTaskIncomeDTO.setUnit("KG"); +// qcCheckTaskIncomeDTO.setQuality(new BigDecimal("10")); +// qcCheckTaskIncomeDTO.setMaterialCode("000000040000011094"); +// qcCheckTaskIncomeDTO.setMaterialName("LANJU 出口封口胶(1000米/卷)(1901)"); +// qcCheckTaskIncomeDTO.setIncomeBatchNo("202312250001"); +// qcCheckTaskIncomeDTO.setOrderNo("4500297568"); +// qcCheckTaskIncomeDTO.setIncomeTime(new Date()); +// remoteQualityService.createIncomeTask(qcCheckTaskIncomeDTO); + +// 品质检验 +// QcCheckUnqualified task = new QcCheckUnqualified(); +// task.setTaskId("3ffb199037ba46a48e39cb148d7ad9e0"); +// task.setUser("002007"); +// task.setSqbm("0"); +// task.setSqr("MSL#002007"); +// task.setSccj("MSD#10000152"); +// task.setQuality("100"); +// task.setCheckLoc("测试发现地点"); +// task.setOaFactoryF("0"); +// task.setSfxyzg("0"); +// task.setPgzg("MSL#019184"); +// task.setPgzr("MSL#019184"); +// task.setSfgyswt("0"); +// this.createProduceOA(task); return qcGoals; } + private AjaxResult createLLOA(QcCheckUnqualified task){ + + //QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(task.getTaskId()); + //发起来料检验OA流程 + Map paramMap = new HashMap<>(); + paramMap.put("user",task.getUser());//提交人工号 + paramMap.put("requestLevel",0);//流程紧急度 + paramMap.put("requestName","ZL0010-来料检验不合格控制流程");//流程名称 + paramMap.put("workflowId",113454);//该流程对应的唯- workFlowld + + if(StringUtils.isEmpty(task.getIncomeBatchNo())){ + task.setIncomeBatchNo(DateUtils.parseDateToStr("yyyyMMdd",new Date())); + } + + StringBuffer mainObject = new StringBuffer(); + mainObject.append("{"); + mainObject.append("\"SQR\":"+"\""+task.getSqr()+"\"");//申请人-- + mainObject.append(",\"CQ\":"+task.getOaFactory());//厂区-- + mainObject.append(",\"LLLB\":"+task.getMaterialType());//来料类别【0、1】 + mainObject.append(",\"MATNR\":"+"\""+task.getMaterialCode()+"\"");//物料编码 + mainObject.append(",\"MAKTX\":"+"\""+task.getMaterialName()+"\"");//物料名称 + mainObject.append(",\"suppliernum\":"+"\""+task.getSupplierCode()+"\"");//供应商编码 + mainObject.append(",\"supplier\":"+"\""+task.getSupplierName()+"\"");//供应商名称 + mainObject.append(",\"CHARG\":"+"\""+task.getIncomeBatchNo()+"\"");//生产批号 + mainObject.append(",\"comeQty\":"+"\""+task.getQuality()+"\"");//来料数量 + mainObject.append(",\"DW\":"+"\""+task.getUnit()+"\"");//来料单位 + mainObject.append(",\"testDate\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd",new Date())+"\"");//检验日期 + mainObject.append(",\"JYBH\":"+"\""+task.getCheckNo()+"\"");//检验编码 + mainObject.append(",\"BJY\":"+"\""+task.getCzbjr()+"\"");//仓储报检人-- + mainObject.append(",\"WLLY\":"+"\""+task.getMaterialFrom()+"\"");//物料来源 + mainObject.append(",\"ZCF\":"+"\""+task.getZcf()+"\"");//转出方 + mainObject.append(",\"ZCOEMCM\":"+"\""+task.getZcoemcm()+"\"");//转出OEM厂名 + mainObject.append(",\"memo\":"+"\""+task.getRemark()+"\"");//不合格描述 + mainObject.append(",\"PZGLBZG\":"+"\""+task.getQczg()+"\"");//qc主管-- + mainObject.append("}"); + + paramMap.put("mainObject",mainObject.toString()); + logger.info("流程Id 113454:"+ JSONObject.toJSONString(paramMap)); + AjaxResult oaR = remoteOpenService.OAInspection(paramMap); + logger.info("流程Id 113454:"+ JSONObject.toJSONString(oaR)); + return oaR; + } + + private AjaxResult createProduceOA(QcCheckUnqualified task){ + + QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(task.getTaskId()); + //发起来料检验OA流程 + Map paramMap = new HashMap<>(); + paramMap.put("user",task.getUser());//提交人工号 + paramMap.put("requestLevel",0);//流程紧急度 + paramMap.put("requestName","ZL0030-品质异常流程-智能制造-"+DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",detailInfo.getIncomeTime())+"(产品名称:"+detailInfo.getMaterialName()+")");//流程名称 + paramMap.put("workflowId",113455);//该流程对应的唯- workFlowld + + StringBuffer mainObject = new StringBuffer(); + mainObject.append("{"); + mainObject.append("\"CPMC\":"+"\""+detailInfo.getMaterialName()+"\"");//产品名称 + mainObject.append(",\"CPBM\":"+"\""+detailInfo.getMaterialCode()+"\"");//产品编码 + mainObject.append(",\"SQBM\":"+"\""+task.getSqbm()+"\"");//0品质保障部 + mainObject.append(",\"SQR\":"+"\""+task.getSqr()+"\"");//申请人:默认当前用户 + mainObject.append(",\"SQSJ\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd",detailInfo.getCheckTime())+"\"");//申请时间 + mainObject.append(",\"SCCJ\":"+"\""+task.getSccj()+"\"");//所属车间 + mainObject.append(",\"SCPH\":"+"\""+detailInfo.getIncomeBatchNo()+"\"");//生产批号 + mainObject.append(",\"SCSL\":"+task.getQuality());//生产数量 + mainObject.append(",\"FXDD\":"+"\""+task.getCheckLoc()+"\"");//发现地点 + mainObject.append(",\"FXRQ\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd",detailInfo.getCheckTime())+"\"");//发现日期 + mainObject.append(",\"BH\":"+"\""+detailInfo.getCheckNo()+"\"");//编号:流水号 年月日+四位流水号 + mainObject.append(",\"YCFW\":"+"\""+task.getOaFactoryF()+"\"");//*异常范围:下拉框榄菊所有工厂 1代表小榄工厂 + mainObject.append(",\"PZYCMS\":"+"\""+detailInfo.getRemark()+"\"");//品质异常描述 + mainObject.append(",\"Notes\":"+"\"\"");//测试备注 + mainObject.append(",\"SFXYZG\":"+"\""+task.getSfxyzg()+"\"");//*是否需要主管审核 1否 0是 + mainObject.append(",\"PGZG\":"+"\""+task.getPgzg()+"\"");//QC主管:SFXYZG字段为"是",则此项选择QC主管信息 + mainObject.append(",\"PGZR\":"+"\""+task.getPgzr()+"\"");//质量主管 660:朱继新 + mainObject.append(",\"SFGYSWT\":"+"\""+task.getSfgyswt()+"\"");//*是否供应商问题 1非供应商问题 0是供应商问题 + + mainObject.append("}"); + + paramMap.put("mainObject",mainObject.toString()); + logger.info("流程Id 113455:"+ JSONObject.toJSONString(paramMap)); + AjaxResult oaR = remoteOpenService.OAInspection(paramMap); + logger.info("流程Id 113455:"+ JSONObject.toJSONString(oaR)); + return oaR; + } + @Override @DS("#header.poolName") public List selectChildrenByParent(QcGoal goal) { diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcMaterialGroupServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcMaterialGroupServiceImpl.java index b4ac41c6..9eded988 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcMaterialGroupServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcMaterialGroupServiceImpl.java @@ -54,7 +54,7 @@ public class QcMaterialGroupServiceImpl implements IQcMaterialGroupService { } /** - * 获取原始物料分组 + * 获取检验标准 * @param qcMaterialGroup * @return */ diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java index 48bc40b8..b4314e0d 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java @@ -632,9 +632,20 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { public static double calculateCpk(double[] data, double USL, double LSL) { double mean = calculateMean(data); double stdDev = calculateStandardDeviation(data); - double cpkUpper = (USL - mean) / (3 * stdDev); - double cpkLower = (mean - LSL) / (3 * stdDev); - return Math.min(cpkUpper, cpkLower); + if(new BigDecimal(USL).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(LSL).compareTo(BigDecimal.ZERO)>0){ + double cpkUpper = (USL - mean) / (3 * stdDev); + double cpkLower = (mean - LSL) / (3 * stdDev); + return Math.min(cpkUpper, cpkLower); + }else if(new BigDecimal(USL).compareTo(BigDecimal.ZERO)==0 && new BigDecimal(LSL).compareTo(BigDecimal.ZERO)>0){ + //无上限 + double cpkLower = (mean - LSL) / (3 * stdDev); + return cpkLower; + }else if(new BigDecimal(USL).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(LSL).compareTo(BigDecimal.ZERO)==0){ + //无下限 + double cpkUpper = (USL - mean) / (3 * stdDev); + return cpkUpper; + } + return 0; } // 计算均值 public static double calculateMean(double[] data) { @@ -736,5 +747,8 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { return days; } - + public static void main(String args[]){ + double a = 0.01; + System.out.println(new BigDecimal(a).compareTo(BigDecimal.ZERO)); + } } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml index a02a26d8..3e5cbec5 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml @@ -574,7 +574,7 @@ where del_flag='0' and sample_code like concat(#{sampleCode},'%') diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml index f26e1a89..57a272af 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml @@ -307,13 +307,20 @@ where del_flag = '0' @@ -40,10 +44,10 @@ - + select id, group_name, attr1, create_by, create_time, + update_by, update_time, factory_code, del_flag, + group_code + from qc_material_group where id = #{id} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapMaterialPreparationServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapMaterialPreparationServiceImpl.java index a17bdfdb..5efb9c9a 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapMaterialPreparationServiceImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapMaterialPreparationServiceImpl.java @@ -67,6 +67,10 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation String BDMNG = maraTable.getString("BDMNG"); String ZQLSL = maraTable.getString("ZQLSL"); String MEINS = maraTable.getString("MEINS"); + + String ERFMG = maraTable.getString("ERFMG"); + String ERFME = maraTable.getString("ERFME"); + String RGEKZ = maraTable.getString("RGEKZ"); String DBSKZ = maraTable.getString("DBSKZ"); log.info("备料单输出------" + "订单号:" + AUFNR @@ -79,20 +83,10 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation " - 需求量:" + BDMNG + " - 欠料数量:" + ZQLSL + " - 基本计量单位:" + MEINS + + " - 以输入单位计的数量:" + ERFMG + + " - 条目单位:" + ERFME + " - 标识:反冲:" + RGEKZ + " - 直接采购标识:" + DBSKZ); -// System.out.println("订单号:" + AUFNR -// + " - 预留/相关需求的项目编号:" + RSPOS + -// " - 物料号:" + MATNR + -// " - 物料描述(短文本):" + MAKTX + -// " - 工厂:" + WERKS + -// " - 库存地点:" + LGORT + -// " - 组件的需求日期 :" + BDTER + -// " - 需求量:" + BDMNG + -// " - 欠料数量:" + ZQLSL + -// " - 基本计量单位:" + MEINS + -// " - 标识:反冲:" + RGEKZ + -// " - 直接采购标识:" + DBSKZ ); SapMaterialPreparation sapMaterialPreparation = new SapMaterialPreparation(); sapMaterialPreparation.setAUFNR(AUFNR); sapMaterialPreparation.setBDMNG(BDMNG); @@ -106,6 +100,10 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation sapMaterialPreparation.setRSPOS(RSPOS); sapMaterialPreparation.setWERKS(WERKS); sapMaterialPreparation.setZQLSL(ZQLSL); + + sapMaterialPreparation.setERFMG(ERFMG); + sapMaterialPreparation.setERFME(ERFME); + sapMaterialPreparationList.add(sapMaterialPreparation); } String MSG = func.getExportParameterList().getString("MSG");