From ede491890e0557a54b3ed4dec5b1038171832c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=A5=89=E6=BA=90?= <1976974459@qq.com> Date: Fri, 14 Jul 2023 16:15:45 +0800 Subject: [PATCH] =?UTF-8?q?2023-07-14=EF=BC=8C=E8=AE=BE=E5=A4=87=E5=92=8C?= =?UTF-8?q?=E8=B4=A8=E9=87=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/modules/pms/data/EamWorkPlanData.java | 38 ++++ .../sys/modules/pms/mapper/QcMapper.java | 1 + .../pms/service/Impl/EamServiceImpl.java | 168 +++++++++++++++--- .../pms/service/Impl/QcServiceImpl.java | 24 ++- src/main/resources/mapper/pms/EamMapper.xml | 20 ++- src/main/resources/mapper/pms/QcMapper.xml | 1 + 6 files changed, 212 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/pms/data/EamWorkPlanData.java b/src/main/java/com/xujie/sys/modules/pms/data/EamWorkPlanData.java index c0a5a436..ba7525cd 100644 --- a/src/main/java/com/xujie/sys/modules/pms/data/EamWorkPlanData.java +++ b/src/main/java/com/xujie/sys/modules/pms/data/EamWorkPlanData.java @@ -8,11 +8,17 @@ import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; public class EamWorkPlanData extends QueryPage { + // 工厂号 private String site; + // 计划编码 private String planID; + // 计划描述 private String planDesc; + // 设备编码 private String objectID; + // 计划类型(A点检、B维保、C维修) private String functionType; + // 模板编码 private String propertiesCode; // 机修人员ID private String operator; @@ -22,28 +28,60 @@ public class EamWorkPlanData extends QueryPage { private String operatorName; // 审核人员名称 private String checkerName; + // 点检频率 private Integer planPeriod; + // 状态 private String status; + // 计划开始日期 @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date planStartDate; + // 计划结束日期 @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date planEndDate; + // 下次执行日期 @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date nextWorkDate; + // 计划创建时间 @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") private Date createdDate; + // 创建人 private String createdBy; + // 计划更新时间 @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") private Date updateDate; + // 更新人 private String updateBy; + // 版本 private Integer version; + // 备注 private String remark; + // 是否删除(逻辑删除) private String deleteFlag; + // 工单规则 + private String workOrderRule; + // 点检周期 + private String planCycle; + + public String getPlanCycle() { + return planCycle; + } + + public void setPlanCycle(String planCycle) { + this.planCycle = planCycle; + } + + public String getWorkOrderRule() { + return workOrderRule; + } + + public void setWorkOrderRule(String workOrderRule) { + this.workOrderRule = workOrderRule; + } public String getOperatorName() { return operatorName; diff --git a/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java b/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java index 9d7b9a14..be7c9d97 100644 --- a/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java +++ b/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java @@ -362,4 +362,5 @@ public interface QcMapper { List getTemplateListAll(QcTemplateData data); QcTemplateData searchPartRepeat(QcTemplateData partData); + } diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamServiceImpl.java index f8cfb19b..ce102caa 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamServiceImpl.java @@ -755,7 +755,6 @@ public class EamServiceImpl implements EamService { throw new RuntimeException("设备 " + objectData.getObjectID() + " 在该时段内已存在计划,请勿重复创建!"); } } - String planId = eamMapper.selectOrderId(inData); if (inData.getFunctionType().equals("A")){ inData.setPlanID("DJ" + planId); @@ -1033,7 +1032,6 @@ public class EamServiceImpl implements EamService { // throw new XJException(msg, Integer.parseInt(code)); // } - inData.setObjectID(inData.getObjectList().get(i).getObjectID()); // 查询当前记录是否存在 EamWorkPlanInData planData = eamMapper.queryWorkPlan(inData); @@ -1050,7 +1048,6 @@ public class EamServiceImpl implements EamService { } else if (inData.getFunctionType().equals("B")) { OrderNoHeader = "W"; } - if (planData.getPlanPeriod() == 0){ // 获得工单号 String no = eamMapper.queryPlanOrderNo(inData); @@ -1061,33 +1058,154 @@ public class EamServiceImpl implements EamService { }else { int compareTo = orderDate.compareTo(endDate); planData.setOrderDate(orderDate); - while (compareTo <= 0){ - // 获得工单号 - String no = eamMapper.queryPlanOrderNo(inData); - String orderNo = OrderNoHeader + no; - planData.setOrderNo(orderNo); - eamMapper.forInsertWorkOrder(planData); - // 设置下一次的工单时间 - calendar.clear(); - calendar.setTime(orderDate); - calendar.add(Calendar.DAY_OF_MONTH,planData.getPlanPeriod()); - orderDate = calendar.getTime(); - planData.setOrderDate(orderDate); - // 判断是否为工作日 - try { - Boolean workingDay = HolidayUtils.isWorkingDay(orderDate.getTime()); - if (!workingDay){ // 如果不是工作日 日期改为下次 + // 获取日 + calendar.clear(); + calendar.setTime(orderDate); + int day = calendar.get(Calendar.DAY_OF_MONTH); + // 如果是按月排单且选中的日期为28号以上 + if (planData.getPlanCycle().equals("月") && day > 28){ + if (day <= 30){ + while (compareTo <= 0){ + // 获得工单号 + String no = eamMapper.queryPlanOrderNo(inData); + String orderNo = OrderNoHeader + no; + planData.setOrderNo(orderNo); + // 新增工单 + eamMapper.forInsertWorkOrder(planData); + // 设置下一次的工单日期 calendar.clear(); calendar.setTime(orderDate); - calendar.add(Calendar.DAY_OF_MONTH,planData.getPlanPeriod()); + // 判断计划周期 + calendar.add(Calendar.MONTH,planData.getPlanPeriod()); + // 得到下个工单的日期 orderDate = calendar.getTime(); + if (orderDate.getMonth() != 2){ + orderDate.setDate(day); + } planData.setOrderDate(orderDate); + // 是否选择了工单生成规则 + if (planData.getWorkOrderRule()!= null || !planData.getWorkOrderRule().equals("")){ + // 用户选择了周日也创建工单,就不进行工作日判断,跳过本次循环 + if (planData.getWorkOrderRule().contains("A")){ + compareTo = orderDate.compareTo(endDate); + continue; + } + } + // 判断是否为工作日 + try { + Boolean workingDay = HolidayUtils.isWorkingDay(orderDate.getTime()); + if (!workingDay){ // 如果是节假日,日期改为下一天 + calendar.clear(); + calendar.setTime(orderDate); + calendar.add(Calendar.DATE,1); + orderDate = calendar.getTime(); + planData.setOrderDate(orderDate); + } + }catch (IOException e){ + e.printStackTrace(); + } + compareTo = orderDate.compareTo(endDate); + } + }else { + // 如果日期为31号 + while (compareTo <= 0){ + // 获得工单号 + String no = eamMapper.queryPlanOrderNo(inData); + String orderNo = OrderNoHeader + no; + planData.setOrderNo(orderNo); + // 新增工单 + eamMapper.forInsertWorkOrder(planData); + // 设置下一次的工单日期 + calendar.clear(); + calendar.setTime(orderDate); + // 判断计划周期 + calendar.add(Calendar.MONTH,planData.getPlanPeriod()); + // 得到下个工单的日期 + orderDate = calendar.getTime(); + int month = orderDate.getMonth() + 1; + if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){ + calendar.clear(); + calendar.setTime(orderDate); + if (calendar.get(Calendar.DAY_OF_MONTH) != 31){ + calendar.add(Calendar.DATE,1); + orderDate = calendar.getTime(); + } + } + planData.setOrderDate(orderDate); + // 是否选择了工单生成规则 + if (planData.getWorkOrderRule()!= null || !planData.getWorkOrderRule().equals("")){ + // 用户选择了周日也创建工单,就不进行工作日判断,跳过本次循环 + if (planData.getWorkOrderRule().contains("A")){ + compareTo = orderDate.compareTo(endDate); + continue; + } + } + // 判断是否为工作日 + try { + Boolean workingDay = HolidayUtils.isWorkingDay(orderDate.getTime()); + if (!workingDay){ // 如果是节假日,日期改为下一天 + calendar.clear(); + calendar.setTime(orderDate); + calendar.add(Calendar.DATE,1); + orderDate = calendar.getTime(); + planData.setOrderDate(orderDate); + } + }catch (IOException e){ + e.printStackTrace(); + } + compareTo = orderDate.compareTo(endDate); } - }catch (IOException e){ - e.printStackTrace(); } - compareTo = orderDate.compareTo(endDate); + }else { + // 其他情况 + while (compareTo <= 0){ + // 获得工单号 + String no = eamMapper.queryPlanOrderNo(inData); + String orderNo = OrderNoHeader + no; + planData.setOrderNo(orderNo); + // 新增工单 + eamMapper.forInsertWorkOrder(planData); + // 设置下一次的工单日期 + calendar.clear(); + calendar.setTime(orderDate); + // 判断计划周期 + if (planData.getPlanCycle().equals("天")){ + calendar.add(Calendar.DATE,planData.getPlanPeriod()); + }else if (planData.getPlanCycle().equals("周")){ + calendar.add(Calendar.DATE,7); + } else if (planData.getPlanCycle().equals("月")) { + calendar.add(Calendar.MONTH,planData.getPlanPeriod()); + } else if (planData.getPlanCycle().equals("年")) { + calendar.add(Calendar.YEAR,planData.getPlanPeriod()); + } + // 得到下个工单的日期 + orderDate = calendar.getTime(); + planData.setOrderDate(orderDate); + // 是否选择了工单生成规则 + if (planData.getWorkOrderRule()!= null || !planData.getWorkOrderRule().equals("")){ + // 用户选择了周日也创建工单,就不进行工作日判断,跳过本次循环 + if (planData.getWorkOrderRule().contains("A")){ + compareTo = orderDate.compareTo(endDate); + continue; + } + } + // 判断是否为工作日 + try { + Boolean workingDay = HolidayUtils.isWorkingDay(orderDate.getTime()); + if (!workingDay){ // 如果是节假日,日期改为下一天 + calendar.clear(); + calendar.setTime(orderDate); + calendar.add(Calendar.DATE,1); + orderDate = calendar.getTime(); + planData.setOrderDate(orderDate); + } + }catch (IOException e){ + e.printStackTrace(); + } + compareTo = orderDate.compareTo(endDate); + } } + // 更改plan表的状态为进行中 eamMapper.updatePlanStatus(planData); } @@ -1795,8 +1913,8 @@ public class EamServiceImpl implements EamService { List list = eamMapper.searchFileUrl(data); for (int i = 0; i < list.size(); i++) { String s = list.get(i).getUrl().replaceAll("\\\\", "/"); - String s1 = s.replace("D:/", "http://192.168.1.127:8088/"); - // String s1 = s.replace("D:/", "http://172.26.68.17:8091/"); + // String s1 = s.replace("D:/", "http://192.168.1.127:8088/"); + String s1 = s.replace("D:/", "http://172.26.68.17:8091/"); list.get(i).setUrl(s1); } return list; diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java index eee113f4..ee9252bd 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java @@ -695,7 +695,7 @@ public class QcServiceImpl implements QcService { // 新增模板 qcMapper.templateSave(task); // 新增模板中的项目 - int cells = row.getPhysicalNumberOfCells(); + int cells = row.getLastCellNum(); for (int i = 1; i <= cells - 12; i++) { String itemNo = row.getCell(11 + i).getStringCellValue(); String itemType = "D"; @@ -1056,16 +1056,22 @@ public class QcServiceImpl implements QcService { partData.setAc(templateData2.getAc()); partData.setRe(templateData2.getRe()); // 物料属性模板 - for (String field : data.getFieldList()){ - partData.setSpecialField(field); - // 查重 - QcTemplateData templateData1 = qcMapper.searchPartRepeat(partData); - if (templateData1 != null){ - throw new RuntimeException("该模板已存在属性中!"); + if (data.getFieldList().size() > 0){ + for (String field : data.getFieldList()){ + partData.setSpecialField(field); + // 查重 + QcTemplateData templateData1 = qcMapper.searchPartRepeat(partData); + if (templateData1 != null){ + throw new RuntimeException("模板 " + partData.getTemplateId() + ",工序 "+ partData.getSpecialField() + " 已存在属性中!"); + } + // 新增 + qcMapper.savePartAttributeDetails(partData); } + }else { // 新增 qcMapper.savePartAttributeDetails(partData); } + } } @@ -1190,7 +1196,7 @@ public class QcServiceImpl implements QcService { templateData.setSite(task.getSite()); templateData.setAttributeNo(task.getPartNo()); // 新增物料属性中的模板 - int cells = row.getPhysicalNumberOfCells(); + int cells = row.getLastCellNum(); for (int i = 1; i <= cells - 3; i++) { templateData.setTemplateId(row.getCell(2 + i).getRawValue()); QcTemplateData data = qcMapper.selectTemplateData(templateData); @@ -1299,7 +1305,7 @@ public class QcServiceImpl implements QcService { templateData.setSite(task.getSite()); templateData.setAttributeNo(task.getFamilyID()); // 新增物料属性中的模板 - int cells = row.getPhysicalNumberOfCells(); + int cells = row.getLastCellNum(); for (int i = 1; i <= cells - 2; i++) { templateData.setTemplateId(row.getCell(1 + i).getRawValue()); QcTemplateData data = qcMapper.selectTemplateData(templateData); diff --git a/src/main/resources/mapper/pms/EamMapper.xml b/src/main/resources/mapper/pms/EamMapper.xml index 140dff2f..4c14c58d 100644 --- a/src/main/resources/mapper/pms/EamMapper.xml +++ b/src/main/resources/mapper/pms/EamMapper.xml @@ -362,7 +362,8 @@ b.MinValue,b.ItemRemark,b.ItemType a.function_type, a.properties_code, a.plan_period, - d.code_desc + d.code_desc, + a.work_order_rule FROM eam_workPlan_overview a LEFT JOIN eam_properties_model_header d ON a.function_type = d.function_type and a.properties_code = d.code_no @@ -612,7 +613,10 @@ b.MinValue,b.ItemRemark,b.ItemType AND #{query.endDate} >= a.PlanDate - and a.FunctionType =#{query.functionType} + + AND getDate() >= a.PlanDate + + AND a.FunctionType = #{query.functionType} ORDER BY a.CreateDate, CASE WHEN b.urgency = '事故' THEN 1 @@ -1317,8 +1321,8 @@ b.MinValue,b.ItemRemark,b.ItemType INSERT INTO eam_workPlan_overview - (site, plan_id, plan_desc, status, plan_start_date, plan_end_date, created_date, created_by, update_date, update_by, remark, delete_flag, operator, operator_name, checker, checker_name, function_type, properties_code, plan_period) - VALUES (#{site}, #{planID}, #{planDesc}, '已计划', #{planStartDate}, #{planEndDate}, getDate(), #{createdBy}, getDate(), #{updateBy}, #{remark}, 'N', #{operator}, #{operatorName}, #{checker}, #{checkerName}, #{functionType}, #{propertiesCode}, #{planPeriod}) + (site, plan_id, plan_desc, status, plan_start_date, plan_end_date, created_date, created_by, update_date, update_by, remark, delete_flag, operator, operator_name, checker, checker_name, function_type, properties_code, plan_period, work_order_rule, plan_cycle) + VALUES (#{site}, #{planID}, #{planDesc}, '已计划', #{planStartDate}, #{planEndDate}, getDate(), #{createdBy}, getDate(), #{updateBy}, #{remark}, 'N', #{operator}, #{operatorName}, #{checker}, #{checkerName}, #{functionType}, #{propertiesCode}, #{planPeriod}, #{workOrderRule}, #{planCycle}) @@ -1425,9 +1429,11 @@ b.MinValue,b.ItemRemark,b.ItemType operator = #{operator}, operator_name = #{operatorName}, checker = #{checker}, - checker_name = #{checkerName} + checker_name = #{checkerName}, + work_order_rule = #{workOrderRule} WHERE site = #{site} AND plan_id = #{planID} + AND function_type = #{functionType} @@ -1735,7 +1741,9 @@ b.MinValue,b.ItemRemark,b.ItemType function_type, checker, checker_name, - operator_name + operator_name, + work_order_rule, + plan_cycle FROM eam_workPlan_overview WHERE site = #{site} AND plan_id = #{planID} diff --git a/src/main/resources/mapper/pms/QcMapper.xml b/src/main/resources/mapper/pms/QcMapper.xml index 1cf280ac..a5e3c46d 100644 --- a/src/main/resources/mapper/pms/QcMapper.xml +++ b/src/main/resources/mapper/pms/QcMapper.xml @@ -2196,6 +2196,7 @@ +