diff --git a/src/main/java/com/xujie/sys/modules/pms/controller/EamController.java b/src/main/java/com/xujie/sys/modules/pms/controller/EamController.java index 20b49695..fd9b7044 100644 --- a/src/main/java/com/xujie/sys/modules/pms/controller/EamController.java +++ b/src/main/java/com/xujie/sys/modules/pms/controller/EamController.java @@ -56,6 +56,29 @@ public class EamController { @Autowired private QueryCriteriaConstructorDefault queryCriteriaConstructorDefault; + /** + * @Description 维护工单导出excel + * @Title eamMaintainOrderExportExcel + * @param data + * @author qkh + * @date 2026/2/3 + */ + @PostMapping(value="/eamMaintainOrderExportExcel") + public void eamMaintainOrderExportExcel (@RequestBody EamWorkOrderInData data, HttpServletResponse response) throws IOException { + // 设置响应头 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("设备维保维保工单", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + //获取数据 + List list = eamService.eamWorkOrderSearchList(data); + // 写入Excel + EasyExcel.write(response.getOutputStream(), EamMaintainOrderExportData.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .sheet("设备维保维保工单") + .doWrite(list); + } + /** * @Description 导出excel * @Title eamWorkOrderSearchForDefect @@ -110,6 +133,8 @@ public class EamController { .doWrite(list); } + + /** * @Description eamFamilySearch * @Title eamAdminSearch diff --git a/src/main/java/com/xujie/sys/modules/pms/data/EamMaintainOrderExportData.java b/src/main/java/com/xujie/sys/modules/pms/data/EamMaintainOrderExportData.java new file mode 100644 index 00000000..d66eafcf --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/pms/data/EamMaintainOrderExportData.java @@ -0,0 +1,70 @@ +package com.xujie.sys.modules.pms.data; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class EamMaintainOrderExportData { + @ExcelProperty("维保结论") + private String checkResult; + + @ExcelProperty("BU") + private String buDesc; + + @ExcelProperty("异常原因") + private String disposalMeasures; + + @ExcelProperty("计划编码") + private String planID; + + @ExcelProperty("工单编码") + private String orderNo; + + @ExcelProperty("模板编码") + private String propertiesCode; + + @ExcelProperty("模板名称") + private String codeDesc; + + @ExcelProperty("设备编码") + private String objectID; + + @ExcelProperty("设备名称") + private String objectDesc; + + @ExcelProperty("状态") + private String status; + + @ExcelProperty("计划执行人员") + private String planOperatorName; + + @ExcelProperty("实际执行人员") + private String actualOperatorName; + + @ExcelProperty("协同人员") + private String operator; + + @ExcelProperty("审核人员") + private String checkerName; + + @ExcelProperty("计划执行日期") + private String planDate; + + @ExcelProperty("最晚执行日期") + private String lastExecutionDate; + + @ExcelProperty("到达时间") + private String reachDate; + + @ExcelProperty("实际执行时间") + private String actualDate; + + @ExcelProperty("工作时长(m)") + private BigDecimal workTime; + + @ExcelProperty("工单备注") + private String remark; + +} diff --git a/src/main/java/com/xujie/sys/modules/pms/mapper/EamMapper.java b/src/main/java/com/xujie/sys/modules/pms/mapper/EamMapper.java index a403a8d4..56082036 100644 --- a/src/main/java/com/xujie/sys/modules/pms/mapper/EamMapper.java +++ b/src/main/java/com/xujie/sys/modules/pms/mapper/EamMapper.java @@ -530,5 +530,5 @@ public interface EamMapper { void saveSoundBoxEmailLog(com.xujie.sys.modules.pms.entity.SoundBoxEmailLog log); - QcItemData getEamPropertiesItemByItemNo(@Param("data") QcItemData data); + List eamWorkOrderSearchList(@Param("query") EamWorkOrderInData inData); } diff --git a/src/main/java/com/xujie/sys/modules/pms/service/EamService.java b/src/main/java/com/xujie/sys/modules/pms/service/EamService.java index 345d292b..0060e1af 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/EamService.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/EamService.java @@ -1180,6 +1180,7 @@ public interface EamService { List getRoleByUserName(BusinessRoleVo data); PageUtils eamWorkOrderSearch2(EamWorkOrderInData data); + ; List getOperatorListByOrder(EamAdminData data); @@ -1219,5 +1220,5 @@ public interface EamService { void sendSoundBox(); - QcItemData getEamPropertiesItemByItemNo(QcItemData data); + List eamWorkOrderSearchList(EamWorkOrderInData data); } 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 f853ec0b..d101a958 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 @@ -9,7 +9,6 @@ import com.xujie.sys.common.exception.XJException; import com.xujie.sys.common.utils.DateUtil; import com.xujie.sys.common.utils.DateUtils; import com.xujie.sys.common.utils.PageUtils; -import com.xujie.sys.config.RedisConfig; import com.xujie.sys.modules.base.data.BuData; import com.xujie.sys.modules.base.entity.IusseRoleUserData; import com.xujie.sys.modules.factory.entity.vo.BusinessRoleVo; @@ -34,7 +33,6 @@ import com.xujie.sys.modules.pms.util.SendMessageUtils; import com.xujie.sys.modules.reader.entity.EquipmentFolderLocation; import com.xujie.sys.modules.reader.service.EquipmentFolderLocationService; import com.xujie.sys.modules.report.dao.ProcedureDao; -import com.xujie.sys.modules.ruler.IFillRuleHandler; import com.xujie.sys.modules.sift.vo.QuerySavedVo; import com.xujie.sys.modules.sys.entity.SysRoleEntity; import com.xujie.sys.modules.sys.entity.SysSceneDynamicControlModelEntity; @@ -44,7 +42,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.mail.javamail.JavaMailSenderImpl; @@ -57,7 +54,6 @@ import jakarta.mail.internet.MimeMessage; import java.io.IOException; import java.math.BigDecimal; import java.time.Duration; -import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; @@ -1676,6 +1672,11 @@ public class EamServiceImpl implements EamService { return new PageUtils(resultList); } + @Override + public List eamWorkOrderSearchList(EamWorkOrderInData inData) { + // 不传 Page,直接查全量 + return this.eamMapper.eamWorkOrderSearchList(inData); + } @Override public PageUtils eamWorkOrderSearchForDefect(EamWorkOrderInData inData){ if (StringUtils.isNotBlank(inData.getDepartmentName())) { diff --git a/src/main/resources/mapper/pms/EamMapper.xml b/src/main/resources/mapper/pms/EamMapper.xml index 2ca5861b..b93d49ee 100644 --- a/src/main/resources/mapper/pms/EamMapper.xml +++ b/src/main/resources/mapper/pms/EamMapper.xml @@ -3733,8 +3733,7 @@ dbo.eam_Get_eamObjectDesc(a.Site, a.bu_no, a.ObjectID) as objectDesc, b.reach_date as createdDate, b.reach_operator_name as createdBy, - '' as feedbackBy, - b.repair_type + '' as feedbackBy from eam_defect_feedBack as a left join eam_workOrder as b on a.site = b.site and a.bu_no = b.bu_no and b.PlanID = a.feedBackID @@ -3790,8 +3789,7 @@ a.confirm_assessment, a.confirm_remark, b.CreatedDate, - dbo.getOperatorDesc(b.site, b.CreatedBy) as createdBy, - a.repair_type + dbo.getOperatorDesc(b.site, b.CreatedBy) as createdBy FROM eam_workOrder as a left join eam_defect_feedBack as b on a.site = b.site and a.bu_no = b.bu_no and a.PlanID = b.feedBackID where a.Site = #{site} and a.bu_no = #{buNo} and a.OrderNo = #{orderNo} and a.FunctionType = #{functionType} @@ -4150,52 +4148,153 @@ select site, component_part_no as componentPartNo, notify_no as notifyNo from sound_box_email_log - SELECT - epi.site, - epi.bu_no, - dbo.get_bu_desc(epi.site, epi.bu_no) as buDesc, - epi.ItemNo, - epi.ItemDesc, - epi.DefaultValue, - epi.ValueType, - epi.ValueType_DB as valueTypeDb, - epi.ValueChooseFlag, - epi.CreatedDate, - epi.CreatedBy, - dbo.getOperatorDesc(epi.site, epi.CreatedBy) as createdByDesc, - epi.MaxValue, - epi.MinValue, - epi.ItemRemark, - epi.ItemType, - epi.update_date, - epi.update_by, - dbo.getOperatorDesc(epi.site, epi.update_by) as updateByDesc, - qm.method_no, - qm.method_name, - qm.method_remark, - epi.inspection_type_no, - epi.item_sampling_quantity, - epi.sampling_programme_no, - epi.sampling_level_no, - epi.default_sampling_proportion, - epi.collection_flag, - epi.collection_source, - epi.collection_method, - CASE WHEN epi.collection_method = 'plc' THEN 'PLC' - WHEN epi.collection_method = 'file' THEN '文件' - WHEN epi.collection_method = 'image' THEN '图片' - else '' end as collectionMethodDesc, - epi.collection_condition, - epi.collection_data_content - FROM eam_properties_item as epi - LEFT JOIN qc_method_item as qmi on epi.ItemNo = qmi.ItemNo and epi.site = qmi.site and epi.bu_no = qmi.bu_no - LEFT JOIN qc_method as qm on qmi.method_no = qm.method_no and qmi.site = qm.site and qmi.bu_no = qm.bu_no + a.Site, + a.bu_no, + dbo.get_bu_desc(a.site, a.bu_no) as buDesc, + a.OrderNo, + a.PlanID, + a.PlanDesc, + a.PropertiesCode, + a.ObjectID, + a.Status, + a.PlanOperator, + a.checker, + a.ActualOperator, + a.PlanDate, + a.ActualDate, + a.FunctionType, + a.CreateDate, + a.Remark, + a.StartTime, + a.EndTime, + a.WorkTime, + a.PlanOperatorName, + a.checkerName, + dbo.eam_Get_eamAdminName_TPM(a.Site, a.ActualOperator) as actualOperatorName, + eo.ObjectDesc as objectDesc, + dbo.eam_Get_eam_properties_CodeDesc(a.site, a.bu_no, a.FunctionType, a.PropertiesCode) as codeDesc, + a.result, + a.checkResult, + a.disposal_measures, + a.check_work_plan_id, + a.check_item_no, + a.reach_date, + a.reach_operator, + a.reach_operator_name, + dbo.joint_id(a.Site, a.bu_no, a.OrderNo, a.FunctionType) as adminID, + dbo.joint_name(a.Site, a.bu_no, a.OrderNo, a.FunctionType) as operator, + a.check_remark, + a.document_source, + a.last_execution_date, + a.handling_method, + a.fault_reason, + a.preventive_measure, + a.repair_reporting_type, + a.repair_type, + CASE WHEN (DATEDIFF(SECOND, a.CreateDate, a.reach_date) 60) THEN DATEDIFF(SECOND, a.CreateDate, a.reach_date) / 60.0 + ELSE DATEDIFF(MINUTE, a.CreateDate, a.reach_date) + END AS responseTime, + a.check_type, + a.is_return, + ewo.plan_period, + ewo.plan_cycle, + CASE + when ewo.plan_cycle = '时' then a.PlanDate + else ewo.task_start_date + end as taskStartDate + FROM eam_workOrder a + left join eam_object as eo on eo.site = a.site and eo.ObjectID = a.ObjectID and eo.bu_no = a.bu_no + left join sys_department as sd ON eo.site = sd.site and eo.dept_id = sd.department_id and eo.bu_no = sd.bu_no + left join Access_dept as ead ON ead.site = sd.site and ead.department_id = sd.department_id and ead.bu_no = sd.bu_no + left join sys_user as ea on ead.username = ea.username + left join eam_workPlan_overview as ewo on a.site = ewo.site and a.PlanID = ewo.plan_id and a.bu_no = ewo.bu_no - epi.site = #{data.site} and epi.ItemNo = #{data.itemNo} and epi.bu_no = #{data.buNo} + a.site in (select site from eam_access_site where username = #{query.userName}) + and (a.site + '-' + a.bu_no) in (select * from dbo.query_bu(#{query.userName})) + and a.check_type in (select role_no from access_role where username = #{query.userName}) + and ea.username = #{query.userName} + AND a.FunctionType = #{query.functionType} + + AND dbo.get_bu_desc (a.site, a.bu_no) = #{query.buDesc} + + + AND a.is_return = #{query.isReturn} + + + AND a.OrderNo like '%' + #{query.orderNo} + '%' + + + AND a.PlanID like '%' + #{query.planID} + '%' + + + AND a.PlanDesc like '%' + #{query.planDesc} + '%' + + + AND a.ObjectID like '%' + #{query.objectID} + '%' + + + AND a.PlanOperatorName like '%' + #{query.planOperatorName} + '%' + + + AND dbo.eam_Get_eamAdminName_TPM(a.Site, a.ActualOperator) like '%' + #{query.actualOperatorName} + '%' + + + AND a.status != '已取消' + + + AND a.status = #{query.status} + + + AND a.status = '未开工' + + + AND a.status != '已取消' + + + AND a.status = #{query.status} + + + AND (a.status = '未开工' or a.status = '已到达') + + + AND (a.status = '未开工' or a.status = '已到达') + + + AND a.status = #{query.status} + + + AND a.document_source = #{query.documentSource} + + + AND a.PlanDate = #{query.planDate} + + + AND a.PlanDate >= #{query.startDate} + + + AND #{query.endDate} >= a.PlanDate + + + AND getDate() >= a.PlanDate + + + and getDate() >= dbo.compare_date(ewo.task_start_date) + + + AND a.repair_reporting_type = #{query.repairReportingType} + + + AND a.repair_type = #{query.repairType} + + + AND a.check_type = #{query.checkType} + - + ORDER BY a.CreateDate + insert into sound_box_email_log (site, component_part_no, notify_no, request_data, response_data, email, created_at, user_id, username) values (#{site}, #{componentPartNo}, #{notifyNo}, #{requestData}, #{responseData}, #{email}, #{createdAt}, #{userId}, #{username})