diff --git a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsDispatchPlanController.java b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsDispatchPlanController.java new file mode 100644 index 0000000..9aaaa0c --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsDispatchPlanController.java @@ -0,0 +1,112 @@ +package com.aucma.dms.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.dms.domain.DmsDispatchPlan; +import com.aucma.dms.service.IDmsDispatchPlanService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 派工计划Controller + * + * @author Cascade AI + * @date 2025-01-10 + */ +@RestController +@RequestMapping("/dms/dispatchPlan") +public class DmsDispatchPlanController extends BaseController { + + @Autowired + private IDmsDispatchPlanService dmsDispatchPlanService; + + /** + * 查询派工计划列表 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:list')") + @GetMapping("/list") + public TableDataInfo list(DmsDispatchPlan dmsDispatchPlan) { + startPage(); + List list = dmsDispatchPlanService.selectDmsDispatchPlanList(dmsDispatchPlan); + return getDataTable(list); + } + + /** + * 导出派工计划列表 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:export')") + @Log(title = "派工计划", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DmsDispatchPlan dmsDispatchPlan) { + List list = dmsDispatchPlanService.selectDmsDispatchPlanList(dmsDispatchPlan); + ExcelUtil util = new ExcelUtil(DmsDispatchPlan.class); + util.exportExcel(response, list, "派工计划数据"); + } + + /** + * 获取派工计划详细信息 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:query')") + @GetMapping(value = "/{planId}") + public AjaxResult getInfo(@PathVariable("planId") Long planId) { + return AjaxResult.success(dmsDispatchPlanService.selectDmsDispatchPlanByPlanId(planId)); + } + + /** + * 新增派工计划 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:add')") + @Log(title = "派工计划", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DmsDispatchPlan dmsDispatchPlan) { + return toAjax(dmsDispatchPlanService.insertDmsDispatchPlan(dmsDispatchPlan)); + } + + /** + * 修改派工计划 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:edit')") + @Log(title = "派工计划", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DmsDispatchPlan dmsDispatchPlan) { + return toAjax(dmsDispatchPlanService.updateDmsDispatchPlan(dmsDispatchPlan)); + } + + /** + * 删除派工计划 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:remove')") + @Log(title = "派工计划", businessType = BusinessType.DELETE) + @DeleteMapping("/{planIds}") + public AjaxResult remove(@PathVariable Long[] planIds) { + return toAjax(dmsDispatchPlanService.deleteDmsDispatchPlanByPlanIds(planIds)); + } + + /** + * 接收派工 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:receive')") + @Log(title = "接收派工", businessType = BusinessType.UPDATE) + @PostMapping("/receive") + public AjaxResult receive(@RequestBody DmsDispatchPlan dmsDispatchPlan) { + return toAjax(dmsDispatchPlanService.receiveDispatch(dmsDispatchPlan.getPlanId())); + } + + /** + * 拒绝派工 + */ + @PreAuthorize("@ss.hasPermi('dms:dispatchPlan:reject')") + @Log(title = "拒绝派工", businessType = BusinessType.UPDATE) + @PostMapping("/reject") + public AjaxResult reject(@RequestBody DmsDispatchPlan dmsDispatchPlan) { + return toAjax(dmsDispatchPlanService.rejectDispatch(dmsDispatchPlan)); + } +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsRepairRecordController.java b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsRepairRecordController.java new file mode 100644 index 0000000..fbbb6a0 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsRepairRecordController.java @@ -0,0 +1,116 @@ +package com.aucma.dms.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.dms.domain.DmsRepairRecord; +import com.aucma.dms.service.IDmsRepairRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +/** + * 维修记录Controller + * + * @author Cascade AI + * @date 2025-01-10 + */ +@RestController +@RequestMapping("/dms/repairRecord") +public class DmsRepairRecordController extends BaseController { + + @Autowired + private IDmsRepairRecordService dmsRepairRecordService; + + /** + * 查询维修记录列表 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:list')") + @GetMapping("/list") + public TableDataInfo list(DmsRepairRecord dmsRepairRecord) { + startPage(); + List list = dmsRepairRecordService.selectDmsRepairRecordList(dmsRepairRecord); + return getDataTable(list); + } + + /** + * 导出维修记录列表 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:export')") + @Log(title = "维修记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DmsRepairRecord dmsRepairRecord) { + List list = dmsRepairRecordService.selectDmsRepairRecordList(dmsRepairRecord); + ExcelUtil util = new ExcelUtil(DmsRepairRecord.class); + util.exportExcel(response, list, "维修记录数据"); + } + + /** + * 获取维修记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:query')") + @GetMapping(value = "/{recordId}") + public AjaxResult getInfo(@PathVariable("recordId") Long recordId) { + return AjaxResult.success(dmsRepairRecordService.selectDmsRepairRecordByRecordId(recordId)); + } + + /** + * 新增维修记录 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:add')") + @Log(title = "维修记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DmsRepairRecord dmsRepairRecord) { + return toAjax(dmsRepairRecordService.insertDmsRepairRecord(dmsRepairRecord)); + } + + /** + * 修改维修记录 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:edit')") + @Log(title = "维修记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DmsRepairRecord dmsRepairRecord) { + return toAjax(dmsRepairRecordService.updateDmsRepairRecord(dmsRepairRecord)); + } + + /** + * 删除维修记录 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:remove')") + @Log(title = "维修记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{recordIds}") + public AjaxResult remove(@PathVariable Long[] recordIds) { + return toAjax(dmsRepairRecordService.deleteDmsRepairRecordByRecordIds(recordIds)); + } + + /** + * 存档维修记录 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:archive')") + @Log(title = "维修记录存档", businessType = BusinessType.UPDATE) + @PostMapping("/archive") + public AjaxResult archive(@RequestBody Map params) { + Long[] recordIds = ((List) params.get("recordIds")).stream() + .map(Long::valueOf) + .toArray(Long[]::new); + return toAjax(dmsRepairRecordService.archiveRepairRecords(recordIds)); + } + + /** + * 查询设备维修历史 + */ + @PreAuthorize("@ss.hasPermi('dms:repairRecord:query')") + @GetMapping("/history/{deviceId}") + public AjaxResult getHistory(@PathVariable("deviceId") Long deviceId) { + List list = dmsRepairRecordService.selectRepairHistoryByDeviceId(deviceId); + return AjaxResult.success(list); + } +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsRepairWorkOrderController.java b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsRepairWorkOrderController.java new file mode 100644 index 0000000..b6f27c7 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsRepairWorkOrderController.java @@ -0,0 +1,132 @@ +package com.aucma.dms.controller; + +import com.aucma.common.annotation.Log; +import com.aucma.common.core.controller.BaseController; +import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.core.page.TableDataInfo; +import com.aucma.common.enums.BusinessType; +import com.aucma.common.utils.poi.ExcelUtil; +import com.aucma.dms.domain.DmsRepairWorkOrder; +import com.aucma.dms.service.IDmsRepairWorkOrderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 维修工单Controller + * + * @author Cascade AI + * @date 2025-01-10 + */ +@RestController +@RequestMapping("/dms/repairWorkOrder") +public class DmsRepairWorkOrderController extends BaseController { + + @Autowired + private IDmsRepairWorkOrderService dmsRepairWorkOrderService; + + /** + * 查询维修工单列表 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:list')") + @GetMapping("/list") + public TableDataInfo list(DmsRepairWorkOrder dmsRepairWorkOrder) { + startPage(); + List list = dmsRepairWorkOrderService.selectDmsRepairWorkOrderList(dmsRepairWorkOrder); + return getDataTable(list); + } + + /** + * 导出维修工单列表 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:export')") + @Log(title = "维修工单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DmsRepairWorkOrder dmsRepairWorkOrder) { + List list = dmsRepairWorkOrderService.selectDmsRepairWorkOrderList(dmsRepairWorkOrder); + ExcelUtil util = new ExcelUtil(DmsRepairWorkOrder.class); + util.exportExcel(response, list, "维修工单数据"); + } + + /** + * 获取维修工单详细信息 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:query')") + @GetMapping(value = "/{workOrderId}") + public AjaxResult getInfo(@PathVariable("workOrderId") Long workOrderId) { + return AjaxResult.success(dmsRepairWorkOrderService.selectDmsRepairWorkOrderByWorkOrderId(workOrderId)); + } + + /** + * 新增维修工单 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:add')") + @Log(title = "维修工单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody DmsRepairWorkOrder dmsRepairWorkOrder) { + return toAjax(dmsRepairWorkOrderService.insertDmsRepairWorkOrder(dmsRepairWorkOrder)); + } + + /** + * 修改维修工单 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:edit')") + @Log(title = "维修工单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody DmsRepairWorkOrder dmsRepairWorkOrder) { + return toAjax(dmsRepairWorkOrderService.updateDmsRepairWorkOrder(dmsRepairWorkOrder)); + } + + /** + * 删除维修工单 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:remove')") + @Log(title = "维修工单", businessType = BusinessType.DELETE) + @DeleteMapping("/{workOrderIds}") + public AjaxResult remove(@PathVariable Long[] workOrderIds) { + return toAjax(dmsRepairWorkOrderService.deleteDmsRepairWorkOrderByWorkOrderIds(workOrderIds)); + } + + /** + * 派工 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:dispatch')") + @Log(title = "维修工单派工", businessType = BusinessType.UPDATE) + @PostMapping("/dispatch") + public AjaxResult dispatch(@RequestBody DmsRepairWorkOrder dmsRepairWorkOrder) { + return toAjax(dmsRepairWorkOrderService.dispatchWorkOrder(dmsRepairWorkOrder)); + } + + /** + * 开始维修 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:start')") + @Log(title = "开始维修", businessType = BusinessType.UPDATE) + @PostMapping("/start") + public AjaxResult start(@RequestBody DmsRepairWorkOrder dmsRepairWorkOrder) { + return toAjax(dmsRepairWorkOrderService.startWorkOrder(dmsRepairWorkOrder.getWorkOrderId())); + } + + /** + * 完成维修 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:complete')") + @Log(title = "完成维修", businessType = BusinessType.UPDATE) + @PostMapping("/complete") + public AjaxResult complete(@RequestBody DmsRepairWorkOrder dmsRepairWorkOrder) { + return toAjax(dmsRepairWorkOrderService.completeWorkOrder(dmsRepairWorkOrder)); + } + + /** + * 审批 + */ + @PreAuthorize("@ss.hasPermi('dms:repairWorkOrder:approve')") + @Log(title = "维修工单审批", businessType = BusinessType.UPDATE) + @PostMapping("/approve") + public AjaxResult approve(@RequestBody DmsRepairWorkOrder dmsRepairWorkOrder) { + return toAjax(dmsRepairWorkOrderService.approveWorkOrder(dmsRepairWorkOrder)); + } +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsDispatchMember.java b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsDispatchMember.java new file mode 100644 index 0000000..3fd721e --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsDispatchMember.java @@ -0,0 +1,45 @@ +package com.aucma.dms.domain; + +import com.aucma.common.annotation.Excel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 派工成员明细对象 dms_dispatch_member + * + * @author Cascade AI + * @date 2025-01-10 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class DmsDispatchMember extends DmsBaseEntity { + + private static final long serialVersionUID = 1L; + + /** 成员ID */ + private Long memberId; + + /** 派工计划ID */ + @Excel(name = "派工计划ID") + private Long planId; + + /** 成员用户ID */ + @Excel(name = "成员用户ID") + private Long userId; + + /** 成员姓名 */ + @Excel(name = "成员姓名") + private String userName; + + /** 成员角色:1-负责人 2-主要执行人 3-协助执行人 */ + @Excel(name = "成员角色", dictType = "dms_member_role") + private String memberRole; + + /** 分配工时 */ + @Excel(name = "分配工时") + private String allocatedHours; + + /** 备注 */ + @Excel(name = "备注") + private String remark; +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsDispatchPlan.java b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsDispatchPlan.java new file mode 100644 index 0000000..7ef08c3 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsDispatchPlan.java @@ -0,0 +1,126 @@ +package com.aucma.dms.domain; + +import com.aucma.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; + +/** + * 派工计划对象 dms_dispatch_plan + * + * @author Cascade AI + * @date 2025-01-10 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class DmsDispatchPlan extends DmsBaseEntity { + + private static final long serialVersionUID = 1L; + + /** 派工计划ID */ + private Long planId; + + /** 派工单号 */ + @Excel(name = "派工单号") + private String planCode; + + /** 关联维修工单ID */ + @Excel(name = "关联维修工单ID") + private Long workOrderId; + + /** 工单编号 */ + @Excel(name = "工单编号") + private String workOrderCode; + + /** 设备ID */ + @Excel(name = "设备ID") + private Long deviceId; + + /** 设备编码 */ + @Excel(name = "设备编码") + private String deviceCode; + + /** 设备名称 */ + @Excel(name = "设备名称") + private String deviceName; + + /** 派工类型:1-单人派工 2-团队派工 */ + @Excel(name = "派工类型", dictType = "dms_dispatch_type") + private String dispatchType; + + /** 执行人ID(单人派工) */ + @Excel(name = "执行人ID") + private Long executorId; + + /** 执行人姓名 */ + @Excel(name = "执行人") + private String executorName; + + /** 执行团队ID(团队派工) */ + @Excel(name = "执行团队ID") + private Long teamId; + + /** 执行团队名称 */ + @Excel(name = "执行团队") + private String teamName; + + /** 派工时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "派工时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date dispatchTime; + + /** 要求开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "要求开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date requireStartTime; + + /** 要求完成时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "要求完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date requireEndTime; + + /** 接收状态:0-待接收 1-已接收 2-已拒绝 */ + @Excel(name = "接收状态", dictType = "dms_receive_status") + private String receiveStatus; + + /** 接收时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "接收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date receiveTime; + + /** 拒绝原因 */ + @Excel(name = "拒绝原因") + private String rejectReason; + + /** 执行状态:0-待执行 1-执行中 2-已完成 3-已取消 */ + @Excel(name = "执行状态", dictType = "dms_execution_status") + private String executionStatus; + + /** 优先级:1-紧急 2-高 3-中 4-低 */ + @Excel(name = "优先级", dictType = "dms_priority") + private String priority; + + /** 派工人ID */ + @Excel(name = "派工人ID") + private Long dispatcherId; + + /** 派工人姓名 */ + @Excel(name = "派工人") + private String dispatcherName; + + /** 派工说明 */ + @Excel(name = "派工说明") + private String dispatchNotes; + + /** 是否标识:1-是 0-否 */ + @Excel(name = "是否标识", readConverterExp = "1=是,0=否") + private String isFlag; + + // ========== 关联子表数据 ========== + + /** 派工成员列表(团队派工) */ + private List dispatchMembers; +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairMaterial.java b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairMaterial.java new file mode 100644 index 0000000..d236a42 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairMaterial.java @@ -0,0 +1,87 @@ +package com.aucma.dms.domain; + +import com.aucma.common.annotation.Excel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 维修材料明细对象 dms_repair_material + * + * @author Cascade AI + * @date 2025-01-10 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class DmsRepairMaterial extends DmsBaseEntity { + + private static final long serialVersionUID = 1L; + + /** 维修材料ID */ + private Long materialId; + + /** 维修工单ID */ + @Excel(name = "维修工单ID") + private Long workOrderId; + + /** 材料编码 */ + @Excel(name = "材料编码") + private String materialCode; + + /** 材料名称 */ + @Excel(name = "材料名称") + private String materialName; + + /** 材料规格型号 */ + @Excel(name = "规格型号") + private String materialSpec; + + /** 材料类型:1-备件 2-耗材 3-工具 */ + @Excel(name = "材料类型", dictType = "dms_material_type") + private String materialType; + + /** 计量单位 */ + @Excel(name = "计量单位") + private String unit; + + /** 计划数量 */ + @Excel(name = "计划数量") + private BigDecimal planQuantity; + + /** 实际使用数量 */ + @Excel(name = "实际使用数量") + private BigDecimal actualQuantity; + + /** 单价 */ + @Excel(name = "单价") + private BigDecimal unitPrice; + + /** 总金额 */ + @Excel(name = "总金额") + private BigDecimal totalAmount; + + /** 领用状态:0-待领用 1-已领用 2-已归还 */ + @Excel(name = "领用状态", dictType = "dms_receive_status") + private String receiveStatus; + + /** 领用人 */ + @Excel(name = "领用人") + private String receiver; + + /** 领用时间 */ + @Excel(name = "领用时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private String receiveTime; + + /** 仓库ID */ + @Excel(name = "仓库ID") + private Long warehouseId; + + /** 仓库名称 */ + @Excel(name = "仓库名称") + private String warehouseName; + + /** 备注 */ + @Excel(name = "备注") + private String remark; +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairProject.java b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairProject.java new file mode 100644 index 0000000..4b86336 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairProject.java @@ -0,0 +1,71 @@ +package com.aucma.dms.domain; + +import com.aucma.common.annotation.Excel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 维修工程明细对象 dms_repair_project + * + * @author Cascade AI + * @date 2025-01-10 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class DmsRepairProject extends DmsBaseEntity { + + private static final long serialVersionUID = 1L; + + /** 维修工程ID */ + private Long projectId; + + /** 维修工单ID */ + @Excel(name = "维修工单ID") + private Long workOrderId; + + /** 工程序号 */ + @Excel(name = "工程序号") + private Integer projectSeq; + + /** 工程名称 */ + @Excel(name = "工程名称") + private String projectName; + + /** 工程类型:1-拆卸 2-检查 3-更换 4-调整 5-清洁 6-润滑 7-其他 */ + @Excel(name = "工程类型", dictType = "dms_project_type") + private String projectType; + + /** 工程内容 */ + @Excel(name = "工程内容") + private String projectContent; + + /** 技术要求 */ + @Excel(name = "技术要求") + private String technicalRequirement; + + /** 计划工时(小时) */ + @Excel(name = "计划工时") + private BigDecimal planHours; + + /** 实际工时(小时) */ + @Excel(name = "实际工时") + private BigDecimal actualHours; + + /** 执行状态:0-待执行 1-执行中 2-已完成 */ + @Excel(name = "执行状态", dictType = "dms_execution_status") + private String executionStatus; + + /** 执行人 */ + @Excel(name = "执行人") + private String executor; + + /** 完成质量:1-优秀 2-良好 3-合格 4-不合格 */ + @Excel(name = "完成质量", dictType = "dms_quality_level") + private String qualityLevel; + + /** 备注 */ + @Excel(name = "备注") + private String remark; +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairRecord.java b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairRecord.java new file mode 100644 index 0000000..2ae4ebd --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairRecord.java @@ -0,0 +1,137 @@ +package com.aucma.dms.domain; + +import com.aucma.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 维修记录对象 dms_repair_record + * + * @author Cascade AI + * @date 2025-01-10 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class DmsRepairRecord extends DmsBaseEntity { + + private static final long serialVersionUID = 1L; + + /** 维修记录ID */ + private Long recordId; + + /** 维修工单ID */ + @Excel(name = "维修工单ID") + private Long workOrderId; + + /** 工单编号 */ + @Excel(name = "工单编号") + private String workOrderCode; + + /** 设备ID */ + @Excel(name = "设备ID") + private Long deviceId; + + /** 设备编码 */ + @Excel(name = "设备编码") + private String deviceCode; + + /** 设备名称 */ + @Excel(name = "设备名称") + private String deviceName; + + /** 故障现象 */ + @Excel(name = "故障现象") + private String faultPhenomenon; + + /** 故障原因 */ + @Excel(name = "故障原因") + private String faultCause; + + /** 维修方法 */ + @Excel(name = "维修方法") + private String repairMethod; + + /** 维修过程 */ + @Excel(name = "维修过程") + private String repairProcess; + + /** 更换部件 */ + @Excel(name = "更换部件") + private String replacedParts; + + /** 维修结果:1-成功 2-失败 3-部分完成 */ + @Excel(name = "维修结果", dictType = "dms_repair_result") + private String repairResult; + + /** 维修人员ID */ + @Excel(name = "维修人员ID") + private Long repairerId; + + /** 维修人员姓名 */ + @Excel(name = "维修人员") + private String repairerName; + + /** 维修开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "维修开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + /** 维修结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "维修结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + + /** 维修工时(小时) */ + @Excel(name = "维修工时") + private BigDecimal repairHours; + + /** 维修费用 */ + @Excel(name = "维修费用") + private BigDecimal repairCost; + + /** 停机时长(分钟) */ + @Excel(name = "停机时长") + private Integer shutdownDuration; + + /** 验收人 */ + @Excel(name = "验收人") + private String acceptor; + + /** 验收时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "验收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date acceptTime; + + /** 验收结果:1-合格 2-不合格 */ + @Excel(name = "验收结果", dictType = "dms_accept_result") + private String acceptResult; + + /** 验收意见 */ + @Excel(name = "验收意见") + private String acceptOpinion; + + /** 后续建议 */ + @Excel(name = "后续建议") + private String followupSuggestion; + + /** 是否存档:0-否 1-是 */ + @Excel(name = "是否存档", readConverterExp = "0=否,1=是") + private String isArchived; + + /** 是否标识:1-是 0-否 */ + @Excel(name = "是否标识", readConverterExp = "1=是,0=否") + private String isFlag; + + // ========== 关联数据 ========== + + /** 附件列表 */ + private List attachments; + + /** 使用的材料列表 */ + private List materials; +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairWorkOrder.java b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairWorkOrder.java new file mode 100644 index 0000000..0ede5d7 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/domain/DmsRepairWorkOrder.java @@ -0,0 +1,160 @@ +package com.aucma.dms.domain; + +import com.aucma.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 维修工单对象 dms_repair_work_order + * + * @author Cascade AI + * @date 2025-01-10 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class DmsRepairWorkOrder extends DmsBaseEntity { + + private static final long serialVersionUID = 1L; + + /** 维修工单ID */ + private Long workOrderId; + + /** 工单编号 */ + @Excel(name = "工单编号") + private String workOrderCode; + + /** 关联故障报修ID */ + @Excel(name = "关联故障报修ID") + private Long faultInstanceId; + + /** 设备ID */ + @Excel(name = "设备ID") + private Long deviceId; + + /** 设备编码 */ + @Excel(name = "设备编码") + private String deviceCode; + + /** 设备名称 */ + @Excel(name = "设备名称") + private String deviceName; + + /** 故障类型 */ + @Excel(name = "故障类型", dictType = "dms_fault_type") + private String faultType; + + /** 故障描述 */ + @Excel(name = "故障描述") + private String faultDescription; + + /** 维修类型:1-预防性维修 2-故障维修 3-改进性维修 */ + @Excel(name = "维修类型", dictType = "dms_repair_type") + private String repairType; + + /** 工单状态:0-待派工 1-已派工 2-维修中 3-已完成 4-已关闭 */ + @Excel(name = "工单状态", dictType = "dms_work_order_status") + private String orderStatus; + + /** 优先级:1-紧急 2-高 3-中 4-低 */ + @Excel(name = "优先级", dictType = "dms_priority") + private String priority; + + /** 计划开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date planStartTime; + + /** 计划完成时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "计划完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date planEndTime; + + /** 实际开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date actualStartTime; + + /** 实际完成时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "实际完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date actualEndTime; + + /** 执行人ID */ + @Excel(name = "执行人ID") + private Long executorId; + + /** 执行人姓名 */ + @Excel(name = "执行人") + private String executorName; + + /** 维修工时(小时) */ + @Excel(name = "维修工时") + private BigDecimal repairHours; + + /** 预算费用 */ + @Excel(name = "预算费用") + private BigDecimal budgetCost; + + /** 实际费用 */ + @Excel(name = "实际费用") + private BigDecimal actualCost; + + /** 维修结果:1-成功 2-失败 3-部分完成 */ + @Excel(name = "维修结果", dictType = "dms_repair_result") + private String repairResult; + + /** 维修说明 */ + @Excel(name = "维修说明") + private String repairNotes; + + /** 审批状态:0-待审批 1-审批中 2-已通过 3-已驳回 */ + @Excel(name = "审批状态", dictType = "approve_status") + private String approveStatus; + + /** 审批人 */ + @Excel(name = "审批人") + private String approver; + + /** 审批时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approveTime; + + /** 审批意见 */ + private String approveRemark; + + /** 是否需要停机:0-否 1-是 */ + @Excel(name = "是否需要停机", readConverterExp = "0=否,1=是") + private String needShutdown; + + /** 停机时长(分钟) */ + @Excel(name = "停机时长") + private Integer shutdownDuration; + + /** 是否标识:1-是 0-否 */ + @Excel(name = "是否标识", readConverterExp = "1=是,0=否") + private String isFlag; + + // ========== 关联子表数据 ========== + + /** 维修工程列表 */ + private List repairProjects; + + /** 维修材料列表 */ + private List repairMaterials; + + /** 附件列表 */ + private List attachments; + + // ========== 非数据库字段 ========== + + /** 工程数量 */ + private Integer projectCount; + + /** 材料数量 */ + private Integer materialCount; +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsDispatchMemberMapper.java b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsDispatchMemberMapper.java new file mode 100644 index 0000000..a8dc59e --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsDispatchMemberMapper.java @@ -0,0 +1,70 @@ +package com.aucma.dms.mapper; + +import com.aucma.dms.domain.DmsDispatchMember; + +import java.util.List; + +/** + * 派工成员明细Mapper接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface DmsDispatchMemberMapper { + + /** + * 查询派工成员明细 + * + * @param memberId 派工成员明细主键 + * @return 派工成员明细 + */ + DmsDispatchMember selectDmsDispatchMemberByMemberId(Long memberId); + + /** + * 查询派工成员明细列表 + * + * @param dmsDispatchMember 派工成员明细 + * @return 派工成员明细集合 + */ + List selectDmsDispatchMemberList(DmsDispatchMember dmsDispatchMember); + + /** + * 新增派工成员明细 + * + * @param dmsDispatchMember 派工成员明细 + * @return 结果 + */ + int insertDmsDispatchMember(DmsDispatchMember dmsDispatchMember); + + /** + * 修改派工成员明细 + * + * @param dmsDispatchMember 派工成员明细 + * @return 结果 + */ + int updateDmsDispatchMember(DmsDispatchMember dmsDispatchMember); + + /** + * 删除派工成员明细 + * + * @param memberId 派工成员明细主键 + * @return 结果 + */ + int deleteDmsDispatchMemberByMemberId(Long memberId); + + /** + * 批量删除派工成员明细 + * + * @param memberIds 需要删除的数据主键集合 + * @return 结果 + */ + int deleteDmsDispatchMemberByMemberIds(Long[] memberIds); + + /** + * 根据派工计划ID删除成员 + * + * @param planId 派工计划ID + * @return 结果 + */ + int deleteDmsDispatchMemberByPlanId(Long planId); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsDispatchPlanMapper.java b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsDispatchPlanMapper.java new file mode 100644 index 0000000..787ef45 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsDispatchPlanMapper.java @@ -0,0 +1,62 @@ +package com.aucma.dms.mapper; + +import com.aucma.dms.domain.DmsDispatchPlan; + +import java.util.List; + +/** + * 派工计划Mapper接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface DmsDispatchPlanMapper { + + /** + * 查询派工计划 + * + * @param planId 派工计划主键 + * @return 派工计划 + */ + DmsDispatchPlan selectDmsDispatchPlanByPlanId(Long planId); + + /** + * 查询派工计划列表 + * + * @param dmsDispatchPlan 派工计划 + * @return 派工计划集合 + */ + List selectDmsDispatchPlanList(DmsDispatchPlan dmsDispatchPlan); + + /** + * 新增派工计划 + * + * @param dmsDispatchPlan 派工计划 + * @return 结果 + */ + int insertDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan); + + /** + * 修改派工计划 + * + * @param dmsDispatchPlan 派工计划 + * @return 结果 + */ + int updateDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan); + + /** + * 删除派工计划 + * + * @param planId 派工计划主键 + * @return 结果 + */ + int deleteDmsDispatchPlanByPlanId(Long planId); + + /** + * 批量删除派工计划 + * + * @param planIds 需要删除的数据主键集合 + * @return 结果 + */ + int deleteDmsDispatchPlanByPlanIds(Long[] planIds); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairMaterialMapper.java b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairMaterialMapper.java new file mode 100644 index 0000000..6525698 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairMaterialMapper.java @@ -0,0 +1,70 @@ +package com.aucma.dms.mapper; + +import com.aucma.dms.domain.DmsRepairMaterial; + +import java.util.List; + +/** + * 维修材料明细Mapper接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface DmsRepairMaterialMapper { + + /** + * 查询维修材料明细 + * + * @param materialId 维修材料明细主键 + * @return 维修材料明细 + */ + DmsRepairMaterial selectDmsRepairMaterialByMaterialId(Long materialId); + + /** + * 查询维修材料明细列表 + * + * @param dmsRepairMaterial 维修材料明细 + * @return 维修材料明细集合 + */ + List selectDmsRepairMaterialList(DmsRepairMaterial dmsRepairMaterial); + + /** + * 新增维修材料明细 + * + * @param dmsRepairMaterial 维修材料明细 + * @return 结果 + */ + int insertDmsRepairMaterial(DmsRepairMaterial dmsRepairMaterial); + + /** + * 修改维修材料明细 + * + * @param dmsRepairMaterial 维修材料明细 + * @return 结果 + */ + int updateDmsRepairMaterial(DmsRepairMaterial dmsRepairMaterial); + + /** + * 删除维修材料明细 + * + * @param materialId 维修材料明细主键 + * @return 结果 + */ + int deleteDmsRepairMaterialByMaterialId(Long materialId); + + /** + * 批量删除维修材料明细 + * + * @param materialIds 需要删除的数据主键集合 + * @return 结果 + */ + int deleteDmsRepairMaterialByMaterialIds(Long[] materialIds); + + /** + * 根据工单ID删除维修材料明细 + * + * @param workOrderId 工单ID + * @return 结果 + */ + int deleteDmsRepairMaterialByWorkOrderId(Long workOrderId); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairProjectMapper.java b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairProjectMapper.java new file mode 100644 index 0000000..a9dc579 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairProjectMapper.java @@ -0,0 +1,70 @@ +package com.aucma.dms.mapper; + +import com.aucma.dms.domain.DmsRepairProject; + +import java.util.List; + +/** + * 维修工程明细Mapper接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface DmsRepairProjectMapper { + + /** + * 查询维修工程明细 + * + * @param projectId 维修工程明细主键 + * @return 维修工程明细 + */ + DmsRepairProject selectDmsRepairProjectByProjectId(Long projectId); + + /** + * 查询维修工程明细列表 + * + * @param dmsRepairProject 维修工程明细 + * @return 维修工程明细集合 + */ + List selectDmsRepairProjectList(DmsRepairProject dmsRepairProject); + + /** + * 新增维修工程明细 + * + * @param dmsRepairProject 维修工程明细 + * @return 结果 + */ + int insertDmsRepairProject(DmsRepairProject dmsRepairProject); + + /** + * 修改维修工程明细 + * + * @param dmsRepairProject 维修工程明细 + * @return 结果 + */ + int updateDmsRepairProject(DmsRepairProject dmsRepairProject); + + /** + * 删除维修工程明细 + * + * @param projectId 维修工程明细主键 + * @return 结果 + */ + int deleteDmsRepairProjectByProjectId(Long projectId); + + /** + * 批量删除维修工程明细 + * + * @param projectIds 需要删除的数据主键集合 + * @return 结果 + */ + int deleteDmsRepairProjectByProjectIds(Long[] projectIds); + + /** + * 根据工单ID删除维修工程明细 + * + * @param workOrderId 工单ID + * @return 结果 + */ + int deleteDmsRepairProjectByWorkOrderId(Long workOrderId); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairRecordMapper.java b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairRecordMapper.java new file mode 100644 index 0000000..40e2d3f --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairRecordMapper.java @@ -0,0 +1,62 @@ +package com.aucma.dms.mapper; + +import com.aucma.dms.domain.DmsRepairRecord; + +import java.util.List; + +/** + * 维修记录Mapper接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface DmsRepairRecordMapper { + + /** + * 查询维修记录 + * + * @param recordId 维修记录主键 + * @return 维修记录 + */ + DmsRepairRecord selectDmsRepairRecordByRecordId(Long recordId); + + /** + * 查询维修记录列表 + * + * @param dmsRepairRecord 维修记录 + * @return 维修记录集合 + */ + List selectDmsRepairRecordList(DmsRepairRecord dmsRepairRecord); + + /** + * 新增维修记录 + * + * @param dmsRepairRecord 维修记录 + * @return 结果 + */ + int insertDmsRepairRecord(DmsRepairRecord dmsRepairRecord); + + /** + * 修改维修记录 + * + * @param dmsRepairRecord 维修记录 + * @return 结果 + */ + int updateDmsRepairRecord(DmsRepairRecord dmsRepairRecord); + + /** + * 删除维修记录 + * + * @param recordId 维修记录主键 + * @return 结果 + */ + int deleteDmsRepairRecordByRecordId(Long recordId); + + /** + * 批量删除维修记录 + * + * @param recordIds 需要删除的数据主键集合 + * @return 结果 + */ + int deleteDmsRepairRecordByRecordIds(Long[] recordIds); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairWorkOrderMapper.java b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairWorkOrderMapper.java new file mode 100644 index 0000000..f4a69fc --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/mapper/DmsRepairWorkOrderMapper.java @@ -0,0 +1,79 @@ +package com.aucma.dms.mapper; + +import com.aucma.dms.domain.DmsRepairWorkOrder; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 维修工单Mapper接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface DmsRepairWorkOrderMapper { + + /** + * 查询维修工单 + * + * @param workOrderId 维修工单主键 + * @return 维修工单 + */ + DmsRepairWorkOrder selectDmsRepairWorkOrderByWorkOrderId(Long workOrderId); + + /** + * 查询维修工单列表 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 维修工单集合 + */ + List selectDmsRepairWorkOrderList(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 新增维修工单 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + int insertDmsRepairWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 修改维修工单 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + int updateDmsRepairWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 删除维修工单 + * + * @param workOrderId 维修工单主键 + * @return 结果 + */ + int deleteDmsRepairWorkOrderByWorkOrderId(Long workOrderId); + + /** + * 批量删除维修工单 + * + * @param workOrderIds 需要删除的数据主键集合 + * @return 结果 + */ + int deleteDmsRepairWorkOrderByWorkOrderIds(Long[] workOrderIds); + + /** + * 根据故障报修ID查询维修工单 + * + * @param faultInstanceId 故障报修ID + * @return 维修工单 + */ + DmsRepairWorkOrder selectByFaultInstanceId(@Param("faultInstanceId") Long faultInstanceId); + + /** + * 查询工单统计信息 + * + * @param dmsRepairWorkOrder 查询条件 + * @return 统计结果 + */ + List selectWorkOrderStatistics(DmsRepairWorkOrder dmsRepairWorkOrder); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/IDmsDispatchPlanService.java b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsDispatchPlanService.java new file mode 100644 index 0000000..760e52d --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsDispatchPlanService.java @@ -0,0 +1,78 @@ +package com.aucma.dms.service; + +import com.aucma.dms.domain.DmsDispatchPlan; + +import java.util.List; + +/** + * 派工计划Service接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface IDmsDispatchPlanService { + + /** + * 查询派工计划 + * + * @param planId 派工计划主键 + * @return 派工计划 + */ + DmsDispatchPlan selectDmsDispatchPlanByPlanId(Long planId); + + /** + * 查询派工计划列表 + * + * @param dmsDispatchPlan 派工计划 + * @return 派工计划集合 + */ + List selectDmsDispatchPlanList(DmsDispatchPlan dmsDispatchPlan); + + /** + * 新增派工计划(含成员) + * + * @param dmsDispatchPlan 派工计划 + * @return 结果 + */ + int insertDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan); + + /** + * 修改派工计划(含成员) + * + * @param dmsDispatchPlan 派工计划 + * @return 结果 + */ + int updateDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan); + + /** + * 批量删除派工计划 + * + * @param planIds 需要删除的派工计划主键集合 + * @return 结果 + */ + int deleteDmsDispatchPlanByPlanIds(Long[] planIds); + + /** + * 删除派工计划信息 + * + * @param planId 派工计划主键 + * @return 结果 + */ + int deleteDmsDispatchPlanByPlanId(Long planId); + + /** + * 接收派工 + * + * @param planId 派工计划ID + * @return 结果 + */ + int receiveDispatch(Long planId); + + /** + * 拒绝派工 + * + * @param dmsDispatchPlan 派工计划(含planId、rejectReason) + * @return 结果 + */ + int rejectDispatch(DmsDispatchPlan dmsDispatchPlan); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/IDmsRepairRecordService.java b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsRepairRecordService.java new file mode 100644 index 0000000..96a1609 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsRepairRecordService.java @@ -0,0 +1,78 @@ +package com.aucma.dms.service; + +import com.aucma.dms.domain.DmsRepairRecord; + +import java.util.List; + +/** + * 维修记录Service接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface IDmsRepairRecordService { + + /** + * 查询维修记录 + * + * @param recordId 维修记录主键 + * @return 维修记录 + */ + DmsRepairRecord selectDmsRepairRecordByRecordId(Long recordId); + + /** + * 查询维修记录列表 + * + * @param dmsRepairRecord 维修记录 + * @return 维修记录集合 + */ + List selectDmsRepairRecordList(DmsRepairRecord dmsRepairRecord); + + /** + * 新增维修记录 + * + * @param dmsRepairRecord 维修记录 + * @return 结果 + */ + int insertDmsRepairRecord(DmsRepairRecord dmsRepairRecord); + + /** + * 修改维修记录 + * + * @param dmsRepairRecord 维修记录 + * @return 结果 + */ + int updateDmsRepairRecord(DmsRepairRecord dmsRepairRecord); + + /** + * 批量删除维修记录 + * + * @param recordIds 需要删除的维修记录主键集合 + * @return 结果 + */ + int deleteDmsRepairRecordByRecordIds(Long[] recordIds); + + /** + * 删除维修记录信息 + * + * @param recordId 维修记录主键 + * @return 结果 + */ + int deleteDmsRepairRecordByRecordId(Long recordId); + + /** + * 存档维修记录 + * + * @param recordIds 需要存档的维修记录主键集合 + * @return 结果 + */ + int archiveRepairRecords(Long[] recordIds); + + /** + * 根据设备ID查询维修历史 + * + * @param deviceId 设备ID + * @return 维修记录集合 + */ + List selectRepairHistoryByDeviceId(Long deviceId); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/IDmsRepairWorkOrderService.java b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsRepairWorkOrderService.java new file mode 100644 index 0000000..0defb08 --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/service/IDmsRepairWorkOrderService.java @@ -0,0 +1,94 @@ +package com.aucma.dms.service; + +import com.aucma.dms.domain.DmsRepairWorkOrder; + +import java.util.List; + +/** + * 维修工单Service接口 + * + * @author Cascade AI + * @date 2025-01-10 + */ +public interface IDmsRepairWorkOrderService { + + /** + * 查询维修工单 + * + * @param workOrderId 维修工单主键 + * @return 维修工单 + */ + DmsRepairWorkOrder selectDmsRepairWorkOrderByWorkOrderId(Long workOrderId); + + /** + * 查询维修工单列表 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 维修工单集合 + */ + List selectDmsRepairWorkOrderList(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 新增维修工单(含工程和材料) + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + int insertDmsRepairWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 修改维修工单(含工程和材料) + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + int updateDmsRepairWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 批量删除维修工单 + * + * @param workOrderIds 需要删除的维修工单主键集合 + * @return 结果 + */ + int deleteDmsRepairWorkOrderByWorkOrderIds(Long[] workOrderIds); + + /** + * 删除维修工单信息 + * + * @param workOrderId 维修工单主键 + * @return 结果 + */ + int deleteDmsRepairWorkOrderByWorkOrderId(Long workOrderId); + + /** + * 派工 + * + * @param dmsRepairWorkOrder 维修工单(含executorId、executorName) + * @return 结果 + */ + int dispatchWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 开始维修 + * + * @param workOrderId 维修工单ID + * @return 结果 + */ + int startWorkOrder(Long workOrderId); + + /** + * 完成维修 + * + * @param dmsRepairWorkOrder 维修工单(含repairResult、actualCost等) + * @return 结果 + */ + int completeWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder); + + /** + * 审批 + * + * @param dmsRepairWorkOrder 维修工单(含approveStatus、approver、approveRemark) + * @return 结果 + */ + int approveWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder); +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsDispatchPlanServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsDispatchPlanServiceImpl.java new file mode 100644 index 0000000..de95cea --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsDispatchPlanServiceImpl.java @@ -0,0 +1,216 @@ +package com.aucma.dms.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.SecurityUtils; +import com.aucma.common.utils.uuid.Seq; +import com.aucma.dms.domain.DmsDispatchMember; +import com.aucma.dms.domain.DmsDispatchPlan; +import com.aucma.dms.mapper.DmsDispatchMemberMapper; +import com.aucma.dms.mapper.DmsDispatchPlanMapper; +import com.aucma.dms.service.IDmsDispatchPlanService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; + +/** + * 派工计划Service业务层处理 + * + * @author Cascade AI + * @date 2025-01-10 + */ +@Service +public class DmsDispatchPlanServiceImpl implements IDmsDispatchPlanService { + + @Autowired + private DmsDispatchPlanMapper dmsDispatchPlanMapper; + + @Autowired + private DmsDispatchMemberMapper dmsDispatchMemberMapper; + + /** + * 查询派工计划 + * + * @param planId 派工计划主键 + * @return 派工计划 + */ + @Override + public DmsDispatchPlan selectDmsDispatchPlanByPlanId(Long planId) { + DmsDispatchPlan plan = dmsDispatchPlanMapper.selectDmsDispatchPlanByPlanId(planId); + if (plan != null && "2".equals(plan.getDispatchType())) { + // 团队派工,查询成员列表 + DmsDispatchMember memberQuery = new DmsDispatchMember(); + memberQuery.setPlanId(planId); + List members = dmsDispatchMemberMapper.selectDmsDispatchMemberList(memberQuery); + plan.setDispatchMembers(members); + } + return plan; + } + + /** + * 查询派工计划列表 + * + * @param dmsDispatchPlan 派工计划 + * @return 派工计划 + */ + @Override + public List selectDmsDispatchPlanList(DmsDispatchPlan dmsDispatchPlan) { + return dmsDispatchPlanMapper.selectDmsDispatchPlanList(dmsDispatchPlan); + } + + /** + * 新增派工计划 + * + * @param dmsDispatchPlan 派工计划 + * @return 结果 + */ + @Transactional + @Override + public int insertDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan) { + // 生成派工单号 + if (dmsDispatchPlan.getPlanCode() == null || dmsDispatchPlan.getPlanCode().isEmpty()) { + dmsDispatchPlan.setPlanCode(Seq.getId(Seq.dmsBillsFaultInstanceSeqType, "DP")); + } + + // 设置默认值 + if (dmsDispatchPlan.getReceiveStatus() == null) { + dmsDispatchPlan.setReceiveStatus("0"); // 待接收 + } + if (dmsDispatchPlan.getExecutionStatus() == null) { + dmsDispatchPlan.setExecutionStatus("0"); // 待执行 + } + if (dmsDispatchPlan.getIsFlag() == null) { + dmsDispatchPlan.setIsFlag("1"); + } + if (dmsDispatchPlan.getDispatchTime() == null) { + dmsDispatchPlan.setDispatchTime(new Date()); + } + + // 设置派工人信息 + dmsDispatchPlan.setDispatcherId(SecurityUtils.getUserId()); + dmsDispatchPlan.setDispatcherName(SecurityUtils.getUsername()); + dmsDispatchPlan.setCreateTime(DateUtils.getNowDate()); + dmsDispatchPlan.setCreateBy(SecurityUtils.getUserId()); + + // 插入主表 + int rows = dmsDispatchPlanMapper.insertDmsDispatchPlan(dmsDispatchPlan); + + // 插入成员明细(团队派工) + if ("2".equals(dmsDispatchPlan.getDispatchType())) { + insertDispatchMembers(dmsDispatchPlan); + } + + return rows; + } + + /** + * 修改派工计划 + * + * @param dmsDispatchPlan 派工计划 + * @return 结果 + */ + @Transactional + @Override + public int updateDmsDispatchPlan(DmsDispatchPlan dmsDispatchPlan) { + dmsDispatchPlan.setUpdateTime(DateUtils.getNowDate()); + dmsDispatchPlan.setUpdateBy(SecurityUtils.getUserId()); + + // 删除原有成员 + dmsDispatchMemberMapper.deleteDmsDispatchMemberByPlanId(dmsDispatchPlan.getPlanId()); + + // 重新插入成员(团队派工) + if ("2".equals(dmsDispatchPlan.getDispatchType())) { + insertDispatchMembers(dmsDispatchPlan); + } + + // 更新主表 + return dmsDispatchPlanMapper.updateDmsDispatchPlan(dmsDispatchPlan); + } + + /** + * 批量删除派工计划 + * + * @param planIds 需要删除的派工计划主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteDmsDispatchPlanByPlanIds(Long[] planIds) { + // 删除成员数据 + for (Long planId : planIds) { + dmsDispatchMemberMapper.deleteDmsDispatchMemberByPlanId(planId); + } + return dmsDispatchPlanMapper.deleteDmsDispatchPlanByPlanIds(planIds); + } + + /** + * 删除派工计划信息 + * + * @param planId 派工计划主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteDmsDispatchPlanByPlanId(Long planId) { + // 删除成员数据 + dmsDispatchMemberMapper.deleteDmsDispatchMemberByPlanId(planId); + return dmsDispatchPlanMapper.deleteDmsDispatchPlanByPlanId(planId); + } + + /** + * 接收派工 + * + * @param planId 派工计划ID + * @return 结果 + */ + @Override + public int receiveDispatch(Long planId) { + DmsDispatchPlan updateEntity = new DmsDispatchPlan(); + updateEntity.setPlanId(planId); + updateEntity.setReceiveStatus("1"); // 已接收 + updateEntity.setReceiveTime(new Date()); + updateEntity.setExecutionStatus("0"); // 待执行 + updateEntity.setUpdateTime(DateUtils.getNowDate()); + updateEntity.setUpdateBy(SecurityUtils.getUserId()); + + return dmsDispatchPlanMapper.updateDmsDispatchPlan(updateEntity); + } + + /** + * 拒绝派工 + * + * @param dmsDispatchPlan 派工计划 + * @return 结果 + */ + @Override + public int rejectDispatch(DmsDispatchPlan dmsDispatchPlan) { + DmsDispatchPlan updateEntity = new DmsDispatchPlan(); + updateEntity.setPlanId(dmsDispatchPlan.getPlanId()); + updateEntity.setReceiveStatus("2"); // 已拒绝 + updateEntity.setReceiveTime(new Date()); + updateEntity.setRejectReason(dmsDispatchPlan.getRejectReason()); + updateEntity.setExecutionStatus("3"); // 已取消 + updateEntity.setUpdateTime(DateUtils.getNowDate()); + updateEntity.setUpdateBy(SecurityUtils.getUserId()); + + return dmsDispatchPlanMapper.updateDmsDispatchPlan(updateEntity); + } + + /** + * 插入派工成员明细 + */ + private void insertDispatchMembers(DmsDispatchPlan plan) { + List members = plan.getDispatchMembers(); + if (!CollectionUtils.isEmpty(members)) { + for (DmsDispatchMember member : members) { + member.setPlanId(plan.getPlanId()); + member.setCreateTime(DateUtils.getNowDate()); + member.setCreateBy(SecurityUtils.getUserId()); + dmsDispatchMemberMapper.insertDmsDispatchMember(member); + } + } + } +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsRepairRecordServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsRepairRecordServiceImpl.java new file mode 100644 index 0000000..2e9c7dc --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsRepairRecordServiceImpl.java @@ -0,0 +1,136 @@ +package com.aucma.dms.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.SecurityUtils; +import com.aucma.dms.domain.DmsRepairRecord; +import com.aucma.dms.mapper.DmsRepairRecordMapper; +import com.aucma.dms.service.IDmsRepairRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 维修记录Service业务层处理 + * + * @author Cascade AI + * @date 2025-01-10 + */ +@Service +public class DmsRepairRecordServiceImpl implements IDmsRepairRecordService { + + @Autowired + private DmsRepairRecordMapper dmsRepairRecordMapper; + + /** + * 查询维修记录 + * + * @param recordId 维修记录主键 + * @return 维修记录 + */ + @Override + public DmsRepairRecord selectDmsRepairRecordByRecordId(Long recordId) { + return dmsRepairRecordMapper.selectDmsRepairRecordByRecordId(recordId); + } + + /** + * 查询维修记录列表 + * + * @param dmsRepairRecord 维修记录 + * @return 维修记录 + */ + @Override + public List selectDmsRepairRecordList(DmsRepairRecord dmsRepairRecord) { + return dmsRepairRecordMapper.selectDmsRepairRecordList(dmsRepairRecord); + } + + /** + * 新增维修记录 + * + * @param dmsRepairRecord 维修记录 + * @return 结果 + */ + @Override + public int insertDmsRepairRecord(DmsRepairRecord dmsRepairRecord) { + // 设置默认值 + if (dmsRepairRecord.getIsArchived() == null) { + dmsRepairRecord.setIsArchived("0"); // 未存档 + } + if (dmsRepairRecord.getIsFlag() == null) { + dmsRepairRecord.setIsFlag("1"); + } + + dmsRepairRecord.setCreateTime(DateUtils.getNowDate()); + dmsRepairRecord.setCreateBy(SecurityUtils.getUserId()); + + return dmsRepairRecordMapper.insertDmsRepairRecord(dmsRepairRecord); + } + + /** + * 修改维修记录 + * + * @param dmsRepairRecord 维修记录 + * @return 结果 + */ + @Override + public int updateDmsRepairRecord(DmsRepairRecord dmsRepairRecord) { + dmsRepairRecord.setUpdateTime(DateUtils.getNowDate()); + dmsRepairRecord.setUpdateBy(SecurityUtils.getUserId()); + return dmsRepairRecordMapper.updateDmsRepairRecord(dmsRepairRecord); + } + + /** + * 批量删除维修记录 + * + * @param recordIds 需要删除的维修记录主键 + * @return 结果 + */ + @Override + public int deleteDmsRepairRecordByRecordIds(Long[] recordIds) { + return dmsRepairRecordMapper.deleteDmsRepairRecordByRecordIds(recordIds); + } + + /** + * 删除维修记录信息 + * + * @param recordId 维修记录主键 + * @return 结果 + */ + @Override + public int deleteDmsRepairRecordByRecordId(Long recordId) { + return dmsRepairRecordMapper.deleteDmsRepairRecordByRecordId(recordId); + } + + /** + * 存档维修记录 + * + * @param recordIds 需要存档的维修记录主键集合 + * @return 结果 + */ + @Override + public int archiveRepairRecords(Long[] recordIds) { + int count = 0; + for (Long recordId : recordIds) { + DmsRepairRecord updateEntity = new DmsRepairRecord(); + updateEntity.setRecordId(recordId); + updateEntity.setIsArchived("1"); // 已存档 + updateEntity.setUpdateTime(DateUtils.getNowDate()); + updateEntity.setUpdateBy(SecurityUtils.getUserId()); + count += dmsRepairRecordMapper.updateDmsRepairRecord(updateEntity); + } + return count; + } + + /** + * 根据设备ID查询维修历史 + * + * @param deviceId 设备ID + * @return 维修记录集合 + */ + @Override + public List selectRepairHistoryByDeviceId(Long deviceId) { + DmsRepairRecord query = new DmsRepairRecord(); + query.setDeviceId(deviceId); + return dmsRepairRecordMapper.selectDmsRepairRecordList(query); + } +} diff --git a/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsRepairWorkOrderServiceImpl.java b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsRepairWorkOrderServiceImpl.java new file mode 100644 index 0000000..d2077fc --- /dev/null +++ b/aucma-dms/src/main/java/com/aucma/dms/service/impl/DmsRepairWorkOrderServiceImpl.java @@ -0,0 +1,295 @@ +package com.aucma.dms.service.impl; + +import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.SecurityUtils; +import com.aucma.common.utils.uuid.Seq; +import com.aucma.dms.domain.DmsRepairMaterial; +import com.aucma.dms.domain.DmsRepairProject; +import com.aucma.dms.domain.DmsRepairWorkOrder; +import com.aucma.dms.mapper.DmsRepairMaterialMapper; +import com.aucma.dms.mapper.DmsRepairProjectMapper; +import com.aucma.dms.mapper.DmsRepairWorkOrderMapper; +import com.aucma.dms.service.IDmsRepairWorkOrderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; + +/** + * 维修工单Service业务层处理 + * + * @author Cascade AI + * @date 2025-01-10 + */ +@Service +public class DmsRepairWorkOrderServiceImpl implements IDmsRepairWorkOrderService { + + @Autowired + private DmsRepairWorkOrderMapper dmsRepairWorkOrderMapper; + + @Autowired + private DmsRepairProjectMapper dmsRepairProjectMapper; + + @Autowired + private DmsRepairMaterialMapper dmsRepairMaterialMapper; + + /** + * 查询维修工单 + * + * @param workOrderId 维修工单主键 + * @return 维修工单 + */ + @Override + public DmsRepairWorkOrder selectDmsRepairWorkOrderByWorkOrderId(Long workOrderId) { + DmsRepairWorkOrder workOrder = dmsRepairWorkOrderMapper.selectDmsRepairWorkOrderByWorkOrderId(workOrderId); + if (workOrder != null) { + // 查询维修工程明细 + DmsRepairProject projectQuery = new DmsRepairProject(); + projectQuery.setWorkOrderId(workOrderId); + List projects = dmsRepairProjectMapper.selectDmsRepairProjectList(projectQuery); + workOrder.setRepairProjects(projects); + workOrder.setProjectCount(projects != null ? projects.size() : 0); + + // 查询维修材料明细 + DmsRepairMaterial materialQuery = new DmsRepairMaterial(); + materialQuery.setWorkOrderId(workOrderId); + List materials = dmsRepairMaterialMapper.selectDmsRepairMaterialList(materialQuery); + workOrder.setRepairMaterials(materials); + workOrder.setMaterialCount(materials != null ? materials.size() : 0); + } + return workOrder; + } + + /** + * 查询维修工单列表 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 维修工单 + */ + @Override + public List selectDmsRepairWorkOrderList(DmsRepairWorkOrder dmsRepairWorkOrder) { + List list = dmsRepairWorkOrderMapper.selectDmsRepairWorkOrderList(dmsRepairWorkOrder); + // 填充工程数和材料数 + if (!CollectionUtils.isEmpty(list)) { + for (DmsRepairWorkOrder workOrder : list) { + DmsRepairProject projectQuery = new DmsRepairProject(); + projectQuery.setWorkOrderId(workOrder.getWorkOrderId()); + int projectCount = dmsRepairProjectMapper.selectDmsRepairProjectList(projectQuery).size(); + workOrder.setProjectCount(projectCount); + + DmsRepairMaterial materialQuery = new DmsRepairMaterial(); + materialQuery.setWorkOrderId(workOrder.getWorkOrderId()); + int materialCount = dmsRepairMaterialMapper.selectDmsRepairMaterialList(materialQuery).size(); + workOrder.setMaterialCount(materialCount); + } + } + return list; + } + + /** + * 新增维修工单 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + @Transactional + @Override + public int insertDmsRepairWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder) { + // 生成工单编号 + if (dmsRepairWorkOrder.getWorkOrderCode() == null || dmsRepairWorkOrder.getWorkOrderCode().isEmpty()) { + dmsRepairWorkOrder.setWorkOrderCode(Seq.getId(Seq.dmsBillsFaultInstanceSeqType, "WO")); + } + + // 设置默认值 + if (dmsRepairWorkOrder.getOrderStatus() == null) { + dmsRepairWorkOrder.setOrderStatus("0"); // 待派工 + } + if (dmsRepairWorkOrder.getApproveStatus() == null) { + dmsRepairWorkOrder.setApproveStatus("0"); // 待审批 + } + if (dmsRepairWorkOrder.getIsFlag() == null) { + dmsRepairWorkOrder.setIsFlag("1"); + } + + dmsRepairWorkOrder.setCreateTime(DateUtils.getNowDate()); + dmsRepairWorkOrder.setCreateBy(SecurityUtils.getUserId()); + + // 插入主表 + int rows = dmsRepairWorkOrderMapper.insertDmsRepairWorkOrder(dmsRepairWorkOrder); + + // 插入维修工程明细 + insertRepairProjects(dmsRepairWorkOrder); + + // 插入维修材料明细 + insertRepairMaterials(dmsRepairWorkOrder); + + return rows; + } + + /** + * 修改维修工单 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + @Transactional + @Override + public int updateDmsRepairWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder) { + dmsRepairWorkOrder.setUpdateTime(DateUtils.getNowDate()); + dmsRepairWorkOrder.setUpdateBy(SecurityUtils.getUserId()); + + // 删除原有子表数据 + dmsRepairProjectMapper.deleteDmsRepairProjectByWorkOrderId(dmsRepairWorkOrder.getWorkOrderId()); + dmsRepairMaterialMapper.deleteDmsRepairMaterialByWorkOrderId(dmsRepairWorkOrder.getWorkOrderId()); + + // 重新插入子表数据 + insertRepairProjects(dmsRepairWorkOrder); + insertRepairMaterials(dmsRepairWorkOrder); + + // 更新主表 + return dmsRepairWorkOrderMapper.updateDmsRepairWorkOrder(dmsRepairWorkOrder); + } + + /** + * 批量删除维修工单 + * + * @param workOrderIds 需要删除的维修工单主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteDmsRepairWorkOrderByWorkOrderIds(Long[] workOrderIds) { + // 删除子表数据 + for (Long workOrderId : workOrderIds) { + dmsRepairProjectMapper.deleteDmsRepairProjectByWorkOrderId(workOrderId); + dmsRepairMaterialMapper.deleteDmsRepairMaterialByWorkOrderId(workOrderId); + } + return dmsRepairWorkOrderMapper.deleteDmsRepairWorkOrderByWorkOrderIds(workOrderIds); + } + + /** + * 删除维修工单信息 + * + * @param workOrderId 维修工单主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteDmsRepairWorkOrderByWorkOrderId(Long workOrderId) { + // 删除子表数据 + dmsRepairProjectMapper.deleteDmsRepairProjectByWorkOrderId(workOrderId); + dmsRepairMaterialMapper.deleteDmsRepairMaterialByWorkOrderId(workOrderId); + return dmsRepairWorkOrderMapper.deleteDmsRepairWorkOrderByWorkOrderId(workOrderId); + } + + /** + * 派工 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + @Override + public int dispatchWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder) { + DmsRepairWorkOrder updateEntity = new DmsRepairWorkOrder(); + updateEntity.setWorkOrderId(dmsRepairWorkOrder.getWorkOrderId()); + updateEntity.setExecutorId(dmsRepairWorkOrder.getExecutorId()); + updateEntity.setExecutorName(dmsRepairWorkOrder.getExecutorName()); + updateEntity.setOrderStatus("1"); // 已派工 + updateEntity.setUpdateTime(DateUtils.getNowDate()); + updateEntity.setUpdateBy(SecurityUtils.getUserId()); + + return dmsRepairWorkOrderMapper.updateDmsRepairWorkOrder(updateEntity); + } + + /** + * 开始维修 + * + * @param workOrderId 维修工单ID + * @return 结果 + */ + @Override + public int startWorkOrder(Long workOrderId) { + DmsRepairWorkOrder updateEntity = new DmsRepairWorkOrder(); + updateEntity.setWorkOrderId(workOrderId); + updateEntity.setOrderStatus("2"); // 维修中 + updateEntity.setActualStartTime(new Date()); + updateEntity.setUpdateTime(DateUtils.getNowDate()); + updateEntity.setUpdateBy(SecurityUtils.getUserId()); + + return dmsRepairWorkOrderMapper.updateDmsRepairWorkOrder(updateEntity); + } + + /** + * 完成维修 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + @Override + public int completeWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder) { + DmsRepairWorkOrder updateEntity = new DmsRepairWorkOrder(); + updateEntity.setWorkOrderId(dmsRepairWorkOrder.getWorkOrderId()); + updateEntity.setOrderStatus("3"); // 已完成 + updateEntity.setActualEndTime(new Date()); + updateEntity.setRepairResult(dmsRepairWorkOrder.getRepairResult()); + updateEntity.setActualCost(dmsRepairWorkOrder.getActualCost()); + updateEntity.setRepairHours(dmsRepairWorkOrder.getRepairHours()); + updateEntity.setUpdateTime(DateUtils.getNowDate()); + updateEntity.setUpdateBy(SecurityUtils.getUserId()); + + return dmsRepairWorkOrderMapper.updateDmsRepairWorkOrder(updateEntity); + } + + /** + * 审批 + * + * @param dmsRepairWorkOrder 维修工单 + * @return 结果 + */ + @Override + public int approveWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder) { + DmsRepairWorkOrder updateEntity = new DmsRepairWorkOrder(); + updateEntity.setWorkOrderId(dmsRepairWorkOrder.getWorkOrderId()); + updateEntity.setApproveStatus(dmsRepairWorkOrder.getApproveStatus()); + updateEntity.setApprover(SecurityUtils.getUsername()); + updateEntity.setApproveTime(new Date()); + updateEntity.setApproveRemark(dmsRepairWorkOrder.getApproveRemark()); + updateEntity.setUpdateTime(DateUtils.getNowDate()); + updateEntity.setUpdateBy(SecurityUtils.getUserId()); + + return dmsRepairWorkOrderMapper.updateDmsRepairWorkOrder(updateEntity); + } + + /** + * 插入维修工程明细 + */ + private void insertRepairProjects(DmsRepairWorkOrder workOrder) { + List projects = workOrder.getRepairProjects(); + if (!CollectionUtils.isEmpty(projects)) { + for (DmsRepairProject project : projects) { + project.setWorkOrderId(workOrder.getWorkOrderId()); + project.setCreateTime(DateUtils.getNowDate()); + project.setCreateBy(SecurityUtils.getUserId()); + dmsRepairProjectMapper.insertDmsRepairProject(project); + } + } + } + + /** + * 插入维修材料明细 + */ + private void insertRepairMaterials(DmsRepairWorkOrder workOrder) { + List materials = workOrder.getRepairMaterials(); + if (!CollectionUtils.isEmpty(materials)) { + for (DmsRepairMaterial material : materials) { + material.setWorkOrderId(workOrder.getWorkOrderId()); + material.setCreateTime(DateUtils.getNowDate()); + material.setCreateBy(SecurityUtils.getUserId()); + dmsRepairMaterialMapper.insertDmsRepairMaterial(material); + } + } + } +} diff --git a/aucma-dms/src/main/resources/mapper/dms/BaseAttachInfoMapper.xml b/aucma-dms/src/main/resources/mapper/dms/BaseAttachInfoMapper.xml new file mode 100644 index 0000000..8bd0380 --- /dev/null +++ b/aucma-dms/src/main/resources/mapper/dms/BaseAttachInfoMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + INSERT ALL + + INTO dms_base_attach_info(attach_id, attach_type, attach_name, attach_path, process_id, active_flag, create_time) + VALUES (SEQ_MES_BASE_ATTACH_INFO.NEXTVAL, #{item.attachType}, #{item.attachName}, #{item.attachPath}, #{item.processId}, '1', #{item.createTime}) + + SELECT 1 FROM DUAL + + + + + + + + update dms_base_attach_info + set active_flag = '0' + where attach_type = #{attachType} + and process_id = #{processId} + + diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsDispatchMemberMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsDispatchMemberMapper.xml new file mode 100644 index 0000000..9b117a1 --- /dev/null +++ b/aucma-dms/src/main/resources/mapper/dms/DmsDispatchMemberMapper.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + select member_id, plan_id, user_id, user_name, member_role, allocated_hours, remark, + create_by, create_time, update_by, update_time + from dms_dispatch_member + + + + + + + + + select SEQ_DMS_DISPATCH_MEMBER.nextval as memberId from DUAL + + insert into dms_dispatch_member + + member_id, + plan_id, + user_id, + user_name, + member_role, + allocated_hours, + remark, + create_by, + create_time + + + #{memberId}, + #{planId}, + #{userId}, + #{userName}, + #{memberRole}, + #{allocatedHours}, + #{remark}, + #{createBy}, + sysdate + + + + + update dms_dispatch_member + + plan_id = #{planId}, + user_id = #{userId}, + user_name = #{userName}, + member_role = #{memberRole}, + allocated_hours = #{allocatedHours}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate + + where member_id = #{memberId} + + + + delete from dms_dispatch_member where member_id = #{memberId} + + + + delete from dms_dispatch_member where member_id in + + #{memberId} + + + + + delete from dms_dispatch_member where plan_id = #{planId} + + diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsDispatchPlanMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsDispatchPlanMapper.xml new file mode 100644 index 0000000..d225706 --- /dev/null +++ b/aucma-dms/src/main/resources/mapper/dms/DmsDispatchPlanMapper.xml @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select plan_id, plan_code, work_order_id, work_order_code, device_id, device_code, device_name, + dispatch_type, executor_id, executor_name, team_id, team_name, dispatch_time, + require_start_time, require_end_time, receive_status, receive_time, reject_reason, + execution_status, priority, dispatcher_id, dispatcher_name, dispatch_notes, + is_flag, remark, create_by, create_time, update_by, update_time + from dms_dispatch_plan + + + + + + + + + select SEQ_DMS_DISPATCH_PLAN.nextval as planId from DUAL + + insert into dms_dispatch_plan + + plan_id, + plan_code, + work_order_id, + work_order_code, + device_id, + device_code, + device_name, + dispatch_type, + executor_id, + executor_name, + team_id, + team_name, + dispatch_time, + require_start_time, + require_end_time, + receive_status, + receive_time, + reject_reason, + execution_status, + priority, + dispatcher_id, + dispatcher_name, + dispatch_notes, + is_flag, + remark, + create_by, + create_time + + + #{planId}, + #{planCode}, + #{workOrderId}, + #{workOrderCode}, + #{deviceId}, + #{deviceCode}, + #{deviceName}, + #{dispatchType}, + #{executorId}, + #{executorName}, + #{teamId}, + #{teamName}, + #{dispatchTime}, + #{requireStartTime}, + #{requireEndTime}, + #{receiveStatus}, + #{receiveTime}, + #{rejectReason}, + #{executionStatus}, + #{priority}, + #{dispatcherId}, + #{dispatcherName}, + #{dispatchNotes}, + #{isFlag}, + #{remark}, + #{createBy}, + sysdate + + + + + update dms_dispatch_plan + + plan_code = #{planCode}, + work_order_id = #{workOrderId}, + work_order_code = #{workOrderCode}, + device_id = #{deviceId}, + device_code = #{deviceCode}, + device_name = #{deviceName}, + dispatch_type = #{dispatchType}, + executor_id = #{executorId}, + executor_name = #{executorName}, + team_id = #{teamId}, + team_name = #{teamName}, + dispatch_time = #{dispatchTime}, + require_start_time = #{requireStartTime}, + require_end_time = #{requireEndTime}, + receive_status = #{receiveStatus}, + receive_time = #{receiveTime}, + reject_reason = #{rejectReason}, + execution_status = #{executionStatus}, + priority = #{priority}, + dispatcher_id = #{dispatcherId}, + dispatcher_name = #{dispatcherName}, + dispatch_notes = #{dispatchNotes}, + is_flag = #{isFlag}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate + + where plan_id = #{planId} + + + + update dms_dispatch_plan set is_flag = '0' where plan_id = #{planId} + + + + update dms_dispatch_plan set is_flag = '0' where plan_id in + + #{planId} + + + diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsRepairMaterialMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsRepairMaterialMapper.xml new file mode 100644 index 0000000..3c85261 --- /dev/null +++ b/aucma-dms/src/main/resources/mapper/dms/DmsRepairMaterialMapper.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_id, work_order_id, material_code, material_name, material_spec, + material_type, unit, plan_quantity, actual_quantity, unit_price, total_amount, + receive_status, receiver, receive_time, warehouse_id, warehouse_name, remark, + create_by, create_time, update_by, update_time + from dms_repair_material + + + + + + + + + select SEQ_DMS_REPAIR_MATERIAL.nextval as materialId from DUAL + + insert into dms_repair_material + + material_id, + work_order_id, + material_code, + material_name, + material_spec, + material_type, + unit, + plan_quantity, + actual_quantity, + unit_price, + total_amount, + receive_status, + receiver, + receive_time, + warehouse_id, + warehouse_name, + remark, + create_by, + create_time + + + #{materialId}, + #{workOrderId}, + #{materialCode}, + #{materialName}, + #{materialSpec}, + #{materialType}, + #{unit}, + #{planQuantity}, + #{actualQuantity}, + #{unitPrice}, + #{totalAmount}, + #{receiveStatus}, + #{receiver}, + #{receiveTime}, + #{warehouseId}, + #{warehouseName}, + #{remark}, + #{createBy}, + sysdate + + + + + update dms_repair_material + + work_order_id = #{workOrderId}, + material_code = #{materialCode}, + material_name = #{materialName}, + material_spec = #{materialSpec}, + material_type = #{materialType}, + unit = #{unit}, + plan_quantity = #{planQuantity}, + actual_quantity = #{actualQuantity}, + unit_price = #{unitPrice}, + total_amount = #{totalAmount}, + receive_status = #{receiveStatus}, + receiver = #{receiver}, + receive_time = #{receiveTime}, + warehouse_id = #{warehouseId}, + warehouse_name = #{warehouseName}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate + + where material_id = #{materialId} + + + + delete from dms_repair_material where material_id = #{materialId} + + + + delete from dms_repair_material where material_id in + + #{materialId} + + + + + delete from dms_repair_material where work_order_id = #{workOrderId} + + diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsRepairProjectMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsRepairProjectMapper.xml new file mode 100644 index 0000000..716f93b --- /dev/null +++ b/aucma-dms/src/main/resources/mapper/dms/DmsRepairProjectMapper.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select project_id, work_order_id, project_seq, project_name, project_type, + project_content, technical_requirement, plan_hours, actual_hours, + execution_status, executor, quality_level, remark, + create_by, create_time, update_by, update_time + from dms_repair_project + + + + + + + + + select SEQ_DMS_REPAIR_PROJECT.nextval as projectId from DUAL + + insert into dms_repair_project + + project_id, + work_order_id, + project_seq, + project_name, + project_type, + project_content, + technical_requirement, + plan_hours, + actual_hours, + execution_status, + executor, + quality_level, + remark, + create_by, + create_time + + + #{projectId}, + #{workOrderId}, + #{projectSeq}, + #{projectName}, + #{projectType}, + #{projectContent}, + #{technicalRequirement}, + #{planHours}, + #{actualHours}, + #{executionStatus}, + #{executor}, + #{qualityLevel}, + #{remark}, + #{createBy}, + sysdate + + + + + update dms_repair_project + + work_order_id = #{workOrderId}, + project_seq = #{projectSeq}, + project_name = #{projectName}, + project_type = #{projectType}, + project_content = #{projectContent}, + technical_requirement = #{technicalRequirement}, + plan_hours = #{planHours}, + actual_hours = #{actualHours}, + execution_status = #{executionStatus}, + executor = #{executor}, + quality_level = #{qualityLevel}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate + + where project_id = #{projectId} + + + + delete from dms_repair_project where project_id = #{projectId} + + + + delete from dms_repair_project where project_id in + + #{projectId} + + + + + delete from dms_repair_project where work_order_id = #{workOrderId} + + diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsRepairRecordMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsRepairRecordMapper.xml new file mode 100644 index 0000000..8d4fc7c --- /dev/null +++ b/aucma-dms/src/main/resources/mapper/dms/DmsRepairRecordMapper.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select record_id, work_order_id, work_order_code, device_id, device_code, device_name, + fault_phenomenon, fault_cause, repair_method, repair_process, replaced_parts, + repair_result, repairer_id, repairer_name, start_time, end_time, + repair_hours, repair_cost, shutdown_duration, acceptor, accept_time, + accept_result, accept_opinion, followup_suggestion, is_archived, is_flag, remark, + create_by, create_time, update_by, update_time + from dms_repair_record + + + + + + + + + select SEQ_DMS_REPAIR_RECORD.nextval as recordId from DUAL + + insert into dms_repair_record + + record_id, + work_order_id, + work_order_code, + device_id, + device_code, + device_name, + fault_phenomenon, + fault_cause, + repair_method, + repair_process, + replaced_parts, + repair_result, + repairer_id, + repairer_name, + start_time, + end_time, + repair_hours, + repair_cost, + shutdown_duration, + acceptor, + accept_time, + accept_result, + accept_opinion, + followup_suggestion, + is_archived, + is_flag, + remark, + create_by, + create_time + + + #{recordId}, + #{workOrderId}, + #{workOrderCode}, + #{deviceId}, + #{deviceCode}, + #{deviceName}, + #{faultPhenomenon}, + #{faultCause}, + #{repairMethod}, + #{repairProcess}, + #{replacedParts}, + #{repairResult}, + #{repairerId}, + #{repairerName}, + #{startTime}, + #{endTime}, + #{repairHours}, + #{repairCost}, + #{shutdownDuration}, + #{acceptor}, + #{acceptTime}, + #{acceptResult}, + #{acceptOpinion}, + #{followupSuggestion}, + #{isArchived}, + #{isFlag}, + #{remark}, + #{createBy}, + sysdate + + + + + update dms_repair_record + + work_order_id = #{workOrderId}, + work_order_code = #{workOrderCode}, + device_id = #{deviceId}, + device_code = #{deviceCode}, + device_name = #{deviceName}, + fault_phenomenon = #{faultPhenomenon}, + fault_cause = #{faultCause}, + repair_method = #{repairMethod}, + repair_process = #{repairProcess}, + replaced_parts = #{replacedParts}, + repair_result = #{repairResult}, + repairer_id = #{repairerId}, + repairer_name = #{repairerName}, + start_time = #{startTime}, + end_time = #{endTime}, + repair_hours = #{repairHours}, + repair_cost = #{repairCost}, + shutdown_duration = #{shutdownDuration}, + acceptor = #{acceptor}, + accept_time = #{acceptTime}, + accept_result = #{acceptResult}, + accept_opinion = #{acceptOpinion}, + followup_suggestion = #{followupSuggestion}, + is_archived = #{isArchived}, + is_flag = #{isFlag}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate + + where record_id = #{recordId} + + + + update dms_repair_record set is_flag = '0' where record_id = #{recordId} + + + + update dms_repair_record set is_flag = '0' where record_id in + + #{recordId} + + + diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsRepairWorkOrderMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsRepairWorkOrderMapper.xml new file mode 100644 index 0000000..19372d7 --- /dev/null +++ b/aucma-dms/src/main/resources/mapper/dms/DmsRepairWorkOrderMapper.xml @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select work_order_id, work_order_code, fault_instance_id, device_id, device_code, device_name, + fault_type, fault_description, repair_type, order_status, priority, + plan_start_time, plan_end_time, actual_start_time, actual_end_time, + executor_id, executor_name, repair_hours, budget_cost, actual_cost, + repair_result, repair_notes, approve_status, approver, approve_time, approve_remark, + need_shutdown, shutdown_duration, is_flag, remark, + create_by, create_time, update_by, update_time + from dms_repair_work_order + + + + + + + + + + + select SEQ_DMS_REPAIR_WORK_ORDER.nextval as workOrderId from DUAL + + insert into dms_repair_work_order + + work_order_id, + work_order_code, + fault_instance_id, + device_id, + device_code, + device_name, + fault_type, + fault_description, + repair_type, + order_status, + priority, + plan_start_time, + plan_end_time, + actual_start_time, + actual_end_time, + executor_id, + executor_name, + repair_hours, + budget_cost, + actual_cost, + repair_result, + repair_notes, + approve_status, + approver, + approve_time, + approve_remark, + need_shutdown, + shutdown_duration, + is_flag, + remark, + create_by, + create_time + + + #{workOrderId}, + #{workOrderCode}, + #{faultInstanceId}, + #{deviceId}, + #{deviceCode}, + #{deviceName}, + #{faultType}, + #{faultDescription}, + #{repairType}, + #{orderStatus}, + #{priority}, + #{planStartTime}, + #{planEndTime}, + #{actualStartTime}, + #{actualEndTime}, + #{executorId}, + #{executorName}, + #{repairHours}, + #{budgetCost}, + #{actualCost}, + #{repairResult}, + #{repairNotes}, + #{approveStatus}, + #{approver}, + #{approveTime}, + #{approveRemark}, + #{needShutdown}, + #{shutdownDuration}, + #{isFlag}, + #{remark}, + #{createBy}, + sysdate + + + + + update dms_repair_work_order + + work_order_code = #{workOrderCode}, + fault_instance_id = #{faultInstanceId}, + device_id = #{deviceId}, + device_code = #{deviceCode}, + device_name = #{deviceName}, + fault_type = #{faultType}, + fault_description = #{faultDescription}, + repair_type = #{repairType}, + order_status = #{orderStatus}, + priority = #{priority}, + plan_start_time = #{planStartTime}, + plan_end_time = #{planEndTime}, + actual_start_time = #{actualStartTime}, + actual_end_time = #{actualEndTime}, + executor_id = #{executorId}, + executor_name = #{executorName}, + repair_hours = #{repairHours}, + budget_cost = #{budgetCost}, + actual_cost = #{actualCost}, + repair_result = #{repairResult}, + repair_notes = #{repairNotes}, + approve_status = #{approveStatus}, + approver = #{approver}, + approve_time = #{approveTime}, + approve_remark = #{approveRemark}, + need_shutdown = #{needShutdown}, + shutdown_duration = #{shutdownDuration}, + is_flag = #{isFlag}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate + + where work_order_id = #{workOrderId} + + + + update dms_repair_work_order set is_flag = '0' where work_order_id = #{workOrderId} + + + + update dms_repair_work_order set is_flag = '0' where work_order_id in + + #{workOrderId} + + +