Browse Source

1.设备维修组维修工单-解决导出数据量大问题,改为后端导出

java8
赵宏斌 7 months ago
parent
commit
412c0f771c
  1. 28
      src/main/java/com/xujie/sys/modules/pms/controller/EamController.java
  2. 93
      src/main/java/com/xujie/sys/modules/pms/data/EamWorkOrderExportData.java
  3. 1
      src/main/java/com/xujie/sys/modules/pms/mapper/EamMapper.java
  4. 10
      src/main/java/com/xujie/sys/modules/pms/service/EamService.java
  5. 9
      src/main/java/com/xujie/sys/modules/pms/service/Impl/EamServiceImpl.java
  6. 123
      src/main/resources/mapper/pms/EamMapper.xml

28
src/main/java/com/xujie/sys/modules/pms/controller/EamController.java

@ -1,6 +1,7 @@
package com.xujie.sys.modules.pms.controller;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xujie.sys.common.utils.PageUtils;
import com.xujie.sys.common.utils.R;
@ -22,7 +23,9 @@ import com.xujie.sys.modules.sys.entity.SysUserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
@ -52,6 +55,31 @@ public class EamController {
@Autowired
private QueryCriteriaConstructorDefault queryCriteriaConstructorDefault;
/**
* @Description 导出excel
* @Title eamWorkOrderSearchForDefect
* @param data
* @author zhb
* @date 2025/11/13 14:10
* @return R
* @throw
*/
@PostMapping(value="/eamWorkOrderExpiortExcel")
public void eamWorkOrderExpiortExcel (@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");
//获取数据
PageUtils page = eamService.eamWorkOrderSearchForDefect2(data);
// 写入Excel
EasyExcel.write(response.getOutputStream(), EamWorkOrderExportData.class)
.sheet("设备维修组维修工单")
.doWrite(page.getList());
}
/**
* @Description eamFamilySearch
* @Title eamAdminSearch

93
src/main/java/com/xujie/sys/modules/pms/data/EamWorkOrderExportData.java

@ -0,0 +1,93 @@
package com.xujie.sys.modules.pms.data;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class EamWorkOrderExportData {
@ExcelProperty("BU")
private String buNo;
@ExcelProperty("处置措施")
private String disposalMeasures;
@ExcelProperty("工单编码")
private String orderNo;
@ExcelProperty("反馈单号")
private String planID;
@ExcelProperty("反馈描述")
private String feedBackDesc;
@ExcelProperty("故障编码")
private String defectID;
@ExcelProperty("故障名称")
private String defectDesc;
@ExcelProperty("设备编码")
private String objectID;
@ExcelProperty("设备名称")
private String objectDesc;
@ExcelProperty("机台名称")
private String resourceDesc;
@ExcelProperty("设备部门")
private String departmentName;
@ExcelProperty("报修人员名称")
private String createBy;
@ExcelProperty("状态")
private String status;
@ExcelProperty("计划执行人员")
private String planOperatorName;
@ExcelProperty("实际执行人员")
private String actualOperatorName;
@ExcelProperty("计划执行日期")
private String planDate;
@ExcelProperty("故障时间")
private String createdDate;
@ExcelProperty("到达时间")
private String reachDate;
@ExcelProperty("实际执行时间")
private String actualDate;
@ExcelProperty("维修响应时长(m)")
private String responseTime;
@ExcelProperty("工作时长(m)")
private String workTime;
@ExcelProperty("难度等级")
private String difficultyLevel;
@ExcelProperty("难度备注")
private String difficultyRemark;
@ExcelProperty("单据来源")
private String documentSource;
@ExcelProperty("故障原因")
private String faultReason;
@ExcelProperty("处理方式")
private String handlingMethod;
@ExcelProperty("预防措施")
private String preventiveMeasure;
@ExcelProperty("备注说明")
private String remark;
}

1
src/main/java/com/xujie/sys/modules/pms/mapper/EamMapper.java

@ -96,6 +96,7 @@ public interface EamMapper {
IPage<EamWorkOrderInData> eamWorkOrderSearch(Page<EamWorkOrderInData> page, @Param("query") EamWorkOrderInData inData);
IPage<EamWorkOrderInData> eamWorkOrderSearchForDefect(Page<EamWorkOrderInData> page, @Param("query") EamWorkOrderInData inData);
IPage<EamWorkOrderExportData> eamWorkOrderSearchForDefect2(Page<EamWorkOrderInData> page, @Param("query") EamWorkOrderInData inData);
IPage<EamDefectData> eamDefectSearch(Page<EamDefectData> page, @Param("query") EamDefectData inData);

10
src/main/java/com/xujie/sys/modules/pms/service/EamService.java

@ -670,6 +670,16 @@ public interface EamService {
* @throw
*/
PageUtils eamWorkOrderSearchForDefect(EamWorkOrderInData inData);
/**
* @Description 同eamWorkOrderSearchForDefect方法但返回值接收对象不同用于导出
* @Title eamWorkOrderSearchForDefect
* @param inData
* @author zhb
* @date 2025/11/14 10:33
* @return PageUtils
* @throw
*/
PageUtils eamWorkOrderSearchForDefect2(EamWorkOrderInData inData);
//---------------故障-------------------
/**
* @param inData

9
src/main/java/com/xujie/sys/modules/pms/service/Impl/EamServiceImpl.java

@ -1673,6 +1673,15 @@ public class EamServiceImpl implements EamService {
IPage<EamWorkOrderInData> resultList = this.eamMapper.eamWorkOrderSearchForDefect(new Page<EamWorkOrderInData>(inData.getPage(), inData.getLimit()), inData);
return new PageUtils(resultList);
}
//同eamWorkOrderSearchForDefect方法但返回值接收对象不同用于导出
@Override
public PageUtils eamWorkOrderSearchForDefect2(EamWorkOrderInData inData){
if (StringUtils.isNotBlank(inData.getDepartmentName())) {
inData.setDeptArr(inData.getDepartmentName().split(";"));
}
IPage<EamWorkOrderExportData> resultList = this.eamMapper.eamWorkOrderSearchForDefect2(new Page<EamWorkOrderInData>(inData.getPage(), inData.getLimit()), inData);
return new PageUtils(resultList);
}
//------------------------故障----------------------------
@Override
public PageUtils eamDefectSearch(EamDefectData inData){

123
src/main/resources/mapper/pms/EamMapper.xml

@ -1138,6 +1138,129 @@
END
</select>
<select id="eamWorkOrderSearchForDefect2" parameterType="com.xujie.sys.modules.pms.data.EamWorkOrderInData" resultType="com.xujie.sys.modules.pms.data.EamWorkOrderExportData">
SELECT
a.Site,
a.bu_no,
dbo.get_bu_desc(a.site, a.bu_no) as buDesc,
a.OrderNo,
a.PlanID,
a.ObjectID,
a.Status,
a.PlanOperator,
a.ActualOperator,
a.PlanDate,
a.ActualDate,
a.FunctionType,
a.CreateDate,
dbo.eam_Get_eamAdminName_TPM(a.Site,b.CreatedBy) as createBy,
a.Remark,
a.StartTime,
a.EndTime,
a.WorkTime,
dbo.eam_Get_eamAdminName_TPM(a.Site,a.PlanOperator) as planOperatorName,
b.DefectID,
c.DefectDesc,
e.ObjectDesc as objectDesc,
dbo.eam_Get_eam_properties_CodeDesc(a.site, a.bu_no, a.FunctionType, a.PropertiesCode) as codeDesc,
a.result,
b.urgency,
a.disposal_measures,
a.difficulty_level,
a.difficulty_remark,
f.department_name,
a.reach_date,
a.reach_operator,
a.reach_operator_name,
b.CreatedDate,
a.handling_method,
dbo.eam_Get_eamResourceDesc(a.Site, a.ObjectID) as resourceDesc,
CASE WHEN (DATEDIFF(SECOND, a.CreateDate, a.reach_date) <![CDATA[<]]> 60) THEN DATEDIFF(SECOND, a.CreateDate, a.reach_date) / 60.0
ELSE DATEDIFF(MINUTE, a.CreateDate, a.reach_date)
END AS responseTime,
b.FeedBackDesc,
dbo.joint_name(a.Site,a.bu_no,a.OrderNo,a.FunctionType) as actualOperatorName,
a.fault_reason,
a.preventive_measure,
a.document_source,
a.repair_reporting_type,
a.repair_type,
a.confirm_assessment,
a.confirm_remark,
a.check_assessment,
a.check_notes
FROM eam_workOrder a
left join eam_defect_feedBack b on a.site = b.site and a.PlanID = b.feedBackID and a.bu_no = b.bu_no
left join eam_defect c on b.DefectID = c.DefectID
left join operator as d on a.site = d.site and a.CreateBy = d.operator_id
left join eam_object as e on a.site = e.site and a.ObjectID = e.ObjectID and a.bu_no = e.bu_no
left join sys_department as f on e.site = f.site and e.dept_id = f.department_id and e.bu_no = f.bu_no
left join Access_dept as ead ON ead.site = f.site and ead.department_id = f.department_id and ead.bu_no = f.bu_no
left join sys_user as ea on ead.username = ea.username
<where>
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 ea.username = #{query.userName}
<if test="query.buDesc != null and query.buDesc != ''">
AND dbo.get_bu_desc ( a.site, a.bu_no ) = #{query.buDesc}
</if>
<if test="query.deptArr != null">
AND
<foreach collection="query.deptArr" item="item" open="(" separator="or" close=")">
f.department_name like '%' + #{item} + '%'
</foreach>
</if>
<if test="query.orderNo != null and query.orderNo != ''">
AND a.OrderNo like '%' + #{query.orderNo} +'%'
</if>
<if test="query.planID != null and query.planID != ''">
AND a.PlanID like '%' + #{query.planID} +'%'
</if>
<if test="query.objectID != null and query.objectID != ''">
AND a.ObjectID like '%' + #{query.objectID} +'%'
</if>
<if test="query.planOperator != null and query.planOperator != ''">
AND a.PlanOperator like '%' + #{query.planOperator} +'%'
</if>
<if test="query.status != null and query.status != ''">
AND a.status = #{query.status}
</if>
<if test="query.documentSource != null and query.documentSource != ''">
AND a.document_source = #{query.documentSource}
</if>
<if test="query.startDate != null ">
AND a.PlanDate >= #{query.startDate}
</if>
<if test="query.endDate != null ">
AND #{query.endDate} >= a.PlanDate
</if>
<if test="query.actualStartDate != null ">
AND a.ActualDate >= #{query.actualStartDate}
</if>
<if test="query.actualEndDate != null ">
AND DATEADD(DAY, 1, CONVERT(DATE, #{query.actualEndDate})) > a.ActualDate
</if>
<if test="query.urgency != null and query.urgency != ''">
AND b.urgency = #{query.urgency}
</if>
<if test="query.result != null and query.result != ''">
AND a.result = #{query.result}
</if>
<if test="query.repairReportingType != null and query.repairReportingType != ''">
AND a.repair_reporting_type = #{query.repairReportingType}
</if>
<if test="query.repairType != null and query.repairType != ''">
AND a.repair_type = #{query.repairType}
</if>
and a.FunctionType =#{query.functionType}
</where>
ORDER BY a.PlanDate,
CASE WHEN b.urgency = '特急' THEN 1
WHEN b.urgency = '紧急' THEN 2
WHEN b.urgency = '一般' THEN 3
END
</select>
<select id="eamDefectSearch" parameterType="com.xujie.sys.modules.pms.data.EamDefectData" resultType="com.xujie.sys.modules.pms.data.EamDefectData">
SELECT
DefectID,

Loading…
Cancel
Save