diff --git a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsMobileController.java b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsMobileController.java index 967eeca..01bd2ab 100644 --- a/aucma-dms/src/main/java/com/aucma/dms/controller/DmsMobileController.java +++ b/aucma-dms/src/main/java/com/aucma/dms/controller/DmsMobileController.java @@ -10,6 +10,8 @@ import com.aucma.dms.domain.vo.DmsBillsFaultInstanceScanVo; import com.aucma.dms.domain.vo.DmsBillsInspectInstanceScanVo; import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.service.IBaseDeviceLedgerService; +import com.aucma.base.domain.BaseDeviceParamVal; +import com.aucma.base.service.IBaseDeviceParamValService; import com.aucma.dms.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +19,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -67,6 +70,17 @@ public class DmsMobileController extends BaseController { @Autowired private IBaseDeviceLedgerService baseDeviceLedgerService; + @Autowired + private IBaseDeviceParamValService baseDeviceParamValService; + + // 停机原因服务 + @Autowired + private IDmsBaseShutReasonService dmsBaseShutReasonService; + + // 停机记录服务 + @Autowired + private IDmsRecordShutDownService dmsRecordShutDownService; + /** * 根据设备编号获取设备信息 * 【重构】使用aucma-base模块的BaseDeviceLedger,返回类型转换为DmsBaseDeviceLedger @@ -210,6 +224,101 @@ public class DmsMobileController extends BaseController { return dms; } + // ========== PDA 停机相关 ========== + + /** + * PDA-获取停机原因列表(仅启用 isFlag=1) + */ + @GetMapping("/shutReason/list") + public AjaxResult listShutReasonsForPda(DmsBaseShutReason reason) { + reason.setIsFlag("1"); + List list = dmsBaseShutReasonService.selectDmsBaseShutReasonList(reason); + return success(list); + } + + /** + * PDA-新增停机记录:根据停机原因自动匹配停机类型 + */ + @PostMapping("/shutDown/add") + @Transactional(rollbackFor = Exception.class) + public AjaxResult addShutDownForPda(@RequestBody DmsRecordShutDown shutDown) { + // 若传入了停机原因ID,则查询原因并回填类型 + if (shutDown.getShutReason() != null) { + DmsBaseShutReason query = new DmsBaseShutReason(); + query.setShutReason(shutDown.getShutReason()); + query.setIsFlag("1"); + List reasons = dmsBaseShutReasonService.selectDmsBaseShutReasonList(query); + if (!reasons.isEmpty()) { + shutDown.setShutType(reasons.get(0).getShutTypeId()); + // 若前端未传 deviceId,尝试从原因带出 + if (shutDown.getDeviceId() == null) { + shutDown.setDeviceId(reasons.get(0).getDeviceId()); + } + } + } + // 默认启用标识 + if (shutDown.getIsFlag() == null) { + shutDown.setIsFlag(1L); + } + int rows = dmsRecordShutDownService.insertDmsRecordShutDown(shutDown); + + // 对指定设备(OLD-01~OLD-05)同步写入三色灯状态参数,供设备状态统计使用 + String deviceCode = shutDown.getDeviceCode(); + if (deviceCode != null && deviceCode.startsWith("OLD-")) { + insertTriColorStatusParams(deviceCode, shutDown.getDeviceId()); + } + + return success(rows); + } + + /** + * 插入三色灯状态参数(运行/暂停/报警),以“暂停”为当前状态 + */ + private void insertTriColorStatusParams(String deviceCode, Long deviceId) { + // 仅处理 OLD-01~OLD-05 + if (!"OLD-01".equals(deviceCode) && !"OLD-02".equals(deviceCode) + && !"OLD-03".equals(deviceCode) && !"OLD-04".equals(deviceCode) + && !"OLD-05".equals(deviceCode)) { + return; + } + + // 补齐 deviceId(如果未传) + Long resolvedDeviceId = deviceId; + if (resolvedDeviceId == null) { + BaseDeviceLedger query = new BaseDeviceLedger(); + query.setDeviceCode(deviceCode); + query.setIsFlag(1L); + List list = baseDeviceLedgerService.selectBaseDeviceLedgerList(query); + if (!list.isEmpty()) { + resolvedDeviceId = list.get(0).getObjId(); + } + } + + Date now = new Date(); + // 运行、暂停、报警 三个参数,只有“暂停”置 TRUE,其余 FALSE + List records = new ArrayList<>(); + records.add(buildParamVal("295", deviceCode, resolvedDeviceId, "机台状态-三色灯机器运行", "False", now)); + records.add(buildParamVal("296", deviceCode, resolvedDeviceId, "机台状态-三色灯机器暂停", "True", now)); + records.add(buildParamVal("297", deviceCode, resolvedDeviceId, "机台状态-三色灯机器报警", "False", now)); + + for (BaseDeviceParamVal rec : records) { + baseDeviceParamValService.insertBaseDeviceParamVal(rec); + } + } + + private BaseDeviceParamVal buildParamVal(String paramCode, String deviceCode, Long deviceId, + String paramName, String paramValue, Date time) { + BaseDeviceParamVal v = new BaseDeviceParamVal(); + v.setParamCode(paramCode); + v.setDeviceCode(deviceCode); + v.setDeviceId(deviceId); + v.setParamName(paramName); + v.setParamValue(paramValue); + v.setCollectTime(time); + v.setRecordTime(time); + return v; + } + /** * PDA-报修 *

@@ -236,6 +345,8 @@ public class DmsMobileController extends BaseController { } }*/ dmsBillsFaultInstance.setFileUrls(fileUrls); + // PDA发起的报修默认视为已审批通过,避免进入待审批状态 + dmsBillsFaultInstance.setApproveStatus("2"); return success(dmsBillsFaultInstanceService.insertDmsBillsFaultInstance(dmsBillsFaultInstance)); } @@ -321,91 +432,87 @@ public class DmsMobileController extends BaseController { * - 触发断点1和断点2,确保数据完整性 */ @PostMapping("/startRepair") + @Transactional(rollbackFor = Exception.class) public AjaxResult startRepair(@RequestBody DmsFaultInstanceActivity dmsFaultInstanceActivity) { - try { - Long repairInstanceId = dmsFaultInstanceActivity.getRepairInstanceId(); - String repairer = dmsFaultInstanceActivity.getRepairer(); + Long repairInstanceId = dmsFaultInstanceActivity.getRepairInstanceId(); + String repairer = dmsFaultInstanceActivity.getRepairer(); - log.info("PDA开始维修,故障报修ID: {}, 维修人: {}", repairInstanceId, repairer); + log.info("PDA开始维修,故障报修ID: {}, 维修人: {}", repairInstanceId, repairer); - // ========== 步骤1:调用原有的开始维修逻辑 ========== - int result = dmsBillsFaultInstanceService.startRepair(dmsFaultInstanceActivity); - - // ========== 步骤2:查询故障报修详情 ========== - DmsBillsFaultInstance fault = dmsBillsFaultInstanceService - .selectDmsBillsFaultInstanceByRepairInstanceId(repairInstanceId); - if (fault == null) { - log.warn("故障报修[{}]不存在", repairInstanceId); - return success(result); - } - - // ========== 步骤3:检查是否已有维修工单 ========== - DmsRepairWorkOrder existingOrder = dmsRepairWorkOrderService.selectByFaultInstanceId(repairInstanceId); - - if (existingOrder == null) { - // ========== 步骤4:【断点1】自动创建维修工单 ========== - DmsRepairWorkOrder newOrder = new DmsRepairWorkOrder(); - newOrder.setFaultInstanceId(repairInstanceId); - newOrder.setDeviceId(fault.getDeviceId()); - newOrder.setFaultType(fault.getFaultType()); - newOrder.setFaultDescription(fault.getFaultDescription()); - newOrder.setRepairType(fault.getRepairType()); - newOrder.setOrderStatus("2"); // 直接设为维修中(PDA开始维修即进入维修状态) - newOrder.setPriority("3"); // 默认中优先级 - newOrder.setActualStartTime(new Date()); - // 设置执行人信息 - if (dmsFaultInstanceActivity.getHandleUserId() != null) { - newOrder.setExecutorId(dmsFaultInstanceActivity.getHandleUserId()); - } - if (repairer != null && !repairer.isEmpty()) { - newOrder.setExecutorName(repairer); - } - - dmsRepairWorkOrderService.insertDmsRepairWorkOrder(newOrder); - log.info("【断点1】PDA自动创建维修工单,工单ID: {}, 工单编号: {}", - newOrder.getWorkOrderId(), newOrder.getWorkOrderCode()); - - // ========== 步骤5:【断点2】自动创建派工计划并接收 ========== - DmsDispatchPlan plan = new DmsDispatchPlan(); - plan.setWorkOrderId(newOrder.getWorkOrderId()); - plan.setWorkOrderCode(newOrder.getWorkOrderCode()); - plan.setDeviceId(fault.getDeviceId()); - plan.setDispatchType("1"); // 单人派工 - plan.setReceiveStatus("1"); // 直接设为已接收(PDA开始维修即表示已接收) - plan.setExecutionStatus("1"); // 执行中 - if (dmsFaultInstanceActivity.getHandleUserId() != null) { - plan.setExecutorId(dmsFaultInstanceActivity.getHandleUserId()); - } - if (repairer != null && !repairer.isEmpty()) { - plan.setExecutorName(repairer); - } - plan.setDispatchNotes("由PDA端开始维修自动生成"); - - dmsDispatchPlanService.insertDmsDispatchPlan(plan); - log.info("【断点2】PDA自动创建派工计划并接收,计划ID: {}", plan.getPlanId()); - } else { - // 已有维修工单,更新状态为维修中 - if (!"2".equals(existingOrder.getOrderStatus()) && !"3".equals(existingOrder.getOrderStatus())) { - DmsRepairWorkOrder updateOrder = new DmsRepairWorkOrder(); - updateOrder.setWorkOrderId(existingOrder.getWorkOrderId()); - updateOrder.setOrderStatus("2"); // 维修中 - updateOrder.setActualStartTime(new Date()); - if (dmsFaultInstanceActivity.getHandleUserId() != null) { - updateOrder.setExecutorId(dmsFaultInstanceActivity.getHandleUserId()); - } - if (repairer != null && !repairer.isEmpty()) { - updateOrder.setExecutorName(repairer); - } - dmsRepairWorkOrderService.updateDmsRepairWorkOrder(updateOrder); - log.info("PDA更新已有维修工单[{}]状态为维修中", existingOrder.getWorkOrderCode()); - } - } + // ========== 步骤1:调用原有的开始维修逻辑 ========== + int result = dmsBillsFaultInstanceService.startRepair(dmsFaultInstanceActivity); + // ========== 步骤2:查询故障报修详情 ========== + DmsBillsFaultInstance fault = dmsBillsFaultInstanceService + .selectDmsBillsFaultInstanceByRepairInstanceId(repairInstanceId); + if (fault == null) { + log.warn("故障报修[{}]不存在", repairInstanceId); return success(result); - } catch (Exception e) { - log.error("PDA开始维修失败", e); - return error("开始维修失败:" + e.getMessage()); } + + // ========== 步骤3:检查是否已有维修工单 ========== + DmsRepairWorkOrder existingOrder = dmsRepairWorkOrderService.selectByFaultInstanceId(repairInstanceId); + + if (existingOrder == null) { + // ========== 步骤4:【断点1】自动创建维修工单 ========== + DmsRepairWorkOrder newOrder = new DmsRepairWorkOrder(); + newOrder.setFaultInstanceId(repairInstanceId); + newOrder.setDeviceId(fault.getDeviceId()); + newOrder.setFaultType(fault.getFaultType()); + newOrder.setFaultDescription(fault.getFaultDescription()); + newOrder.setRepairType(fault.getRepairType()); + newOrder.setOrderStatus("2"); // 直接设为维修中(PDA开始维修即进入维修状态) + newOrder.setPriority("3"); // 默认中优先级 + newOrder.setActualStartTime(new Date()); + // 设置执行人信息 + if (dmsFaultInstanceActivity.getHandleUserId() != null) { + newOrder.setExecutorId(dmsFaultInstanceActivity.getHandleUserId()); + } + if (repairer != null && !repairer.isEmpty()) { + newOrder.setExecutorName(repairer); + } + + dmsRepairWorkOrderService.insertDmsRepairWorkOrder(newOrder); + log.info("【断点1】PDA自动创建维修工单,工单ID: {}, 工单编号: {}", + newOrder.getWorkOrderId(), newOrder.getWorkOrderCode()); + + // ========== 步骤5:【断点2】自动创建派工计划并接收 ========== + DmsDispatchPlan plan = new DmsDispatchPlan(); + plan.setWorkOrderId(newOrder.getWorkOrderId()); + plan.setWorkOrderCode(newOrder.getWorkOrderCode()); + plan.setDeviceId(fault.getDeviceId()); + plan.setDispatchType("1"); // 单人派工 + plan.setReceiveStatus("1"); // 直接设为已接收(PDA开始维修即表示已接收) + plan.setExecutionStatus("1"); // 执行中 + if (dmsFaultInstanceActivity.getHandleUserId() != null) { + plan.setExecutorId(dmsFaultInstanceActivity.getHandleUserId()); + } + if (repairer != null && !repairer.isEmpty()) { + plan.setExecutorName(repairer); + } + plan.setDispatchNotes("由PDA端开始维修自动生成"); + + dmsDispatchPlanService.insertDmsDispatchPlan(plan); + log.info("【断点2】PDA自动创建派工计划并接收,计划ID: {}", plan.getPlanId()); + } else { + // 已有维修工单,更新状态为维修中 + if (!"2".equals(existingOrder.getOrderStatus()) && !"3".equals(existingOrder.getOrderStatus())) { + DmsRepairWorkOrder updateOrder = new DmsRepairWorkOrder(); + updateOrder.setWorkOrderId(existingOrder.getWorkOrderId()); + updateOrder.setOrderStatus("2"); // 维修中 + updateOrder.setActualStartTime(new Date()); + if (dmsFaultInstanceActivity.getHandleUserId() != null) { + updateOrder.setExecutorId(dmsFaultInstanceActivity.getHandleUserId()); + } + if (repairer != null && !repairer.isEmpty()) { + updateOrder.setExecutorName(repairer); + } + dmsRepairWorkOrderService.updateDmsRepairWorkOrder(updateOrder); + log.info("PDA更新已有维修工单[{}]状态为维修中", existingOrder.getWorkOrderCode()); + } + } + + return success(result); } /** @@ -417,91 +524,91 @@ public class DmsMobileController extends BaseController { * - 触发断点3,确保数据完整性 */ @PostMapping("/completeRepair") + @Transactional(rollbackFor = Exception.class) public AjaxResult completeRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity, @RequestParam(value = "files", required = false) List files) throws JsonProcessingException { - try { - Long repairInstanceId = dmsFaultInstanceActivity.getRepairInstanceId(); - String repairer = dmsFaultInstanceActivity.getRepairer(); + Long repairInstanceId = dmsFaultInstanceActivity.getRepairInstanceId(); + String repairer = dmsFaultInstanceActivity.getRepairer(); - log.info("PDA完成维修,故障报修ID: {}, 维修人: {}", repairInstanceId, repairer); + log.info("PDA完成维修,故障报修ID: {}, 维修人: {}", repairInstanceId, repairer); - // ========== 步骤1:原有逻辑 - 设置确认信息和解析配件 ========== - dmsFaultInstanceActivity.setRepairConfirm(2); - dmsFaultInstanceActivity.setConfirmTime(new Date()); - String parts1 = dmsFaultInstanceActivity.getParts1(); - if (parts1 != null && !parts1.isEmpty()) { - ObjectMapper objectMapper = new ObjectMapper(); - List parts2 = objectMapper.readValue(parts1, new TypeReference>() {}); - dmsFaultInstanceActivity.setParts(parts2); - } - List fileUrls = new ArrayList<>(); - dmsFaultInstanceActivity.setFileUrls(fileUrls); - - // ========== 步骤2:调用原有的完成维修逻辑 ========== - int result = dmsBillsFaultInstanceService.completeRepair(dmsFaultInstanceActivity); - - // ========== 步骤3:查询关联的维修工单 ========== - DmsRepairWorkOrder workOrder = dmsRepairWorkOrderService.selectByFaultInstanceId(repairInstanceId); - - if (workOrder != null) { - // ========== 步骤4:更新维修工单状态为已完成 ========== - DmsRepairWorkOrder updateOrder = new DmsRepairWorkOrder(); - updateOrder.setWorkOrderId(workOrder.getWorkOrderId()); - updateOrder.setOrderStatus("3"); // 已完成 - updateOrder.setActualEndTime(new Date()); - updateOrder.setRepairResult(dmsFaultInstanceActivity.getRepairContent()); - dmsRepairWorkOrderService.updateDmsRepairWorkOrder(updateOrder); - log.info("PDA更新维修工单[{}]状态为已完成", workOrder.getWorkOrderCode()); - - // ========== 步骤5:【断点3】自动创建维修记录 ========== - DmsRepairRecord record = new DmsRepairRecord(); - record.setWorkOrderId(workOrder.getWorkOrderId()); - record.setWorkOrderCode(workOrder.getWorkOrderCode()); - record.setDeviceId(workOrder.getDeviceId()); - record.setDeviceCode(workOrder.getDeviceCode()); - record.setDeviceName(workOrder.getDeviceName()); - record.setFaultPhenomenon(workOrder.getFaultDescription()); - // 维修人员信息 - if (dmsFaultInstanceActivity.getHandleUserId() != null) { - record.setRepairerId(dmsFaultInstanceActivity.getHandleUserId()); - } else if (workOrder.getExecutorId() != null) { - record.setRepairerId(workOrder.getExecutorId()); - } - if (repairer != null && !repairer.isEmpty()) { - record.setRepairerName(repairer); - } else if (workOrder.getExecutorName() != null) { - record.setRepairerName(workOrder.getExecutorName()); - } - // 维修时间 - record.setStartTime(workOrder.getActualStartTime()); - record.setEndTime(new Date()); - // 维修内容 - record.setRepairResult(dmsFaultInstanceActivity.getRepairContent()); - // 默认未存档 - record.setIsArchived("0"); - - dmsRepairRecordService.insertDmsRepairRecord(record); - log.info("【断点3】PDA自动创建维修记录,记录ID: {}", record.getRecordId()); - - // ========== 步骤6:更新派工计划状态为已完成 ========== - DmsDispatchPlan queryPlan = new DmsDispatchPlan(); - queryPlan.setWorkOrderId(workOrder.getWorkOrderId()); - List plans = dmsDispatchPlanService.selectDmsDispatchPlanList(queryPlan); - if (!CollectionUtils.isEmpty(plans)) { - DmsDispatchPlan updatePlan = new DmsDispatchPlan(); - updatePlan.setPlanId(plans.get(0).getPlanId()); - updatePlan.setExecutionStatus("2"); // 已完成 - dmsDispatchPlanService.updateDmsDispatchPlan(updatePlan); - log.info("PDA更新派工计划[{}]状态为已完成", plans.get(0).getPlanCode()); - } - } else { - log.warn("故障报修[{}]无关联维修工单,跳过维修记录创建", repairInstanceId); - } - - return success(result); - } catch (Exception e) { - log.error("PDA完成维修失败", e); - return error("完成维修失败:" + e.getMessage()); + // ========== 步骤1:原有逻辑 - 设置确认信息和解析配件 ========== + dmsFaultInstanceActivity.setRepairConfirm(2); + dmsFaultInstanceActivity.setConfirmTime(new Date()); + // 标记完成节点,确保维修内容/安全措施等信息持久化并可回显 + dmsFaultInstanceActivity.setProcessActivityId(1021L); + String parts1 = dmsFaultInstanceActivity.getParts1(); + if (parts1 != null && !parts1.isEmpty()) { + ObjectMapper objectMapper = new ObjectMapper(); + List parts2 = objectMapper.readValue(parts1, new TypeReference>() {}); + dmsFaultInstanceActivity.setParts(parts2); } + List fileUrls = new ArrayList<>(); + dmsFaultInstanceActivity.setFileUrls(fileUrls); + + // ========== 步骤2:调用原有的完成维修逻辑 ========== + int result = dmsBillsFaultInstanceService.completeRepair(dmsFaultInstanceActivity); + + // ========== 步骤3:查询关联的维修工单 ========== + DmsRepairWorkOrder workOrder = dmsRepairWorkOrderService.selectByFaultInstanceId(repairInstanceId); + + if (workOrder != null) { + // ========== 步骤4:更新维修工单状态为已完成 ========== + DmsRepairWorkOrder updateOrder = new DmsRepairWorkOrder(); + updateOrder.setWorkOrderId(workOrder.getWorkOrderId()); + updateOrder.setOrderStatus("3"); // 已完成 + updateOrder.setActualEndTime(new Date()); + updateOrder.setRepairResult("1"); // 维修结果:1-成功 + updateOrder.setRepairNotes(dmsFaultInstanceActivity.getRepairContent()); // 维修内容存到维修说明 + dmsRepairWorkOrderService.updateDmsRepairWorkOrder(updateOrder); + log.info("PDA更新维修工单[{}]状态为已完成", workOrder.getWorkOrderCode()); + + // ========== 步骤5:【断点3】自动创建维修记录 ========== + DmsRepairRecord record = new DmsRepairRecord(); + record.setWorkOrderId(workOrder.getWorkOrderId()); + record.setWorkOrderCode(workOrder.getWorkOrderCode()); + record.setDeviceId(workOrder.getDeviceId()); + record.setDeviceCode(workOrder.getDeviceCode()); + record.setDeviceName(workOrder.getDeviceName()); + record.setFaultPhenomenon(workOrder.getFaultDescription()); + // 维修人员信息 + if (dmsFaultInstanceActivity.getHandleUserId() != null) { + record.setRepairerId(dmsFaultInstanceActivity.getHandleUserId()); + } else if (workOrder.getExecutorId() != null) { + record.setRepairerId(workOrder.getExecutorId()); + } + if (repairer != null && !repairer.isEmpty()) { + record.setRepairerName(repairer); + } else if (workOrder.getExecutorName() != null) { + record.setRepairerName(workOrder.getExecutorName()); + } + // 维修时间 + record.setStartTime(workOrder.getActualStartTime()); + record.setEndTime(new Date()); + // 维修结果和维修方法 + record.setRepairResult("1"); // 维修结果:1-成功 + record.setRepairMethod(dmsFaultInstanceActivity.getRepairContent()); // 维修内容存到维修方法 + // 默认未存档 + record.setIsArchived("0"); + + dmsRepairRecordService.insertDmsRepairRecord(record); + log.info("【断点3】PDA自动创建维修记录,记录ID: {}", record.getRecordId()); + + // ========== 步骤6:更新派工计划状态为已完成 ========== + DmsDispatchPlan queryPlan = new DmsDispatchPlan(); + queryPlan.setWorkOrderId(workOrder.getWorkOrderId()); + List plans = dmsDispatchPlanService.selectDmsDispatchPlanList(queryPlan); + if (!CollectionUtils.isEmpty(plans)) { + DmsDispatchPlan updatePlan = new DmsDispatchPlan(); + updatePlan.setPlanId(plans.get(0).getPlanId()); + updatePlan.setExecutionStatus("2"); // 已完成 + dmsDispatchPlanService.updateDmsDispatchPlan(updatePlan); + log.info("PDA更新派工计划[{}]状态为已完成", plans.get(0).getPlanCode()); + } + } else { + log.warn("故障报修[{}]无关联维修工单,跳过维修记录创建", repairInstanceId); + } + + return success(result); } diff --git a/aucma-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml b/aucma-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml index 8c5b15d..3a78883 100644 --- a/aucma-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml +++ b/aucma-dms/src/main/resources/mapper/dms/DmsBillsFaultInstanceMapper.xml @@ -138,6 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" fault_level, fault_description, design_operations, + approveStatus, apply_time, real_begin_time, real_end_time, @@ -166,6 +167,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{faultLevel}, #{faultDescription}, #{designOperations}, + #{approveStatus}, #{applyTime}, #{realBeginTime}, #{realEndTime},