feat(dms): 新增派工计划及成员管理功能

- 新增派工计划实体类、Mapper、Service及Controller
- 实现派工计划的增删改查及导出功能- 新增派工成员实体类及Mapper接口
- 实现团队派工成员的维护与查询逻辑
- 添加派的状态工接收与拒绝更新接口
- 新增维修材料明细实体类
- 添加BaseAttachInfoMapper.xml文件并实现附件批量插入、查询和软删除功能
master
zangch@mesnac.com 3 months ago
parent eaad673ab2
commit ef35d51176

@ -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<DmsDispatchPlan> 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<DmsDispatchPlan> list = dmsDispatchPlanService.selectDmsDispatchPlanList(dmsDispatchPlan);
ExcelUtil<DmsDispatchPlan> util = new ExcelUtil<DmsDispatchPlan>(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));
}
}

@ -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<DmsRepairRecord> 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<DmsRepairRecord> list = dmsRepairRecordService.selectDmsRepairRecordList(dmsRepairRecord);
ExcelUtil<DmsRepairRecord> util = new ExcelUtil<DmsRepairRecord>(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<String, Object> params) {
Long[] recordIds = ((List<Integer>) 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<DmsRepairRecord> list = dmsRepairRecordService.selectRepairHistoryByDeviceId(deviceId);
return AjaxResult.success(list);
}
}

@ -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<DmsRepairWorkOrder> 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<DmsRepairWorkOrder> list = dmsRepairWorkOrderService.selectDmsRepairWorkOrderList(dmsRepairWorkOrder);
ExcelUtil<DmsRepairWorkOrder> util = new ExcelUtil<DmsRepairWorkOrder>(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));
}
}

@ -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;
}

@ -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<DmsDispatchMember> dispatchMembers;
}

@ -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;
}

@ -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;
}

@ -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<DmsInstanceFile> attachments;
/** 使用的材料列表 */
private List<DmsRepairMaterial> materials;
}

@ -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<DmsRepairProject> repairProjects;
/** 维修材料列表 */
private List<DmsRepairMaterial> repairMaterials;
/** 附件列表 */
private List<DmsInstanceFile> attachments;
// ========== 非数据库字段 ==========
/** 工程数量 */
private Integer projectCount;
/** 材料数量 */
private Integer materialCount;
}

@ -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<DmsDispatchMember> 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);
}

@ -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<DmsDispatchPlan> 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);
}

@ -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<DmsRepairMaterial> 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);
}

@ -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<DmsRepairProject> 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);
}

@ -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<DmsRepairRecord> 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);
}

@ -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<DmsRepairWorkOrder> 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<DmsRepairWorkOrder> selectWorkOrderStatistics(DmsRepairWorkOrder dmsRepairWorkOrder);
}

@ -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<DmsDispatchPlan> 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 planIdrejectReason
* @return
*/
int rejectDispatch(DmsDispatchPlan dmsDispatchPlan);
}

@ -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<DmsRepairRecord> 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<DmsRepairRecord> selectRepairHistoryByDeviceId(Long deviceId);
}

@ -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<DmsRepairWorkOrder> 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 executorIdexecutorName
* @return
*/
int dispatchWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder);
/**
*
*
* @param workOrderId ID
* @return
*/
int startWorkOrder(Long workOrderId);
/**
*
*
* @param dmsRepairWorkOrder repairResultactualCost
* @return
*/
int completeWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder);
/**
*
*
* @param dmsRepairWorkOrder approveStatusapproverapproveRemark
* @return
*/
int approveWorkOrder(DmsRepairWorkOrder dmsRepairWorkOrder);
}

@ -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<DmsDispatchMember> members = dmsDispatchMemberMapper.selectDmsDispatchMemberList(memberQuery);
plan.setDispatchMembers(members);
}
return plan;
}
/**
*
*
* @param dmsDispatchPlan
* @return
*/
@Override
public List<DmsDispatchPlan> 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<DmsDispatchMember> 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);
}
}
}
}

@ -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<DmsRepairRecord> 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<DmsRepairRecord> selectRepairHistoryByDeviceId(Long deviceId) {
DmsRepairRecord query = new DmsRepairRecord();
query.setDeviceId(deviceId);
return dmsRepairRecordMapper.selectDmsRepairRecordList(query);
}
}

@ -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<DmsRepairProject> projects = dmsRepairProjectMapper.selectDmsRepairProjectList(projectQuery);
workOrder.setRepairProjects(projects);
workOrder.setProjectCount(projects != null ? projects.size() : 0);
// 查询维修材料明细
DmsRepairMaterial materialQuery = new DmsRepairMaterial();
materialQuery.setWorkOrderId(workOrderId);
List<DmsRepairMaterial> materials = dmsRepairMaterialMapper.selectDmsRepairMaterialList(materialQuery);
workOrder.setRepairMaterials(materials);
workOrder.setMaterialCount(materials != null ? materials.size() : 0);
}
return workOrder;
}
/**
*
*
* @param dmsRepairWorkOrder
* @return
*/
@Override
public List<DmsRepairWorkOrder> selectDmsRepairWorkOrderList(DmsRepairWorkOrder dmsRepairWorkOrder) {
List<DmsRepairWorkOrder> 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<DmsRepairProject> 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<DmsRepairMaterial> 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);
}
}
}
}

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aucma.dms.mapper.BaseAttachInfoMapper">
<resultMap type="BaseAttachInfo" id="BaseAttachInfoResult">
<result property="attachId" column="attach_id"/>
<result property="attachCode" column="attach_code"/>
<result property="attachName" column="attach_name"/>
<result property="attachType" column="attach_type"/>
<result property="attachPath" column="attach_path"/>
<result property="processId" column="process_id"/>
<result property="activeFlag" column="active_flag"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<!-- Oracle 11g 批量插入语法:使用 INSERT ALL -->
<insert id="batchDmsKnowLedgeLubeFile" >
INSERT ALL
<foreach item="item" index="index" collection="list">
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})
</foreach>
SELECT 1 FROM DUAL
</insert>
<!-- 查询有效附件列表 -->
<select id="selectListBaseAttachInfos" resultType="java.lang.String">
select attach_path
from dms_base_attach_info
where attach_type = #{attachType}
and process_id = #{processId}
and active_flag = '1'
order by create_time desc
</select>
<!-- 软删除:将附件标记为无效 -->
<delete id="deleteListBaseAttachInfos">
update dms_base_attach_info
set active_flag = '0'
where attach_type = #{attachType}
and process_id = #{processId}
</delete>
</mapper>

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aucma.dms.mapper.DmsDispatchMemberMapper">
<resultMap type="DmsDispatchMember" id="DmsDispatchMemberResult">
<result property="memberId" column="member_id" />
<result property="planId" column="plan_id" />
<result property="userId" column="user_id" />
<result property="userName" column="user_name" />
<result property="memberRole" column="member_role" />
<result property="allocatedHours" column="allocated_hours" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDmsDispatchMemberVo">
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
</sql>
<select id="selectDmsDispatchMemberList" parameterType="DmsDispatchMember" resultMap="DmsDispatchMemberResult">
<include refid="selectDmsDispatchMemberVo"/>
<where>
<if test="planId != null">
and plan_id = #{planId}
</if>
<if test="userId != null">
and user_id = #{userId}
</if>
<if test="memberRole != null and memberRole != ''">
and member_role = #{memberRole}
</if>
</where>
order by member_id
</select>
<select id="selectDmsDispatchMemberByMemberId" parameterType="Long" resultMap="DmsDispatchMemberResult">
<include refid="selectDmsDispatchMemberVo"/>
where member_id = #{memberId}
</select>
<insert id="insertDmsDispatchMember" parameterType="DmsDispatchMember">
<selectKey keyProperty="memberId" resultType="long" order="BEFORE">
select SEQ_DMS_DISPATCH_MEMBER.nextval as memberId from DUAL
</selectKey>
insert into dms_dispatch_member
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="memberId != null">member_id,</if>
<if test="planId != null">plan_id,</if>
<if test="userId != null">user_id,</if>
<if test="userName != null">user_name,</if>
<if test="memberRole != null">member_role,</if>
<if test="allocatedHours != null">allocated_hours,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="memberId != null">#{memberId},</if>
<if test="planId != null">#{planId},</if>
<if test="userId != null">#{userId},</if>
<if test="userName != null">#{userName},</if>
<if test="memberRole != null">#{memberRole},</if>
<if test="allocatedHours != null">#{allocatedHours},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
sysdate
</trim>
</insert>
<update id="updateDmsDispatchMember" parameterType="DmsDispatchMember">
update dms_dispatch_member
<trim prefix="SET" suffixOverrides=",">
<if test="planId != null">plan_id = #{planId},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="userName != null">user_name = #{userName},</if>
<if test="memberRole != null">member_role = #{memberRole},</if>
<if test="allocatedHours != null">allocated_hours = #{allocatedHours},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
update_time = sysdate
</trim>
where member_id = #{memberId}
</update>
<delete id="deleteDmsDispatchMemberByMemberId" parameterType="Long">
delete from dms_dispatch_member where member_id = #{memberId}
</delete>
<delete id="deleteDmsDispatchMemberByMemberIds" parameterType="String">
delete from dms_dispatch_member where member_id in
<foreach item="memberId" collection="array" open="(" separator="," close=")">
#{memberId}
</foreach>
</delete>
<delete id="deleteDmsDispatchMemberByPlanId" parameterType="Long">
delete from dms_dispatch_member where plan_id = #{planId}
</delete>
</mapper>

@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aucma.dms.mapper.DmsDispatchPlanMapper">
<resultMap type="DmsDispatchPlan" id="DmsDispatchPlanResult">
<result property="planId" column="plan_id" />
<result property="planCode" column="plan_code" />
<result property="workOrderId" column="work_order_id" />
<result property="workOrderCode" column="work_order_code" />
<result property="deviceId" column="device_id" />
<result property="deviceCode" column="device_code" />
<result property="deviceName" column="device_name" />
<result property="dispatchType" column="dispatch_type" />
<result property="executorId" column="executor_id" />
<result property="executorName" column="executor_name" />
<result property="teamId" column="team_id" />
<result property="teamName" column="team_name" />
<result property="dispatchTime" column="dispatch_time" />
<result property="requireStartTime" column="require_start_time" />
<result property="requireEndTime" column="require_end_time" />
<result property="receiveStatus" column="receive_status" />
<result property="receiveTime" column="receive_time" />
<result property="rejectReason" column="reject_reason" />
<result property="executionStatus" column="execution_status" />
<result property="priority" column="priority" />
<result property="dispatcherId" column="dispatcher_id" />
<result property="dispatcherName" column="dispatcher_name" />
<result property="dispatchNotes" column="dispatch_notes" />
<result property="isFlag" column="is_flag" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDmsDispatchPlanVo">
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
</sql>
<select id="selectDmsDispatchPlanList" parameterType="DmsDispatchPlan" resultMap="DmsDispatchPlanResult">
<include refid="selectDmsDispatchPlanVo"/>
<where>
<if test="planCode != null and planCode != ''">
and plan_code like '%' || #{planCode} || '%'
</if>
<if test="workOrderId != null">
and work_order_id = #{workOrderId}
</if>
<if test="workOrderCode != null and workOrderCode != ''">
and work_order_code like '%' || #{workOrderCode} || '%'
</if>
<if test="deviceName != null and deviceName != ''">
and device_name like '%' || #{deviceName} || '%'
</if>
<if test="dispatchType != null and dispatchType != ''">
and dispatch_type = #{dispatchType}
</if>
<if test="executorId != null">
and executor_id = #{executorId}
</if>
<if test="receiveStatus != null and receiveStatus != ''">
and receive_status = #{receiveStatus}
</if>
<if test="executionStatus != null and executionStatus != ''">
and execution_status = #{executionStatus}
</if>
and is_flag = '1'
</where>
order by create_time desc
</select>
<select id="selectDmsDispatchPlanByPlanId" parameterType="Long" resultMap="DmsDispatchPlanResult">
<include refid="selectDmsDispatchPlanVo"/>
where plan_id = #{planId}
</select>
<insert id="insertDmsDispatchPlan" parameterType="DmsDispatchPlan">
<selectKey keyProperty="planId" resultType="long" order="BEFORE">
select SEQ_DMS_DISPATCH_PLAN.nextval as planId from DUAL
</selectKey>
insert into dms_dispatch_plan
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="planId != null">plan_id,</if>
<if test="planCode != null and planCode != ''">plan_code,</if>
<if test="workOrderId != null">work_order_id,</if>
<if test="workOrderCode != null">work_order_code,</if>
<if test="deviceId != null">device_id,</if>
<if test="deviceCode != null">device_code,</if>
<if test="deviceName != null">device_name,</if>
<if test="dispatchType != null">dispatch_type,</if>
<if test="executorId != null">executor_id,</if>
<if test="executorName != null">executor_name,</if>
<if test="teamId != null">team_id,</if>
<if test="teamName != null">team_name,</if>
<if test="dispatchTime != null">dispatch_time,</if>
<if test="requireStartTime != null">require_start_time,</if>
<if test="requireEndTime != null">require_end_time,</if>
<if test="receiveStatus != null">receive_status,</if>
<if test="receiveTime != null">receive_time,</if>
<if test="rejectReason != null">reject_reason,</if>
<if test="executionStatus != null">execution_status,</if>
<if test="priority != null">priority,</if>
<if test="dispatcherId != null">dispatcher_id,</if>
<if test="dispatcherName != null">dispatcher_name,</if>
<if test="dispatchNotes != null">dispatch_notes,</if>
<if test="isFlag != null">is_flag,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="planId != null">#{planId},</if>
<if test="planCode != null and planCode != ''">#{planCode},</if>
<if test="workOrderId != null">#{workOrderId},</if>
<if test="workOrderCode != null">#{workOrderCode},</if>
<if test="deviceId != null">#{deviceId},</if>
<if test="deviceCode != null">#{deviceCode},</if>
<if test="deviceName != null">#{deviceName},</if>
<if test="dispatchType != null">#{dispatchType},</if>
<if test="executorId != null">#{executorId},</if>
<if test="executorName != null">#{executorName},</if>
<if test="teamId != null">#{teamId},</if>
<if test="teamName != null">#{teamName},</if>
<if test="dispatchTime != null">#{dispatchTime},</if>
<if test="requireStartTime != null">#{requireStartTime},</if>
<if test="requireEndTime != null">#{requireEndTime},</if>
<if test="receiveStatus != null">#{receiveStatus},</if>
<if test="receiveTime != null">#{receiveTime},</if>
<if test="rejectReason != null">#{rejectReason},</if>
<if test="executionStatus != null">#{executionStatus},</if>
<if test="priority != null">#{priority},</if>
<if test="dispatcherId != null">#{dispatcherId},</if>
<if test="dispatcherName != null">#{dispatcherName},</if>
<if test="dispatchNotes != null">#{dispatchNotes},</if>
<if test="isFlag != null">#{isFlag},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
sysdate
</trim>
</insert>
<update id="updateDmsDispatchPlan" parameterType="DmsDispatchPlan">
update dms_dispatch_plan
<trim prefix="SET" suffixOverrides=",">
<if test="planCode != null and planCode != ''">plan_code = #{planCode},</if>
<if test="workOrderId != null">work_order_id = #{workOrderId},</if>
<if test="workOrderCode != null">work_order_code = #{workOrderCode},</if>
<if test="deviceId != null">device_id = #{deviceId},</if>
<if test="deviceCode != null">device_code = #{deviceCode},</if>
<if test="deviceName != null">device_name = #{deviceName},</if>
<if test="dispatchType != null">dispatch_type = #{dispatchType},</if>
<if test="executorId != null">executor_id = #{executorId},</if>
<if test="executorName != null">executor_name = #{executorName},</if>
<if test="teamId != null">team_id = #{teamId},</if>
<if test="teamName != null">team_name = #{teamName},</if>
<if test="dispatchTime != null">dispatch_time = #{dispatchTime},</if>
<if test="requireStartTime != null">require_start_time = #{requireStartTime},</if>
<if test="requireEndTime != null">require_end_time = #{requireEndTime},</if>
<if test="receiveStatus != null">receive_status = #{receiveStatus},</if>
<if test="receiveTime != null">receive_time = #{receiveTime},</if>
<if test="rejectReason != null">reject_reason = #{rejectReason},</if>
<if test="executionStatus != null">execution_status = #{executionStatus},</if>
<if test="priority != null">priority = #{priority},</if>
<if test="dispatcherId != null">dispatcher_id = #{dispatcherId},</if>
<if test="dispatcherName != null">dispatcher_name = #{dispatcherName},</if>
<if test="dispatchNotes != null">dispatch_notes = #{dispatchNotes},</if>
<if test="isFlag != null">is_flag = #{isFlag},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
update_time = sysdate
</trim>
where plan_id = #{planId}
</update>
<delete id="deleteDmsDispatchPlanByPlanId" parameterType="Long">
update dms_dispatch_plan set is_flag = '0' where plan_id = #{planId}
</delete>
<delete id="deleteDmsDispatchPlanByPlanIds" parameterType="String">
update dms_dispatch_plan set is_flag = '0' where plan_id in
<foreach item="planId" collection="array" open="(" separator="," close=")">
#{planId}
</foreach>
</delete>
</mapper>

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aucma.dms.mapper.DmsRepairMaterialMapper">
<resultMap type="DmsRepairMaterial" id="DmsRepairMaterialResult">
<result property="materialId" column="material_id" />
<result property="workOrderId" column="work_order_id" />
<result property="materialCode" column="material_code" />
<result property="materialName" column="material_name" />
<result property="materialSpec" column="material_spec" />
<result property="materialType" column="material_type" />
<result property="unit" column="unit" />
<result property="planQuantity" column="plan_quantity" />
<result property="actualQuantity" column="actual_quantity" />
<result property="unitPrice" column="unit_price" />
<result property="totalAmount" column="total_amount" />
<result property="receiveStatus" column="receive_status" />
<result property="receiver" column="receiver" />
<result property="receiveTime" column="receive_time" />
<result property="warehouseId" column="warehouse_id" />
<result property="warehouseName" column="warehouse_name" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDmsRepairMaterialVo">
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
</sql>
<select id="selectDmsRepairMaterialList" parameterType="DmsRepairMaterial" resultMap="DmsRepairMaterialResult">
<include refid="selectDmsRepairMaterialVo"/>
<where>
<if test="workOrderId != null">
and work_order_id = #{workOrderId}
</if>
<if test="materialCode != null and materialCode != ''">
and material_code like '%' || #{materialCode} || '%'
</if>
<if test="materialName != null and materialName != ''">
and material_name like '%' || #{materialName} || '%'
</if>
<if test="materialType != null and materialType != ''">
and material_type = #{materialType}
</if>
<if test="receiveStatus != null and receiveStatus != ''">
and receive_status = #{receiveStatus}
</if>
</where>
order by material_id
</select>
<select id="selectDmsRepairMaterialByMaterialId" parameterType="Long" resultMap="DmsRepairMaterialResult">
<include refid="selectDmsRepairMaterialVo"/>
where material_id = #{materialId}
</select>
<insert id="insertDmsRepairMaterial" parameterType="DmsRepairMaterial">
<selectKey keyProperty="materialId" resultType="long" order="BEFORE">
select SEQ_DMS_REPAIR_MATERIAL.nextval as materialId from DUAL
</selectKey>
insert into dms_repair_material
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="materialId != null">material_id,</if>
<if test="workOrderId != null">work_order_id,</if>
<if test="materialCode != null">material_code,</if>
<if test="materialName != null">material_name,</if>
<if test="materialSpec != null">material_spec,</if>
<if test="materialType != null">material_type,</if>
<if test="unit != null">unit,</if>
<if test="planQuantity != null">plan_quantity,</if>
<if test="actualQuantity != null">actual_quantity,</if>
<if test="unitPrice != null">unit_price,</if>
<if test="totalAmount != null">total_amount,</if>
<if test="receiveStatus != null">receive_status,</if>
<if test="receiver != null">receiver,</if>
<if test="receiveTime != null">receive_time,</if>
<if test="warehouseId != null">warehouse_id,</if>
<if test="warehouseName != null">warehouse_name,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="materialId != null">#{materialId},</if>
<if test="workOrderId != null">#{workOrderId},</if>
<if test="materialCode != null">#{materialCode},</if>
<if test="materialName != null">#{materialName},</if>
<if test="materialSpec != null">#{materialSpec},</if>
<if test="materialType != null">#{materialType},</if>
<if test="unit != null">#{unit},</if>
<if test="planQuantity != null">#{planQuantity},</if>
<if test="actualQuantity != null">#{actualQuantity},</if>
<if test="unitPrice != null">#{unitPrice},</if>
<if test="totalAmount != null">#{totalAmount},</if>
<if test="receiveStatus != null">#{receiveStatus},</if>
<if test="receiver != null">#{receiver},</if>
<if test="receiveTime != null">#{receiveTime},</if>
<if test="warehouseId != null">#{warehouseId},</if>
<if test="warehouseName != null">#{warehouseName},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
sysdate
</trim>
</insert>
<update id="updateDmsRepairMaterial" parameterType="DmsRepairMaterial">
update dms_repair_material
<trim prefix="SET" suffixOverrides=",">
<if test="workOrderId != null">work_order_id = #{workOrderId},</if>
<if test="materialCode != null">material_code = #{materialCode},</if>
<if test="materialName != null">material_name = #{materialName},</if>
<if test="materialSpec != null">material_spec = #{materialSpec},</if>
<if test="materialType != null">material_type = #{materialType},</if>
<if test="unit != null">unit = #{unit},</if>
<if test="planQuantity != null">plan_quantity = #{planQuantity},</if>
<if test="actualQuantity != null">actual_quantity = #{actualQuantity},</if>
<if test="unitPrice != null">unit_price = #{unitPrice},</if>
<if test="totalAmount != null">total_amount = #{totalAmount},</if>
<if test="receiveStatus != null">receive_status = #{receiveStatus},</if>
<if test="receiver != null">receiver = #{receiver},</if>
<if test="receiveTime != null">receive_time = #{receiveTime},</if>
<if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
<if test="warehouseName != null">warehouse_name = #{warehouseName},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
update_time = sysdate
</trim>
where material_id = #{materialId}
</update>
<delete id="deleteDmsRepairMaterialByMaterialId" parameterType="Long">
delete from dms_repair_material where material_id = #{materialId}
</delete>
<delete id="deleteDmsRepairMaterialByMaterialIds" parameterType="String">
delete from dms_repair_material where material_id in
<foreach item="materialId" collection="array" open="(" separator="," close=")">
#{materialId}
</foreach>
</delete>
<delete id="deleteDmsRepairMaterialByWorkOrderId" parameterType="Long">
delete from dms_repair_material where work_order_id = #{workOrderId}
</delete>
</mapper>

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aucma.dms.mapper.DmsRepairProjectMapper">
<resultMap type="DmsRepairProject" id="DmsRepairProjectResult">
<result property="projectId" column="project_id" />
<result property="workOrderId" column="work_order_id" />
<result property="projectSeq" column="project_seq" />
<result property="projectName" column="project_name" />
<result property="projectType" column="project_type" />
<result property="projectContent" column="project_content" />
<result property="technicalRequirement" column="technical_requirement" />
<result property="planHours" column="plan_hours" />
<result property="actualHours" column="actual_hours" />
<result property="executionStatus" column="execution_status" />
<result property="executor" column="executor" />
<result property="qualityLevel" column="quality_level" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDmsRepairProjectVo">
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
</sql>
<select id="selectDmsRepairProjectList" parameterType="DmsRepairProject" resultMap="DmsRepairProjectResult">
<include refid="selectDmsRepairProjectVo"/>
<where>
<if test="workOrderId != null">
and work_order_id = #{workOrderId}
</if>
<if test="projectName != null and projectName != ''">
and project_name like '%' || #{projectName} || '%'
</if>
<if test="projectType != null and projectType != ''">
and project_type = #{projectType}
</if>
<if test="executionStatus != null and executionStatus != ''">
and execution_status = #{executionStatus}
</if>
</where>
order by project_seq
</select>
<select id="selectDmsRepairProjectByProjectId" parameterType="Long" resultMap="DmsRepairProjectResult">
<include refid="selectDmsRepairProjectVo"/>
where project_id = #{projectId}
</select>
<insert id="insertDmsRepairProject" parameterType="DmsRepairProject">
<selectKey keyProperty="projectId" resultType="long" order="BEFORE">
select SEQ_DMS_REPAIR_PROJECT.nextval as projectId from DUAL
</selectKey>
insert into dms_repair_project
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectId != null">project_id,</if>
<if test="workOrderId != null">work_order_id,</if>
<if test="projectSeq != null">project_seq,</if>
<if test="projectName != null">project_name,</if>
<if test="projectType != null">project_type,</if>
<if test="projectContent != null">project_content,</if>
<if test="technicalRequirement != null">technical_requirement,</if>
<if test="planHours != null">plan_hours,</if>
<if test="actualHours != null">actual_hours,</if>
<if test="executionStatus != null">execution_status,</if>
<if test="executor != null">executor,</if>
<if test="qualityLevel != null">quality_level,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
<if test="workOrderId != null">#{workOrderId},</if>
<if test="projectSeq != null">#{projectSeq},</if>
<if test="projectName != null">#{projectName},</if>
<if test="projectType != null">#{projectType},</if>
<if test="projectContent != null">#{projectContent},</if>
<if test="technicalRequirement != null">#{technicalRequirement},</if>
<if test="planHours != null">#{planHours},</if>
<if test="actualHours != null">#{actualHours},</if>
<if test="executionStatus != null">#{executionStatus},</if>
<if test="executor != null">#{executor},</if>
<if test="qualityLevel != null">#{qualityLevel},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
sysdate
</trim>
</insert>
<update id="updateDmsRepairProject" parameterType="DmsRepairProject">
update dms_repair_project
<trim prefix="SET" suffixOverrides=",">
<if test="workOrderId != null">work_order_id = #{workOrderId},</if>
<if test="projectSeq != null">project_seq = #{projectSeq},</if>
<if test="projectName != null">project_name = #{projectName},</if>
<if test="projectType != null">project_type = #{projectType},</if>
<if test="projectContent != null">project_content = #{projectContent},</if>
<if test="technicalRequirement != null">technical_requirement = #{technicalRequirement},</if>
<if test="planHours != null">plan_hours = #{planHours},</if>
<if test="actualHours != null">actual_hours = #{actualHours},</if>
<if test="executionStatus != null">execution_status = #{executionStatus},</if>
<if test="executor != null">executor = #{executor},</if>
<if test="qualityLevel != null">quality_level = #{qualityLevel},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
update_time = sysdate
</trim>
where project_id = #{projectId}
</update>
<delete id="deleteDmsRepairProjectByProjectId" parameterType="Long">
delete from dms_repair_project where project_id = #{projectId}
</delete>
<delete id="deleteDmsRepairProjectByProjectIds" parameterType="String">
delete from dms_repair_project where project_id in
<foreach item="projectId" collection="array" open="(" separator="," close=")">
#{projectId}
</foreach>
</delete>
<delete id="deleteDmsRepairProjectByWorkOrderId" parameterType="Long">
delete from dms_repair_project where work_order_id = #{workOrderId}
</delete>
</mapper>

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aucma.dms.mapper.DmsRepairRecordMapper">
<resultMap type="DmsRepairRecord" id="DmsRepairRecordResult">
<result property="recordId" column="record_id" />
<result property="workOrderId" column="work_order_id" />
<result property="workOrderCode" column="work_order_code" />
<result property="deviceId" column="device_id" />
<result property="deviceCode" column="device_code" />
<result property="deviceName" column="device_name" />
<result property="faultPhenomenon" column="fault_phenomenon" />
<result property="faultCause" column="fault_cause" />
<result property="repairMethod" column="repair_method" />
<result property="repairProcess" column="repair_process" />
<result property="replacedParts" column="replaced_parts" />
<result property="repairResult" column="repair_result" />
<result property="repairerId" column="repairer_id" />
<result property="repairerName" column="repairer_name" />
<result property="startTime" column="start_time" />
<result property="endTime" column="end_time" />
<result property="repairHours" column="repair_hours" />
<result property="repairCost" column="repair_cost" />
<result property="shutdownDuration" column="shutdown_duration" />
<result property="acceptor" column="acceptor" />
<result property="acceptTime" column="accept_time" />
<result property="acceptResult" column="accept_result" />
<result property="acceptOpinion" column="accept_opinion" />
<result property="followupSuggestion" column="followup_suggestion" />
<result property="isArchived" column="is_archived" />
<result property="isFlag" column="is_flag" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDmsRepairRecordVo">
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
</sql>
<select id="selectDmsRepairRecordList" parameterType="DmsRepairRecord" resultMap="DmsRepairRecordResult">
<include refid="selectDmsRepairRecordVo"/>
<where>
<if test="workOrderId != null">
and work_order_id = #{workOrderId}
</if>
<if test="workOrderCode != null and workOrderCode != ''">
and work_order_code like '%' || #{workOrderCode} || '%'
</if>
<if test="deviceId != null">
and device_id = #{deviceId}
</if>
<if test="deviceName != null and deviceName != ''">
and device_name like '%' || #{deviceName} || '%'
</if>
<if test="repairerId != null">
and repairer_id = #{repairerId}
</if>
<if test="repairerName != null and repairerName != ''">
and repairer_name like '%' || #{repairerName} || '%'
</if>
<if test="repairResult != null and repairResult != ''">
and repair_result = #{repairResult}
</if>
<if test="acceptResult != null and acceptResult != ''">
and accept_result = #{acceptResult}
</if>
<if test="isArchived != null and isArchived != ''">
and is_archived = #{isArchived}
</if>
<if test="params != null and params.beginTime != null and params.beginTime != ''">
and start_time &gt;= to_date(#{params.beginTime}, 'yyyy-mm-dd')
</if>
<if test="params != null and params.endTime != null and params.endTime != ''">
and start_time &lt;= to_date(#{params.endTime}, 'yyyy-mm-dd')
</if>
and is_flag = '1'
</where>
order by create_time desc
</select>
<select id="selectDmsRepairRecordByRecordId" parameterType="Long" resultMap="DmsRepairRecordResult">
<include refid="selectDmsRepairRecordVo"/>
where record_id = #{recordId}
</select>
<insert id="insertDmsRepairRecord" parameterType="DmsRepairRecord">
<selectKey keyProperty="recordId" resultType="long" order="BEFORE">
select SEQ_DMS_REPAIR_RECORD.nextval as recordId from DUAL
</selectKey>
insert into dms_repair_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordId != null">record_id,</if>
<if test="workOrderId != null">work_order_id,</if>
<if test="workOrderCode != null">work_order_code,</if>
<if test="deviceId != null">device_id,</if>
<if test="deviceCode != null">device_code,</if>
<if test="deviceName != null">device_name,</if>
<if test="faultPhenomenon != null">fault_phenomenon,</if>
<if test="faultCause != null">fault_cause,</if>
<if test="repairMethod != null">repair_method,</if>
<if test="repairProcess != null">repair_process,</if>
<if test="replacedParts != null">replaced_parts,</if>
<if test="repairResult != null">repair_result,</if>
<if test="repairerId != null">repairer_id,</if>
<if test="repairerName != null">repairer_name,</if>
<if test="startTime != null">start_time,</if>
<if test="endTime != null">end_time,</if>
<if test="repairHours != null">repair_hours,</if>
<if test="repairCost != null">repair_cost,</if>
<if test="shutdownDuration != null">shutdown_duration,</if>
<if test="acceptor != null">acceptor,</if>
<if test="acceptTime != null">accept_time,</if>
<if test="acceptResult != null">accept_result,</if>
<if test="acceptOpinion != null">accept_opinion,</if>
<if test="followupSuggestion != null">followup_suggestion,</if>
<if test="isArchived != null">is_archived,</if>
<if test="isFlag != null">is_flag,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordId != null">#{recordId},</if>
<if test="workOrderId != null">#{workOrderId},</if>
<if test="workOrderCode != null">#{workOrderCode},</if>
<if test="deviceId != null">#{deviceId},</if>
<if test="deviceCode != null">#{deviceCode},</if>
<if test="deviceName != null">#{deviceName},</if>
<if test="faultPhenomenon != null">#{faultPhenomenon},</if>
<if test="faultCause != null">#{faultCause},</if>
<if test="repairMethod != null">#{repairMethod},</if>
<if test="repairProcess != null">#{repairProcess},</if>
<if test="replacedParts != null">#{replacedParts},</if>
<if test="repairResult != null">#{repairResult},</if>
<if test="repairerId != null">#{repairerId},</if>
<if test="repairerName != null">#{repairerName},</if>
<if test="startTime != null">#{startTime},</if>
<if test="endTime != null">#{endTime},</if>
<if test="repairHours != null">#{repairHours},</if>
<if test="repairCost != null">#{repairCost},</if>
<if test="shutdownDuration != null">#{shutdownDuration},</if>
<if test="acceptor != null">#{acceptor},</if>
<if test="acceptTime != null">#{acceptTime},</if>
<if test="acceptResult != null">#{acceptResult},</if>
<if test="acceptOpinion != null">#{acceptOpinion},</if>
<if test="followupSuggestion != null">#{followupSuggestion},</if>
<if test="isArchived != null">#{isArchived},</if>
<if test="isFlag != null">#{isFlag},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
sysdate
</trim>
</insert>
<update id="updateDmsRepairRecord" parameterType="DmsRepairRecord">
update dms_repair_record
<trim prefix="SET" suffixOverrides=",">
<if test="workOrderId != null">work_order_id = #{workOrderId},</if>
<if test="workOrderCode != null">work_order_code = #{workOrderCode},</if>
<if test="deviceId != null">device_id = #{deviceId},</if>
<if test="deviceCode != null">device_code = #{deviceCode},</if>
<if test="deviceName != null">device_name = #{deviceName},</if>
<if test="faultPhenomenon != null">fault_phenomenon = #{faultPhenomenon},</if>
<if test="faultCause != null">fault_cause = #{faultCause},</if>
<if test="repairMethod != null">repair_method = #{repairMethod},</if>
<if test="repairProcess != null">repair_process = #{repairProcess},</if>
<if test="replacedParts != null">replaced_parts = #{replacedParts},</if>
<if test="repairResult != null">repair_result = #{repairResult},</if>
<if test="repairerId != null">repairer_id = #{repairerId},</if>
<if test="repairerName != null">repairer_name = #{repairerName},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="endTime != null">end_time = #{endTime},</if>
<if test="repairHours != null">repair_hours = #{repairHours},</if>
<if test="repairCost != null">repair_cost = #{repairCost},</if>
<if test="shutdownDuration != null">shutdown_duration = #{shutdownDuration},</if>
<if test="acceptor != null">acceptor = #{acceptor},</if>
<if test="acceptTime != null">accept_time = #{acceptTime},</if>
<if test="acceptResult != null">accept_result = #{acceptResult},</if>
<if test="acceptOpinion != null">accept_opinion = #{acceptOpinion},</if>
<if test="followupSuggestion != null">followup_suggestion = #{followupSuggestion},</if>
<if test="isArchived != null">is_archived = #{isArchived},</if>
<if test="isFlag != null">is_flag = #{isFlag},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
update_time = sysdate
</trim>
where record_id = #{recordId}
</update>
<delete id="deleteDmsRepairRecordByRecordId" parameterType="Long">
update dms_repair_record set is_flag = '0' where record_id = #{recordId}
</delete>
<delete id="deleteDmsRepairRecordByRecordIds" parameterType="String">
update dms_repair_record set is_flag = '0' where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</delete>
</mapper>

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aucma.dms.mapper.DmsRepairWorkOrderMapper">
<resultMap type="DmsRepairWorkOrder" id="DmsRepairWorkOrderResult">
<result property="workOrderId" column="work_order_id" />
<result property="workOrderCode" column="work_order_code" />
<result property="faultInstanceId" column="fault_instance_id" />
<result property="deviceId" column="device_id" />
<result property="deviceCode" column="device_code" />
<result property="deviceName" column="device_name" />
<result property="faultType" column="fault_type" />
<result property="faultDescription" column="fault_description" />
<result property="repairType" column="repair_type" />
<result property="orderStatus" column="order_status" />
<result property="priority" column="priority" />
<result property="planStartTime" column="plan_start_time" />
<result property="planEndTime" column="plan_end_time" />
<result property="actualStartTime" column="actual_start_time" />
<result property="actualEndTime" column="actual_end_time" />
<result property="executorId" column="executor_id" />
<result property="executorName" column="executor_name" />
<result property="repairHours" column="repair_hours" />
<result property="budgetCost" column="budget_cost" />
<result property="actualCost" column="actual_cost" />
<result property="repairResult" column="repair_result" />
<result property="repairNotes" column="repair_notes" />
<result property="approveStatus" column="approve_status" />
<result property="approver" column="approver" />
<result property="approveTime" column="approve_time" />
<result property="approveRemark" column="approve_remark" />
<result property="needShutdown" column="need_shutdown" />
<result property="shutdownDuration" column="shutdown_duration" />
<result property="isFlag" column="is_flag" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDmsRepairWorkOrderVo">
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
</sql>
<select id="selectDmsRepairWorkOrderList" parameterType="DmsRepairWorkOrder" resultMap="DmsRepairWorkOrderResult">
<include refid="selectDmsRepairWorkOrderVo"/>
<where>
<if test="workOrderCode != null and workOrderCode != ''">
and work_order_code like '%' || #{workOrderCode} || '%'
</if>
<if test="deviceId != null">
and device_id = #{deviceId}
</if>
<if test="deviceName != null and deviceName != ''">
and device_name like '%' || #{deviceName} || '%'
</if>
<if test="faultType != null and faultType != ''">
and fault_type = #{faultType}
</if>
<if test="repairType != null and repairType != ''">
and repair_type = #{repairType}
</if>
<if test="orderStatus != null and orderStatus != ''">
and order_status = #{orderStatus}
</if>
<if test="priority != null and priority != ''">
and priority = #{priority}
</if>
<if test="executorId != null">
and executor_id = #{executorId}
</if>
<if test="executorName != null and executorName != ''">
and executor_name like '%' || #{executorName} || '%'
</if>
<if test="approveStatus != null and approveStatus != ''">
and approve_status = #{approveStatus}
</if>
<if test="params != null and params.beginTime != null and params.beginTime != ''">
and plan_start_time &gt;= to_date(#{params.beginTime}, 'yyyy-mm-dd')
</if>
<if test="params != null and params.endTime != null and params.endTime != ''">
and plan_end_time &lt;= to_date(#{params.endTime}, 'yyyy-mm-dd')
</if>
and is_flag = '1'
</where>
order by create_time desc
</select>
<select id="selectDmsRepairWorkOrderByWorkOrderId" parameterType="Long" resultMap="DmsRepairWorkOrderResult">
<include refid="selectDmsRepairWorkOrderVo"/>
where work_order_id = #{workOrderId}
</select>
<select id="selectByFaultInstanceId" parameterType="Long" resultMap="DmsRepairWorkOrderResult">
<include refid="selectDmsRepairWorkOrderVo"/>
where fault_instance_id = #{faultInstanceId}
and is_flag = '1'
</select>
<insert id="insertDmsRepairWorkOrder" parameterType="DmsRepairWorkOrder">
<selectKey keyProperty="workOrderId" resultType="long" order="BEFORE">
select SEQ_DMS_REPAIR_WORK_ORDER.nextval as workOrderId from DUAL
</selectKey>
insert into dms_repair_work_order
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="workOrderId != null">work_order_id,</if>
<if test="workOrderCode != null and workOrderCode != ''">work_order_code,</if>
<if test="faultInstanceId != null">fault_instance_id,</if>
<if test="deviceId != null">device_id,</if>
<if test="deviceCode != null">device_code,</if>
<if test="deviceName != null">device_name,</if>
<if test="faultType != null">fault_type,</if>
<if test="faultDescription != null">fault_description,</if>
<if test="repairType != null">repair_type,</if>
<if test="orderStatus != null">order_status,</if>
<if test="priority != null">priority,</if>
<if test="planStartTime != null">plan_start_time,</if>
<if test="planEndTime != null">plan_end_time,</if>
<if test="actualStartTime != null">actual_start_time,</if>
<if test="actualEndTime != null">actual_end_time,</if>
<if test="executorId != null">executor_id,</if>
<if test="executorName != null">executor_name,</if>
<if test="repairHours != null">repair_hours,</if>
<if test="budgetCost != null">budget_cost,</if>
<if test="actualCost != null">actual_cost,</if>
<if test="repairResult != null">repair_result,</if>
<if test="repairNotes != null">repair_notes,</if>
<if test="approveStatus != null">approve_status,</if>
<if test="approver != null">approver,</if>
<if test="approveTime != null">approve_time,</if>
<if test="approveRemark != null">approve_remark,</if>
<if test="needShutdown != null">need_shutdown,</if>
<if test="shutdownDuration != null">shutdown_duration,</if>
<if test="isFlag != null">is_flag,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="workOrderId != null">#{workOrderId},</if>
<if test="workOrderCode != null and workOrderCode != ''">#{workOrderCode},</if>
<if test="faultInstanceId != null">#{faultInstanceId},</if>
<if test="deviceId != null">#{deviceId},</if>
<if test="deviceCode != null">#{deviceCode},</if>
<if test="deviceName != null">#{deviceName},</if>
<if test="faultType != null">#{faultType},</if>
<if test="faultDescription != null">#{faultDescription},</if>
<if test="repairType != null">#{repairType},</if>
<if test="orderStatus != null">#{orderStatus},</if>
<if test="priority != null">#{priority},</if>
<if test="planStartTime != null">#{planStartTime},</if>
<if test="planEndTime != null">#{planEndTime},</if>
<if test="actualStartTime != null">#{actualStartTime},</if>
<if test="actualEndTime != null">#{actualEndTime},</if>
<if test="executorId != null">#{executorId},</if>
<if test="executorName != null">#{executorName},</if>
<if test="repairHours != null">#{repairHours},</if>
<if test="budgetCost != null">#{budgetCost},</if>
<if test="actualCost != null">#{actualCost},</if>
<if test="repairResult != null">#{repairResult},</if>
<if test="repairNotes != null">#{repairNotes},</if>
<if test="approveStatus != null">#{approveStatus},</if>
<if test="approver != null">#{approver},</if>
<if test="approveTime != null">#{approveTime},</if>
<if test="approveRemark != null">#{approveRemark},</if>
<if test="needShutdown != null">#{needShutdown},</if>
<if test="shutdownDuration != null">#{shutdownDuration},</if>
<if test="isFlag != null">#{isFlag},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
sysdate
</trim>
</insert>
<update id="updateDmsRepairWorkOrder" parameterType="DmsRepairWorkOrder">
update dms_repair_work_order
<trim prefix="SET" suffixOverrides=",">
<if test="workOrderCode != null and workOrderCode != ''">work_order_code = #{workOrderCode},</if>
<if test="faultInstanceId != null">fault_instance_id = #{faultInstanceId},</if>
<if test="deviceId != null">device_id = #{deviceId},</if>
<if test="deviceCode != null">device_code = #{deviceCode},</if>
<if test="deviceName != null">device_name = #{deviceName},</if>
<if test="faultType != null">fault_type = #{faultType},</if>
<if test="faultDescription != null">fault_description = #{faultDescription},</if>
<if test="repairType != null">repair_type = #{repairType},</if>
<if test="orderStatus != null">order_status = #{orderStatus},</if>
<if test="priority != null">priority = #{priority},</if>
<if test="planStartTime != null">plan_start_time = #{planStartTime},</if>
<if test="planEndTime != null">plan_end_time = #{planEndTime},</if>
<if test="actualStartTime != null">actual_start_time = #{actualStartTime},</if>
<if test="actualEndTime != null">actual_end_time = #{actualEndTime},</if>
<if test="executorId != null">executor_id = #{executorId},</if>
<if test="executorName != null">executor_name = #{executorName},</if>
<if test="repairHours != null">repair_hours = #{repairHours},</if>
<if test="budgetCost != null">budget_cost = #{budgetCost},</if>
<if test="actualCost != null">actual_cost = #{actualCost},</if>
<if test="repairResult != null">repair_result = #{repairResult},</if>
<if test="repairNotes != null">repair_notes = #{repairNotes},</if>
<if test="approveStatus != null">approve_status = #{approveStatus},</if>
<if test="approver != null">approver = #{approver},</if>
<if test="approveTime != null">approve_time = #{approveTime},</if>
<if test="approveRemark != null">approve_remark = #{approveRemark},</if>
<if test="needShutdown != null">need_shutdown = #{needShutdown},</if>
<if test="shutdownDuration != null">shutdown_duration = #{shutdownDuration},</if>
<if test="isFlag != null">is_flag = #{isFlag},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
update_time = sysdate
</trim>
where work_order_id = #{workOrderId}
</update>
<delete id="deleteDmsRepairWorkOrderByWorkOrderId" parameterType="Long">
update dms_repair_work_order set is_flag = '0' where work_order_id = #{workOrderId}
</delete>
<delete id="deleteDmsRepairWorkOrderByWorkOrderIds" parameterType="String">
update dms_repair_work_order set is_flag = '0' where work_order_id in
<foreach item="workOrderId" collection="array" open="(" separator="," close=")">
#{workOrderId}
</foreach>
</delete>
</mapper>
Loading…
Cancel
Save