feat(dms): 新增PDA接口(需测试并修改)

master
zch 2 weeks ago
parent b8a4c710b8
commit 9ae73da196

@ -87,4 +87,11 @@ public class DmsConstants {
public static final String DMS_MAINT_PROJECT_STATUS_TO_MAINT="0";//0待保养
public static final String DMS_MAINT_PROJECT_STATUS_COMPLETE="1";//1保养完成
/** 工作流编码 */
public static final String DMS_BILLS_LUBE_INSTANCE_WF_CODE="Lube01";
public static final String DMS_BILLS_MAINT_INSTANCE_WF_CODE="Maint01";
public static final String DMS_BILLS_FAULT_INSTANCE_WF_CODE="Fault01";
public static final String DMS_BILLS_INSPECT_INSTANCE_WF_CODE="Inspect01";
}

@ -54,6 +54,19 @@ public class Seq {
public static final String dmsLubeInstanceCode = "LI";
// 设备报修工单编号记录标识
public static final String dmsBillsFaultInstanceSeqType = "DMSBILLSFAULTINSTANCE";
// 设备报修工单接口序列数
private static AtomicInteger dmsBillsFaultInstanceSeq = new AtomicInteger(1);
// 设备报修工单标识
public static final String dmsBillsFaultInstanceSeqCode = "BF";
//检修计划序列类型
public static final String planRepairSeqType = "PLANREPAIR";
//检修计划接口序列数

@ -1,326 +1,404 @@
//package org.dromara.dms.controller;
//
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.core.type.TypeReference;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import lombok.RequiredArgsConstructor;
//import org.dromara.common.core.constant.DmsConstants;
//import org.dromara.common.core.domain.R;
//import org.dromara.common.log.annotation.Log;
//import org.dromara.common.log.enums.BusinessType;
//import org.dromara.common.mybatis.core.page.TableDataInfo;
//import org.dromara.common.web.core.BaseController;
//import org.dromara.dms.domain.DmsBaseMachineInfo;
//import org.dromara.dms.domain.DmsBaseOutsourcingInfo;
//import org.dromara.dms.domain.DmsBillsLubeDetail;
//import org.dromara.dms.domain.DmsBillsLubeInstance;
//import org.dromara.dms.service.IDmsBillsLubeInstanceService;
//import org.springframework.util.CollectionUtils;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//@Validated
//@RequiredArgsConstructor
//@RestController
//@RequestMapping("/mobile")
//public class DmsMobileController extends BaseController {
//
//
// private final IDmsBillsFaultInstanceService dmsBillsFaultInstanceService;
//
//
// private final IDmsBillsInspectInstanceService dmsBillsInspectInstanceService;
//
//
// private final IDmsBaseDeviceLedgerService baseDeviceLedgerService;
//
//
// private final IDmsBaseOutsrcInfoService dmsBaseOutsrcInfoService;
//
//
// private final IDmsBillsMaintInstanceService dmsBillsMaintInstanceService;
//
//
// private final IDmsBillsLubeInstanceService dmsBillsLubeInstanceService;
//
// /**
// * 根据设备编号获取设备信息
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getDeviceByDeviceCode/{deviceCode}")
// public R getDeviceByDeviceCode(@PathVariable("deviceCode") String deviceCode) {
// DmsBaseMachineInfo dmsBaseDeviceLedger = baseDeviceLedgerService.selectDmsBaseDeviceLedgerByDeviceCode(deviceCode);
// return R.ok(dmsBaseDeviceLedger);
// }
//
// /**
// * 获取外协单位列表
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getOutsrcInfos")
// public R getOutsrcInfos() {
// DmsBaseOutsourcingInfo queryBaseOutsrcInfo = new DmsBaseOutsourcingInfo();
package org.dromara.dms.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.dms.domain.*;
import org.dromara.dms.domain.bo.*;
import org.dromara.dms.domain.vo.*;
import org.dromara.dms.service.*;
import org.dromara.resource.api.RemoteFileService;
import org.dromara.resource.api.domain.RemoteFile;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.dromara.common.core.exception.ServiceException;
import java.io.IOException;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/mobile")
@Slf4j
public class DmsMobileController extends BaseController {
private final IDmsBillsFaultInstanceService dmsBillsFaultInstanceService;
private final IDmsBillsInspectInstanceService dmsBillsInspectInstanceService;
private final IDmsBaseMachineInfoService baseDeviceLedgerService;
private final IDmsBaseOutsourcingInfoService dmsBaseOutsrcInfoService;
private final IDmsBillsMaintInstanceService dmsBillsMaintInstanceService;
private final IDmsBillsLubeInstanceService dmsBillsLubeInstanceService;
private final RemoteFileService remoteFileService;
/**
*
* @param files
* @return URL
*/
private List<String> handleFileUploads(List<MultipartFile> files) {
// 创建一个存储上传文件URL的列表
List<String> fileUrls = new ArrayList<>();
// 判断文件列表是否为空
if (files != null) {
// 遍历每个文件
for (MultipartFile file : files) {
// 获取原始文件名
String originalFilename = file.getOriginalFilename();
// 获取文件类型
String contentType = file.getContentType();
byte[] fileBytes;
try {
// 获取文件字节内容
fileBytes = file.getBytes();
} catch (IOException e) {
// 记录错误日志并抛出服务异常
log.error("获取文件字节失败: {}", originalFilename, e);
throw new ServiceException("文件获取失败,请重试。");
}
try {
// 调用远程文件服务的上传方法
RemoteFile sysFile = remoteFileService.upload(originalFilename, originalFilename, contentType, fileBytes);
// 判断上传结果是否成功
if (sysFile != null && sysFile.getUrl() != null) {
// 将文件URL添加到列表中
fileUrls.add(sysFile.getUrl());
} else {
// 记录警告日志
log.warn("文件上传成功但未返回URL或返回数据为空: {}", originalFilename);
}
} catch (ServiceException e) {
// 记录服务异常日志并抛出新的服务异常
log.error("文件上传服务异常: {}", originalFilename, e);
throw new ServiceException("文件上传服务异常:" + e.getMessage());
} catch (Exception e) {
// 记录未知错误日志并抛出新的服务异常
log.error("文件上传过程中发生未知错误: {}", originalFilename, e);
throw new ServiceException("文件上传过程中发生未知错误,请联系管理员。");
}
}
}
// 返回上传文件的URL列表
return fileUrls;
}
/**
*
*
* @return
*/
@GetMapping("/getDeviceByDeviceCode/{deviceCode}")
public R getDeviceByDeviceCode(@PathVariable("deviceCode") String deviceCode) {
DmsBaseMachineInfoBo dmsBaseMachineInfoBo = new DmsBaseMachineInfoBo();
dmsBaseMachineInfoBo.setMachineCode(deviceCode);
//TODO根据设备编号查一个设备
DmsBaseMachineInfoVo dmsBaseDeviceLedger = baseDeviceLedgerService.queryList(dmsBaseMachineInfoBo).get(0);
return R.ok(dmsBaseDeviceLedger);
}
/**
*
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/getOutsrcInfos")
public R getOutsrcInfos() {
DmsBaseOutsourcingInfoBo queryBaseOutsrcInfo = new DmsBaseOutsourcingInfoBo();
//沒有外协状态,用激活状态
// queryBaseOutsrcInfo.setOutsrcStatus(DmsConstants.DMS_BASE_OUTSRC_INFO_STATUS_NROMAL);
// List<DmsBaseOutsourcingInfo> baseOutsrcInfos = dmsBaseOutsrcInfoService.selectDmsBaseOutsrcInfoList(queryBaseOutsrcInfo);
// return R.ok(baseOutsrcInfos);
// }
// /**
// * 根据传参模糊查询设备名
// */
// @GetMapping("/likeDeviceName")
// public R likeDeviceName(String deviceName) {
// List<DmsBaseDeviceLedger> deviceLedgerList = baseDeviceLedgerService.likeDeviceName(deviceName);
// return R.ok(deviceLedgerList);
// }
//
//
// /**
// * PDA-报修
// * <p>
// * 需传入
// * 设备id deviceId
// * 故障类别 faultType
// * 故障描述 faultDescription
// * 涉及操作 designOperations
// * 维修类型 repairType
// * 外协id outsrcId(可不传入)
// * 图片 files
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "故障报修工单", businessType = BusinessType.INSERT)
// @PostMapping("/insertFaultInstsanceActivity")
// public R insertFaultInstsanceActivity(DmsBillsFaultInstance dmsBillsFaultInstance,
// List<MultipartFile> files) {
// List<String> fileUrls = new ArrayList<>();
// if(files!=null){
// for (MultipartFile file : files) {
// R<SysFile> sysFileR = remoteFileService.upload(file);
// SysFile sysFile = sysFileR.getData();
// fileUrls.add(sysFile.getUrl());
// }
// }
// dmsBillsFaultInstance.setFileUrls(fileUrls);
// return R.ok(dmsBillsFaultInstanceService.insertDmsBillsFaultInstance(dmsBillsFaultInstance));
// }
//
//
// /**
// * 获取故障报修工单列表
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getBillsFaultInstances")
// public TableDataInfo getBillsFaultInstances() {
//// startPage();
// DmsBillsFaultInstance queryBillsFaultInstance = new DmsBillsFaultInstance();
// List<DmsBillsFaultInstance> billsFaultInstances = dmsBillsFaultInstanceService.selectDmsBillsFaultInstanceJoinList(queryBillsFaultInstance);
// return getDataTable(billsFaultInstances);
// }
//
// /**
// * 获取故障报修工单详细信息,修改工单使用
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getBillsFaultInstanceByRepairInstanceId/{repairInstanceId}")
// public R getBillsFaultInstanceByRepairInstanceId(@PathVariable("repairInstanceId") Long repairInstanceId) {
// DmsBillsFaultInstance billsFaultInstance = dmsBillsFaultInstanceService.selectDmsBillsFaultInstanceByRepairInstanceId(repairInstanceId);
// return R.ok(billsFaultInstance);
// }
//
// /**
// * 修改工单提交
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "故障报修工单", businessType = BusinessType.UPDATE)
// @PostMapping("/updateFaultInstanceActivity")
// public R updateFaultInstanceActivity(DmsFaultInstanceActivity dmsFaultInstanceActivity,
// @RequestParam(value = "files") List<MultipartFile> files) {
// List<String> fileUrls = new ArrayList<>();
// if (!CollectionUtils.isEmpty(files)){
// for (MultipartFile file : files) {
// R<SysFile> sysFileR = remoteFileService.upload(file);
// SysFile sysFile = sysFileR.getData();
// fileUrls.add(sysFile.getUrl());
// }
// dmsFaultInstanceActivity.setFileUrls(fileUrls);
// }
// return R.ok(dmsBillsFaultInstanceService.updateDmsFaultInstanceActivity(dmsFaultInstanceActivity));
// }
//
// /**
// * 获取故障报修工单详细信息,维修使用
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getBillsFaultInstance4Repair/{repairInstanceId}")
// public R getBillsFaultInstance4Repair(@PathVariable("repairInstanceId") Long repairInstanceId) {
// DmsBillsFaultInstance billsFaultInstance = dmsBillsFaultInstanceService.getDmsBillsFaultInstance4Repair(repairInstanceId);
// return R.ok(billsFaultInstance);
// }
//
//
// /**
// * 故障报修扫描设备验证
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/scanDevice4Repair")
// public R scanDevice4Repair(@Validated DmsBillsFaultInstanceScanVo dmsBillsFaultInstanceScanVo) {
// dmsBillsFaultInstanceService.scanDevice4Repair(dmsBillsFaultInstanceScanVo);
// return R.ok();
// }
//
//
// /**
// * 开始维修
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "故障报修工单", businessType = BusinessType.START)
// @PostMapping("/startRepair")
// public R startRepair(@RequestBody DmsFaultInstanceActivity dmsFaultInstanceActivity) {
// return R.ok(dmsBillsFaultInstanceService.startRepair(dmsFaultInstanceActivity));
// }
//
// /**
// * 完成维修
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "故障报修工单", businessType = BusinessType.COMPLETE)
// @PostMapping("/completeRepair")
// public R completeRepair(DmsFaultInstanceActivity dmsFaultInstanceActivity,@RequestParam(value = "files") List<MultipartFile> files) throws JsonProcessingException {
// dmsFaultInstanceActivity.setRepairConfirm(2);
// dmsFaultInstanceActivity.setConfirmTime(new Date());
// String parts1 = dmsFaultInstanceActivity.getParts1();
// ObjectMapper objectMapper = new ObjectMapper();
// List<DmsFaultCompentsParts> parts2 = objectMapper.readValue(parts1, new TypeReference<List<DmsFaultCompentsParts>>() {});
// dmsFaultInstanceActivity.setParts(parts2);
// List < String > fileUrls = new ArrayList<>();
// for (MultipartFile file : files) {
// R<SysFile> sysFileR = remoteFileService.upload(file);
// SysFile sysFile = sysFileR.getData();
// fileUrls.add(sysFile.getUrl());
// }
// dmsFaultInstanceActivity.setFileUrls(fileUrls);
// return R.ok(dmsBillsFaultInstanceService.completeRepair(dmsFaultInstanceActivity));
// }
//
//
// /**
// * 获取最新一条待巡检或巡检中的巡检或点检工单(检查类型inspectType(1巡检,2点检))
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getNewestInspectInstance")
// public R getNewestInspectInstance(DmsBillsInspectInstance dmsBillsInspectInstance) {
// DmsBillsInspectInstance newestInspectInstance = dmsBillsInspectInstanceService.getNewestBillsInspectInstance(dmsBillsInspectInstance);
// return R.ok(newestInspectInstance);
// }
//
//
// /**
// * 扫描设备编号或者输入设备编号进行巡检验证
// * */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/scanInspectInstanceDetail")
// public R scanInspectInstanceDetail(@Validated DmsBillsInspectInstanceScanVo dmsBillsInspectInstanceScanVo) {
// return R.ok(dmsBillsInspectInstanceService.scanInspectInstanceDetail(dmsBillsInspectInstanceScanVo));
// }
//
// /**
// * 点巡检工单
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
queryBaseOutsrcInfo.setActiveFlag("1");
List<DmsBaseOutsourcingInfoVo> baseOutsrcInfos = dmsBaseOutsrcInfoService.queryList(queryBaseOutsrcInfo);
return R.ok(baseOutsrcInfos);
}
/**
*
*/
@GetMapping("/likeDeviceName")
public R likeDeviceName(String deviceName) {
List<DmsBaseMachineInfoVo> deviceLedgerList = baseDeviceLedgerService.likeDeviceName(deviceName);
return R.ok(deviceLedgerList);
}
/**
* PDA-
* <p>
*
* id deviceId
* faultType
* faultDescription
* designOperations
* repairType
* id outsrcId()
* files
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "故障报修工单", businessType = BusinessType.INSERT)
@PostMapping("/insertFaultInstsanceActivity")
public R insertFaultInstsanceActivity(DmsBillsFaultInstanceBo dmsBillsFaultInstance,
List<MultipartFile> files) {
List<String> fileUrls = new ArrayList<>();
if(files!=null){
for (MultipartFile file : files) {
// 从 MultipartFile 中提取 RemoteFileService 所需的参数
String originalFilename = file.getOriginalFilename();
String contentType = file.getContentType();
byte[] fileBytes;
try {
fileBytes = file.getBytes();
} catch (IOException e) {
log.error("获取文件字节失败: {}", originalFilename, e);
return R.fail("文件获取失败,请重试。");
}
try {
// 调用 RemoteFileService 的 upload 方法,传入正确参数
// 'name' 参数在当前RemoteFileServiceImpl实现中并非强制决定最终文件名
// 这里传入originalFilename以保持一致性或作为备用标识
RemoteFile sysFile = remoteFileService.upload(originalFilename, originalFilename, contentType, fileBytes);
if (sysFile != null && sysFile.getUrl() != null) {
fileUrls.add(sysFile.getUrl());
} else {
log.warn("文件上传成功但未返回URL或返回数据为空: {}", originalFilename);
// 可以选择返回失败,或继续处理其他文件
}
} catch (ServiceException e) {
log.error("文件上传服务异常: {}", originalFilename, e);
return R.fail("文件上传服务异常:" + e.getMessage());
} catch (Exception e) { // 捕获其他未知异常
log.error("文件上传过程中发生未知错误: {}", originalFilename, e);
return R.fail("文件上传过程中发生未知错误,请联系管理员。");
}
}
}
//TODO:文件存储待测试
dmsBillsFaultInstance.setFileUrls(fileUrls);
return R.ok(dmsBillsFaultInstanceService.insertByBo(dmsBillsFaultInstance));
}
/**
*
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/getBillsFaultInstances")
public TableDataInfo getBillsFaultInstances() {
DmsBillsFaultInstanceBo queryBillsFaultInstance = new DmsBillsFaultInstanceBo();
List<DmsBillsFaultInstanceVo> billsFaultInstances = dmsBillsFaultInstanceService.queryList(queryBillsFaultInstance);
return TableDataInfo.build(billsFaultInstances);
}
/**
* ,使
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/getBillsFaultInstanceByRepairInstanceId/{repairInstanceId}")
public R getBillsFaultInstanceByRepairInstanceId(@PathVariable("repairInstanceId") Long repairInstanceId) {
//fixme图片地址完整路径IP
DmsBillsFaultInstanceVo billsFaultInstance = dmsBillsFaultInstanceService.selectDmsBillsFaultInstanceByRepairInstanceId(repairInstanceId);
return R.ok(billsFaultInstance);
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "故障报修工单", businessType = BusinessType.UPDATE)
@PostMapping("/updateFaultInstanceActivity")
public R updateFaultInstanceActivity(DmsFaultInstanceActivityBo dmsFaultInstanceActivity,
@RequestParam(value = "files") List<MultipartFile> files) {
List<String> fileUrls = handleFileUploads(files);
dmsFaultInstanceActivity.setFileUrls(fileUrls);
return R.ok(dmsBillsFaultInstanceService.updateDmsFaultInstanceActivity(dmsFaultInstanceActivity));
}
/**
* ,使
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/getBillsFaultInstance4Repair/{repairInstanceId}")
public R<DmsBillsFaultInstanceVo> getBillsFaultInstance4Repair(@PathVariable("repairInstanceId") Long repairInstanceId) {
DmsBillsFaultInstanceVo billsFaultInstance = dmsBillsFaultInstanceService.queryById(repairInstanceId);
return R.ok(billsFaultInstance);
}
/**
*
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/scanDevice4Repair")
public R<Long> scanDevice4Repair(@Validated DmsBillsFaultInstanceScanBo dmsBillsFaultInstanceScan) {
//FIXME:返回从void改为long
return R.ok(dmsBillsFaultInstanceService.scanDevice4Repair(dmsBillsFaultInstanceScan));
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "故障报修工单", businessType = BusinessType.START)
@PostMapping("/startRepair")
public R startRepair(@RequestBody DmsFaultInstanceActivityBo dmsFaultInstanceActivity) {
return R.ok(dmsBillsFaultInstanceService.startRepair(dmsFaultInstanceActivity));
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "故障报修工单", businessType = BusinessType.COMPLETE)
@PostMapping("/completeRepair")
public R completeRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity,
@RequestParam(value = "files") List<MultipartFile> files) throws JsonProcessingException {
dmsFaultInstanceActivity.setRepairConfirm("2");
dmsFaultInstanceActivity.setConfirmTime(new Date());
String parts1 = dmsFaultInstanceActivity.getParts1();
ObjectMapper objectMapper = new ObjectMapper();
List<DmsFaultComponentsParts> parts2 = objectMapper.readValue(parts1, new TypeReference<List<DmsFaultComponentsParts>>() {});
dmsFaultInstanceActivity.setParts(parts2);
List<String> fileUrls = handleFileUploads(files);
dmsFaultInstanceActivity.setFileUrls(fileUrls);
//FIXME:关于工作流相关的本页代码以及调用方法都需测试完善修改
return R.ok(dmsBillsFaultInstanceService.completeRepair(dmsFaultInstanceActivity));
}
/**
* (inspectType(1,2))
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/getNewestInspectInstance")
public R getNewestInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstance) {
DmsBillsInspectInstanceVo newestInspectInstance = dmsBillsInspectInstanceService.getNewestBillsInspectInstance(dmsBillsInspectInstance);
return R.ok(newestInspectInstance);
}
/**
*
* */
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/scanInspectInstanceDetail")
public R scanInspectInstanceDetail(@Validated DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan) {
return R.ok(dmsBillsInspectInstanceService.scanInspectInstanceDetail(dmsBillsInspectInstanceScan));
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "点巡检工单明细", businessType = BusinessType.INSERT)
// @PostMapping("/saveInspectInstanceDetail")
// public R saveInspectInstanceDetail(@RequestBody DmsInspectInstanceDetail dmsInspectInstanceDetail) {
// public R saveInspectInstanceDetail(@RequestBody DmsInspectInstanceDetailBo dmsInspectInstanceDetail) {
// return R.ok(dmsBillsInspectInstanceService.updateDmsInspectInstanceDetail(dmsInspectInstanceDetail));
//
// }
//
//
//
//
// /**
// * 获取最新一条待保养或保养中的保养工单
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getNewestMaintInstance")
// public R getNewestMaintInstance(DmsBillsMaintInstance dmsBillsMaintInstance) {
// DmsBillsMaintInstance newestMaintInstance = dmsBillsMaintInstanceService.getNewestBillsMaintInstance(dmsBillsMaintInstance);
// return R.ok(newestMaintInstance);
// }
//
//
// /**
// * 开始保养
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "保养工单", businessType = BusinessType.START)
// @PostMapping("/startMaint")
// public R startMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) {
// return R.ok(dmsBillsMaintInstanceService.startMaint(dmsBillsMaintDetail));
// }
//
// /**
// * 完成保养
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "保养工单", businessType = BusinessType.COMPLETE)
// @PostMapping("/completeMaint")
// public R completeMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) {
// return R.ok(dmsBillsMaintInstanceService.completeMaint(dmsBillsMaintDetail));
// }
//
//
// /**
// * 获取最新一条待润滑或润滑中的润滑工单
// *
// * @return
// */
// // @RequiresPermissions("qms:checkrule:list")
// @GetMapping("/getNewestLubeInstance")
// public R getNewestLubeInstance(DmsBillsLubeInstance dmsBillsLubeInstance) {
// DmsBillsLubeInstance newestLubeInstance = dmsBillsLubeInstanceService.getNewestBillsLubeInstance(dmsBillsLubeInstance);
// return R.ok(newestLubeInstance);
// }
//
// /**
// * 开始润滑
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "润滑工单", businessType = BusinessType.START)
// @PostMapping("/startLube")
// public R startLube(@RequestBody DmsBillsLubeDetail dmsBillsLubeDetail) {
//
// return R.ok(dmsBillsLubeInstanceService.startLube(dmsBillsLubeDetail));
// }
//
// /**
// * 完成润滑
// */
//// @RequiresPermissions("qms:checkresultdetail:add")
// @Log(title = "润滑工单", businessType = BusinessType.COMPLETE)
// @PostMapping("/completeLube")
// public R completeLube(@RequestBody DmsBillsLubeDetail dmsBillsLubeDetail) {
// return R.ok(dmsBillsLubeInstanceService.completeLube(dmsBillsLubeDetail));
// }
//
//
//}
/**
*
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/getNewestMaintInstance")
public R getNewestMaintInstance(DmsBillsMaintInstance dmsBillsMaintInstance) {
DmsBillsMaintInstance newestMaintInstance = dmsBillsMaintInstanceService.getNewestBillsMaintInstance(dmsBillsMaintInstance);
return R.ok(newestMaintInstance);
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "保养工单", businessType = BusinessType.START)
@PostMapping("/startMaint")
public R startMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) {
return R.ok(dmsBillsMaintInstanceService.startMaint(dmsBillsMaintDetail));
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "保养工单", businessType = BusinessType.COMPLETE)
@PostMapping("/completeMaint")
public R completeMaint(@RequestBody DmsBillsMaintDetail dmsBillsMaintDetail) {
return R.ok(dmsBillsMaintInstanceService.completeMaint(dmsBillsMaintDetail));
}
/**
*
*
* @return
*/
// @RequiresPermissions("qms:checkrule:list")
@GetMapping("/getNewestLubeInstance")
public R getNewestLubeInstance(DmsBillsLubeInstanceBo dmsBillsLubeInstance) {
DmsBillsLubeInstanceVo newestLubeInstance = dmsBillsLubeInstanceService.getNewestBillsLubeInstance(dmsBillsLubeInstance);
return R.ok(newestLubeInstance);
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "润滑工单", businessType = BusinessType.START)
@PostMapping("/startLube")
public R startLube(@RequestBody DmsBillsLubeDetailBo dmsBillsLubeDetail) {
return R.ok(dmsBillsLubeInstanceService.startLube(dmsBillsLubeDetail));
}
/**
*
*/
// @RequiresPermissions("qms:checkresultdetail:add")
@Log(title = "润滑工单", businessType = BusinessType.COMPLETE)
@PostMapping("/completeLube")
public R completeLube(@RequestBody DmsBillsLubeDetailBo dmsBillsLubeDetail) {
return R.ok(dmsBillsLubeInstanceService.completeLube(dmsBillsLubeDetail));
}
}

@ -136,4 +136,6 @@ public class DmsBaseMachineInfo extends TenantEntity {
*/
@TableField(exist = false)
private String deviceModeName;
}

@ -1,6 +1,8 @@
package org.dromara.dms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -27,6 +29,7 @@ public class DmsBillsFaultInstance extends TenantEntity {
/**
* ;
*/
@TableId(value = "repair_instance_id")
private Long repairInstanceId;
/**
@ -92,6 +95,7 @@ public class DmsBillsFaultInstance extends TenantEntity {
/**
*
*/
@TableField("approveStatus") // 显式指定数据库列名approveStatus
private String approveStatus;
/**
@ -138,8 +142,13 @@ public class DmsBillsFaultInstance extends TenantEntity {
@TableField(exist = false)
private String repairType;//JOIN
/**
* dms_base_outsourcing_infooutsourcing_id;12212
*/
@TableField(exist = false)
private Long outsourcingId;//JOIN
@TableField(exist = false)
private String processHandleResolution;//JOIN
@TableField(exist = false)
@ -165,4 +174,28 @@ public class DmsBillsFaultInstance extends TenantEntity {
@TableField(exist = false)
private List<DmsFaultComponentsParts> parts;//JOIN
/**
*
*/
@TableField(exist = false)
private String filePath;//join
/**
*
*/
@TableField(exist = false)
private String partName;//JOIN
/**
*
*/
@TableField(exist = false)
private String partSpecifications;//JOIN
/**
*
*/
@TableField(exist = false)
private Long amount;//JOIN
}

@ -1,6 +1,7 @@
package org.dromara.dms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@ -92,5 +93,16 @@ public class DmsBillsInspectInstance extends TenantEntity {
*/
private String status;
/**
* 线
*/
@TableField(exist = false)
private String routeName;
/**
*
*/
@TableField(exist = false)
private String performer;
}

@ -46,5 +46,6 @@ public class DmsFaultComponentsParts extends TenantEntity {
*/
private Long amount;
private Long faultId;//表结构不存在
}

@ -83,4 +83,6 @@ public class DmsInspectInstanceDetailProject extends TenantEntity {
private String inspectProjectDesc;
private Long deviceId;//表结构不存在在其他地方叫machineId
}

@ -26,7 +26,7 @@ public class DmsMaintInstanceActivity extends BaseEntity {
/**
* ID
*/
@TableId(value = "instance_activity_id", type = IdType.AUTO)
@TableId(value = "instance_activity_id")
private Long instanceActivityId;
/**

@ -28,8 +28,8 @@ public class DmsPlanInspect extends TenantEntity {
/**
*
*/
// @TableId(value = "plan_inspect_id", type = IdType.AUTO)
@TableId(value = "plan_inspect_id")
@TableId(value = "plan_inspect_id", type = IdType.AUTO)
// @TableId(value = "plan_inspect_id")
private Long planInspectId;
/**

@ -9,6 +9,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
@ -113,5 +115,11 @@ public class DmsBillsFaultInstanceBo extends BaseEntity {
*/
private String remark;
private List<String> fileUrls;
/**
* dms_base_outsourcing_infooutsourcing_id;12212
*/
private Long outsourcingId;
}

@ -0,0 +1,18 @@
package org.dromara.dms.domain.bo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class DmsBillsFaultInstanceScanBo {
@NotNull(message="故障报修工单ID必须输入")
private Long repairInstanceId;
/** 设备编号 */
@NotBlank(message="设备编号必须输入")
private String deviceCode;
}

@ -9,7 +9,10 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.dms.domain.DmsInspectInstanceDetail;
/**
* dms_bills_inspect_instance
@ -87,5 +90,10 @@ public class DmsBillsInspectInstanceBo extends BaseEntity {
*/
private String status;
/**多个状态时使用,以,隔开*/
private String inspectStatusStr;//表结构不存在
private List<DmsInspectInstanceDetail> dmsInspectInstanceDetailList;//表结构不存在
}

@ -0,0 +1,17 @@
package org.dromara.dms.domain.bo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class DmsBillsInspectInstanceScanBo {
@NotNull(message="点巡检工单ID必须输入")
private Long inspectInstanceId;
/** 设备编号 */
@NotBlank(message="设备编号必须输入")
private String deviceCode;
}

@ -1,5 +1,6 @@
package org.dromara.dms.domain.bo;
import org.dromara.dms.domain.DmsFaultComponentsParts;
import org.dromara.dms.domain.DmsFaultInstanceActivity;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -9,6 +10,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
@ -157,5 +160,16 @@ public class DmsFaultInstanceActivityBo extends BaseEntity {
*/
private String componentsPartsId;
private List<String> fileUrls;//表结构不存在
/**
* (1 2 3 9)
*/
private String faultSourceType;//表结构不存在
private String parts1;//表结构不存在
private List<DmsFaultComponentsParts> parts;//表结构不存在
}

@ -2,6 +2,7 @@ package org.dromara.dms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
@ -144,6 +145,10 @@ public class DmsBillsFaultInstanceVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
private String filePath;//join
private String machineCode;//JOIN

@ -1,6 +1,8 @@
package org.dromara.dms.domain.vo;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.dms.domain.DmsBillsInspectInstance;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
@ -9,11 +11,12 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.dms.domain.DmsInspectInstanceDetail;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -110,4 +113,18 @@ public class DmsBillsInspectInstanceVo implements Serializable {
private String status;
/**
* 线
*/
private String routeName;
/**
*
*/
private String performer;
private List<DmsInspectInstanceDetail> dmsInspectInstanceDetailList;
private String planInspectCode;
}

@ -9,11 +9,12 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.dms.domain.DmsInspectInstanceDetailProject;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -104,5 +105,6 @@ public class DmsInspectInstanceDetailVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
private List<DmsInspectInstanceDetailProject> dmsInspectInstanceDetailProjectList;//表结构不存在
}

@ -41,65 +41,48 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe
public R<Integer> insertInspectInstance(String planInspectCode, String tenantId, Long userId){
// 使用 replaceAll 方法将双引号替换为空字符串
String result = planInspectCode.replaceAll("\"", "");
// 根据检查计划代码查询检查计划信息
DmsPlanInspect dmsPlanInspect = dmsPlanInspectMapper.selectPlanInspectJoinJobByInspectCode(result);
// 获取时间限制
Long timeLimit = dmsPlanInspect.getTimeLimit();
if (timeLimit != null) {
// 计算天数和小时数
Long days = timeLimit / (24 * 60 * 60l);
Long hours = timeLimit % (24 * 60 * 60l);
// System.out.println(days);
// System.out.println(hours);
// 设置时间限制的天数和小时数
dmsPlanInspect.setTimeLimitDays(days);
dmsPlanInspect.setTimeLimitHours(hours / (60 * 60l));
}
// 创建新的检查实例对象
DmsBillsInspectInstance dmsBillsInspectInstance = new DmsBillsInspectInstance();
// DmsRepairInstance dmsRepairInstance = dmsRepairInstanceService.selectDmsRepairInstanceByRepairInstanceId(2l);
// 设置检查实例的相关属性
dmsBillsInspectInstance.setPlanInspectId(dmsPlanInspect.getPlanInspectId());
// dmsBillsInspectInstance.setWfProcessId(105l);
dmsBillsInspectInstance.setInspectType(dmsPlanInspect.getInspectType());//检查类型(1巡检 2点检)
dmsBillsInspectInstance.setPlanBeginTime(dmsPlanInspect.getPlanTime());
dmsBillsInspectInstance.setPlanEndTime(new Date(dmsPlanInspect.getPlanTime().getTime()+dmsPlanInspect.getTimeLimit()*1000l));
dmsBillsInspectInstance.setInspectRouteId(dmsPlanInspect.getInspectRouteId());
// dmsBillsInspectInstance.setDeviceAmount(dmsPlanInspect.getDeviceAmount());//设备数量
// dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人
//写死105也可根据传入对象的wfprocessid作为传参。
/*
Long aLong = dmsRepairInstanceMapper.selectWfProcessActivityId(105l);
if (dmsBillsInspectInstance.getInspectType().equals("1")) {
dmsBillsInspectInstance.setWfProcessId(105l);
} else if (dmsBillsInspectInstance.getInspectType().equals("2")) {
dmsBillsInspectInstance.setWfProcessId(104l);
}
*/
// dmsBillsInspectInstance.setDeviceAmount(dmsPlanInspect.getDeviceAmount());//设备数量FIXME:没有这个字段
dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人
// dmsBillsInspectInstance.setIsFlag("1");
dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT);//待巡检
dmsBillsInspectInstance.setCreateBy(userId);
// dmsBillsInspectInstance.setCreateTime(new Date());
dmsBillsInspectInstance.setTenantId(tenantId);
// 插入检查实例并返回影响的行数
int i = dmsBillsInspectInstanceMapper.insert(dmsBillsInspectInstance);
// List<DmsBillsInspectInstance> dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance);
//新建第一步工单实例节点
/*
DmsBillsInspectInstanceActivity dmsBillsInspectInstanceActivity = new DmsBillsInspectInstanceActivity();
dmsBillsInspectInstanceActivity.setInspectInstanceId(dmsBillsInspectInstance.getInspectInstanceId());
dmsBillsInspectInstanceActivity.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId());
dmsBillsInspectInstanceActivity.setDeviceAmount(dmsBillsInspectInstance.getDeviceAmount());
dmsBillsInspectInstanceActivity.setPerformer(dmsBillsInspectInstance.getPerformer());
dmsBillsInspectInstanceActivity.setProcessStepOrder(1l);
dmsBillsInspectInstanceActivity.setProcessActivityId(aLong);
dmsBillsInspectInstanceActivityMapper.insertDmsBillsInspectInstanceActivity(dmsBillsInspectInstanceActivity);
*/
//新建点巡检工单明细
/* DmsInspectRouteDetail queryInspectRouteDetail = new DmsInspectRouteDetail();
queryInspectRouteDetail.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId());*/
// 查询检查路线明细
MPJLambdaWrapper<DmsInspectRouteDetail> lqw = JoinWrappers.lambda(DmsInspectRouteDetail.class)
.eq(DmsInspectRouteDetail::getInspectRouteId, dmsBillsInspectInstance.getInspectRouteId());
List<DmsInspectRouteDetail> dmsInspectRouteDetails = dmsInspectRouteDetailMapper.selectList(lqw);
// 遍历检查路线明细,生成检查实例明细
for(DmsInspectRouteDetail dmsInspectRouteDetail:dmsInspectRouteDetails){
DmsInspectInstanceDetail dmsInspectInstanceDetail = new DmsInspectInstanceDetail();
Long deviceId = dmsInspectRouteDetail.getMachineId();
@ -109,18 +92,17 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe
dmsInspectInstanceDetail.setInstanceDetailStatus("1");//1待巡检 2巡检中 3已完成
dmsInspectInstanceDetail.setInspectStandard(dmsInspectRouteDetail.getInspectStandard());
dmsInspectInstanceDetail.setInspectStatus("0");//FIXME:为什么设置为异常设备状态1正常 0异常
// dmsInspectInstanceDetailMapper.insertDmsInspectInstanceDetail(dmsInspectInstanceDetail);
dmsInspectInstanceDetail.setTenantId(tenantId);
dmsInspectInstanceDetail.setCreateBy(userId);
// dmsInspectInstanceDetail.setCreateTime(new Date());
dmsInspectInstanceDetailMapper.insert(dmsInspectInstanceDetail);
// 查询项目ID
Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(dmsInspectRouteDetail.getInspectStandard());
// DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice();
// queryInspectProjectDevice.setTargetType("2");//FIXME:关联类型(1设备类型)
// queryInspectProjectDevice.setTargetId(deviceId);
DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice();
queryInspectProjectDevice.setTargetType("2");//FIXME:关联类型(1设备类型)
queryInspectProjectDevice.setTargetId(deviceId);
MPJLambdaWrapper<DmsInspectProjectDevice> DmsInspectProjectDeviceLQW = JoinWrappers.lambda(DmsInspectProjectDevice.class)
.eq(DmsInspectProjectDevice::getTargetType, "2")//FIXME:关联类型(1设备类型)
.eq(DmsInspectProjectDevice::getTargetId, deviceId);
@ -131,16 +113,15 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe
DmsInspectInstanceDetailProject dmsInspectInstanceDetailProject = new DmsInspectInstanceDetailProject();
dmsInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId());
dmsInspectInstanceDetailProject.setInspectProjectId(projectId);
// dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(dmsInspectInstanceDetailProject);
dmsInspectInstanceDetailProject.setTenantId(tenantId);
dmsInspectInstanceDetailProject.setCreateBy(userId);
// dmsInspectInstanceDetailProject.setCreateTime(new Date());
dmsInspectInstanceDetailProjectMapper.insert(dmsInspectInstanceDetailProject);
// }
}
// 返回成功结果和影响的行数
return R.ok(i);
}

@ -1,9 +1,12 @@
package org.dromara.dms.mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.dms.domain.DmsBaseMachineInfo;
import org.dromara.dms.domain.vo.DmsBaseMachineInfoVo;
import java.util.List;
/**
* Mapper
*
@ -12,4 +15,6 @@ import org.dromara.dms.domain.vo.DmsBaseMachineInfoVo;
*/
public interface DmsBaseMachineInfoMapper extends BaseMapperPlus<DmsBaseMachineInfo, DmsBaseMachineInfoVo> {
List<DmsBaseMachineInfoVo> likeDeviceName(@Param("deviceName") String deviceName);
}

@ -36,7 +36,7 @@ public interface DmsBillsFaultInstanceMapper extends BaseMapperPlus<DmsBillsFaul
* @param repairInstanceId
* @return
*/
public DmsBillsFaultInstance selectFaultInstanceJoinFirstAndDeviceById(Long repairInstanceId);
public DmsBillsFaultInstanceVo selectFaultInstanceJoinFirstAndDeviceById(Long repairInstanceId);
/**
* ,Join device,Join dms_fault_instance_activiy
@ -67,4 +67,5 @@ public interface DmsBillsFaultInstanceMapper extends BaseMapperPlus<DmsBillsFaul
List<DmsFaultComponentsPartsVo> getDmsPartsList(@Param("repairInstanceId") Long repairInstanceId);
}

@ -27,4 +27,15 @@ public interface DmsBillsInspectInstanceMapper extends BaseMapperPlus<DmsBillsIn
* @return ,inspect_type = 1
*/
public List<DmsBillsInspectInstance> selectInspection();
/**
*
*
* @param dmsBillsInspectInstance
* @return
*/
public DmsBillsInspectInstanceVo selectNewestDmsBillsInspectInstance(DmsBillsInspectInstance dmsBillsInspectInstance);
}

@ -2,6 +2,7 @@ package org.dromara.dms.mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.dms.domain.DmsFaultComponentsParts;
import org.dromara.dms.domain.DmsFaultInstanceActivity;
import org.dromara.dms.domain.vo.DmsFaultComponentsPartsVo;
import org.dromara.dms.domain.vo.DmsFaultInstanceActivityVo;
@ -22,4 +23,8 @@ public interface DmsFaultInstanceActivityMapper extends BaseMapperPlus<DmsFaultI
Long selectRepairInstanceId(@Param("repairInstanceId")Long repairInstanceId);
int deleteByTargetId(@Param("activityId") Long activityId);
int insertParts(List<DmsFaultComponentsParts> parts);
}

@ -5,6 +5,8 @@ import org.dromara.dms.domain.DmsInspectInstanceDetail;
import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* Mapper
*
@ -24,4 +26,14 @@ public interface DmsInspectInstanceDetailMapper extends BaseMapperPlus<DmsInspec
Long selectProjectId(String inspectStandard);
/**
* ,Join
*
* @param dmsInspectInstanceDetail
* @return
*/
public List<DmsInspectInstanceDetail> selectDmsInspectInstanceDetailJoinList(DmsInspectInstanceDetail dmsInspectInstanceDetail);
}

@ -4,6 +4,8 @@ import org.dromara.dms.domain.DmsInstanceFile;
import org.dromara.dms.domain.vo.DmsInstanceFileVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* Mapper
*
@ -12,4 +14,12 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface DmsInstanceFileMapper extends BaseMapperPlus<DmsInstanceFile, DmsInstanceFileVo> {
/**
* ;
*
* @param dmsInstanceFileList ;
* @return
*/
public int batchDmsInstanceFile(List<DmsInstanceFile> dmsInstanceFileList);
}

@ -41,7 +41,17 @@ public interface IDmsBaseMachineInfoService {
*/
List<DmsBaseMachineInfoVo> queryList(DmsBaseMachineInfoBo bo);
/* *//**
/**
*
*
* @param
* @return
*/
// public DmsBaseMachineInfoVo selectDmsBaseDeviceLedgerByDeviceCode(String deviceCode);
List<DmsBaseMachineInfoVo> likeDeviceName(String deviceName);
/* *//**
*
*
* @param bo

@ -2,8 +2,11 @@ package org.dromara.dms.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.dms.domain.DmsBillsFaultInstance;
import org.dromara.dms.domain.DmsFaultInstanceActivity;
import org.dromara.dms.domain.bo.DmsBillsFaultInstanceBo;
import org.dromara.dms.domain.bo.DmsBillsFaultInstanceScanBo;
import org.dromara.dms.domain.bo.DmsFaultInstanceActivityBo;
import org.dromara.dms.domain.vo.DmsBillsFaultInstanceVo;
import java.util.Collection;
@ -69,4 +72,44 @@ public interface IDmsBillsFaultInstanceService {
DmsFaultInstanceActivity selectFaults(Long repairInstanceId);
/**
*
*
* @param repairInstanceId
* @return
*/
public DmsBillsFaultInstanceVo selectDmsBillsFaultInstanceByRepairInstanceId(Long repairInstanceId);
/**
*
*
* @param dmsFaultInstanceActivity
* @return
*/
public int updateDmsFaultInstanceActivity(DmsFaultInstanceActivityBo dmsFaultInstanceActivity);
/**
*
* @param dmsBillsFaultInstanceScan
*/
public Long scanDevice4Repair(DmsBillsFaultInstanceScanBo dmsBillsFaultInstanceScan);
/**
*
*
* @param dmsFaultInstanceActivity
* @return
*/
public int startRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity);
/**
*
*
* @param dmsFaultInstanceActivity
* @return
*/
public int completeRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity);
}

@ -1,10 +1,14 @@
package org.dromara.dms.service;
import org.dromara.dms.domain.DmsBillsInspectInstance;
import org.dromara.dms.domain.DmsInspectInstanceDetail;
import org.dromara.dms.domain.bo.DmsBillsInspectInstanceScanBo;
import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo;
import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo;
import org.dromara.dms.domain.bo.DmsBillsInspectInstanceBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo;
import java.util.Collection;
import java.util.List;
@ -74,4 +78,29 @@ public interface IDmsBillsInspectInstanceService {
* @return truefalse
*/
public Boolean updateWfDefinitionIdById(Long inspectInstanceId, Long wfDefinitionId);
/**
*
*
* @param dmsInspectInstanceDetail
* @return
*/
// int updateDmsInspectInstanceDetail(DmsInspectInstanceDetailBo dmsInspectInstanceDetail);
/**
*
*
* @param dmsBillsInspectInstance
* @return
*/
public DmsBillsInspectInstanceVo getNewestBillsInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstance);
/**
*
* @param dmsBillsInspectInstanceScan
* @return
*/
public DmsInspectInstanceDetailVo scanInspectInstanceDetail(DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan);
}

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -100,6 +101,27 @@ public class DmsBaseMachineInfoServiceImpl implements IDmsBaseMachineInfoService
return lqw;
}
/**
*
*
* @param deviceCode Code
* @return
*/
// @Override
// public DmsBaseMachineInfoVo selectDmsBaseDeviceLedgerByDeviceCode(String deviceCode) {
// DmsBaseMachineInfoVo dmsBaseDeviceLedger = baseMapper.selectDmsBaseDeviceLedgerByDeviceCode(deviceCode);
// if (dmsBaseDeviceLedger == null) {
// throw new ServiceException("无此设备");
// }
// return dmsBaseDeviceLedger;
// }
@Override
public List<DmsBaseMachineInfoVo> likeDeviceName(String deviceName) {
List<DmsBaseMachineInfoVo> list = baseMapper.likeDeviceName(deviceName);
return list;
}
/* *//**
*
*

@ -150,10 +150,10 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi
throw new ServiceException("新位置不能与原位置相同");
}
// 2. 校验转移前必须有安装位置
// 2. 校验转移前必须有位置
//设备安装时会赋值给设备信息表的设备位置;新增或修改转移信息时,前端会将设备信息的设备位置赋值给转移信息的旧位置(自动赋值,不可编辑)
if (StringUtils.isBlank(entity.getDevicePosition())) {
throw new ServiceException("转移前必须有安装位置");
throw new ServiceException("转移前必须有位置(可先安装)");
}
// 3. 校验转移时间不能小于之前记录的安装时间和转移时间

@ -3,25 +3,42 @@ package org.dromara.dms.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.constant.DmsConstants;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.uuid.Seq;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.dms.domain.DmsBillsFaultInstance;
import org.dromara.dms.domain.DmsFaultInstanceActivity;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.dms.domain.*;
import org.dromara.dms.domain.bo.DmsBillsFaultInstanceBo;
import org.dromara.dms.domain.bo.DmsBillsFaultInstanceScanBo;
import org.dromara.dms.domain.bo.DmsFaultInstanceActivityBo;
import org.dromara.dms.domain.bo.DmsInstanceFileBo;
import org.dromara.dms.domain.vo.DmsBillsFaultInstanceVo;
import org.dromara.dms.domain.vo.DmsFaultComponentsPartsVo;
import org.dromara.dms.domain.vo.DmsFaultInstanceActivityVo;
import org.dromara.dms.domain.vo.DmsInstanceFileVo;
import org.dromara.dms.mapper.DmsBillsFaultInstanceMapper;
import org.dromara.dms.mapper.DmsFaultInstanceActivityMapper;
import org.dromara.dms.mapper.DmsInstanceFileMapper;
import org.dromara.dms.service.IDmsBillsFaultInstanceService;
import org.dromara.dms.service.IDmsFaultInstanceActivityService;
import org.dromara.dms.service.IDmsInstanceFileService;
import org.dromara.workflow.api.RemoteWorkflowService;
import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* Service
@ -37,6 +54,19 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
private final DmsBillsFaultInstanceMapper dmsBillsFaultInstanceMapper;
private final DmsInstanceFileMapper dmsInstanceFileMapper;
private final IDmsInstanceFileService DmsInstanceFileService;
@DubboReference
private final RemoteWorkflowService remoteWorkflowService;
private final DmsFaultInstanceActivityMapper dmsFaultInstanceActivityMapper;
private final IDmsFaultInstanceActivityService dmsFaultInstanceActivityService;
/**
*
*
@ -78,6 +108,23 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<DmsBillsFaultInstance> lqw = JoinWrappers.lambda(DmsBillsFaultInstance.class)
.selectAll(DmsBillsFaultInstance.class)
//关联查询设备信息
.select(DmsBaseMachineInfo::getMachineName)
.select(DmsBaseMachineInfo::getMachineCode)
.select(DmsBaseMachineInfo::getMachineLocation)
.select(DmsBaseMachineInfo::getMachineSpec)
.leftJoin(DmsBaseMachineInfo.class, DmsBaseMachineInfo::getMachineId, DmsBaseShutReason::getMachineId)
//关联查询零部件更换记录
.select(DmsFaultComponentsParts::getPartName)
.select(DmsFaultComponentsParts::getPartSpecifications)
.select(DmsFaultComponentsParts::getAmount)
.leftJoin(DmsFaultComponentsParts.class, DmsFaultComponentsParts::getRepairInstanceId, DmsBillsFaultInstance::getRepairInstanceId)
.select(DmsInstanceFile::getFilePath)
.leftJoin(DmsInstanceFile.class, DmsInstanceFile::getTargetId, DmsBillsFaultInstance::getRepairInstanceId)
.eq(bo.getRepairInstanceId() != null, DmsBillsFaultInstance::getRepairInstanceId, bo.getRepairInstanceId())
.eq(StringUtils.isNotBlank(bo.getBillsFaultCode()), DmsBillsFaultInstance::getBillsFaultCode, bo.getBillsFaultCode())
.eq(StringUtils.isNotBlank(bo.getInstanceType()), DmsBillsFaultInstance::getInstanceType, bo.getInstanceType())
@ -106,13 +153,63 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
* @return
*/
@Override
@GlobalTransactional(rollbackFor = Exception.class)
public Boolean insertByBo(DmsBillsFaultInstanceBo bo) {
DmsBillsFaultInstance add = MapstructUtils.convert(bo, DmsBillsFaultInstance.class);
validEntityBeforeSave(add);
// 获取当前日期时间
Date curretnDate = new Date();
add.setApplyTime(curretnDate);
add.setApplyUser(LoginHelper.getUsername());
add.setBillsFaultCode(Seq.getId(Seq.dmsBillsFaultInstanceSeqType, Seq.dmsBillsFaultInstanceSeqCode));
// 设置报修状态为待维修
add.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_TO_REPAIR);
// 设置实例类型为手动录入
add.setInstanceType(DmsConstants.DMS_BILLS_FAULT_INSTANCE_TYPE_MAUAL);
RemoteStartProcess remoteStartProcess = new RemoteStartProcess();
remoteStartProcess.setFlowCode(DmsConstants.DMS_BILLS_FAULT_INSTANCE_WF_CODE);
remoteStartProcess.setBusinessId(add.getRepairInstanceId().toString());
RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(remoteStartProcess);
add.setWfDefinitionId(remoteStartProcessReturn.getTaskId());
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setRepairInstanceId(add.getRepairInstanceId());
}
// 创建故障实例活动对象
DmsFaultInstanceActivity dmsFaultInstanceActivity = new DmsFaultInstanceActivity();
// 设置维修实例ID
dmsFaultInstanceActivity.setRepairInstanceId(add.getRepairInstanceId());
// 设置流程活动ID
dmsFaultInstanceActivity.setWfNodeId(remoteStartProcessReturn.getProcessInstanceId());
// 设置故障类型
dmsFaultInstanceActivity.setFaultType(add.getFaultType());
// 设置故障描述
dmsFaultInstanceActivity.setFaultDescription(add.getFaultDescription());
// 设置设计操作
dmsFaultInstanceActivity.setDesignOperations(add.getDesignOperations());
// 设置设备ID
dmsFaultInstanceActivity.setMachineId(add.getMachineId());
// 设置维修类型
dmsFaultInstanceActivity.setRepairType(add.getRepairType());
// 如果外部资源ID不为空则设置外部资源ID
if (add.getOutsourcingId() != null) {
dmsFaultInstanceActivity.setOutsourcingId(add.getOutsourcingId());
}
// 设置处理状态为待领取
dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_TO_PICK);
// 设置流程步骤顺序
dmsFaultInstanceActivity.setProcessStepOrder(1l);
// 插入故障实例活动记录
dmsFaultInstanceActivityMapper.insert(dmsFaultInstanceActivity);
//存储图片
// 获取文件URL列表
List<String> fileUrls = add.getFileUrls();
// 批量插入实例文件记录
batchInsertInstanceFiles(fileUrls, dmsFaultInstanceActivity.getInstanceActivityId());
return flag;
}
@ -123,8 +220,11 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(DmsBillsFaultInstanceBo bo) {
DmsBillsFaultInstance update = MapstructUtils.convert(bo, DmsBillsFaultInstance.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@ -161,4 +261,294 @@ public class DmsBillsFaultInstanceServiceImpl implements IDmsBillsFaultInstanceS
activity.setParts(parts);
return activity;
}
/**
*
*
* @param repairInstanceId
* @return
*/
@Override
public DmsBillsFaultInstanceVo selectDmsBillsFaultInstanceByRepairInstanceId(Long repairInstanceId) {
// 根据repairInstanceId查询故障实例及其关联的设备和第一条活动记录
DmsBillsFaultInstanceVo dmsBillsFaultInstance = dmsBillsFaultInstanceMapper.selectFaultInstanceJoinFirstAndDeviceById(repairInstanceId);
// 创建实例文件查询对象
DmsInstanceFileBo queryInstanceFile = new DmsInstanceFileBo();
// 设置目标类型为故障实例活动
queryInstanceFile.setTargetType(DmsConstants.DMS_INSTANCE_FILE_TARGET_TYPE_FAULT_INSTANCE_ACTIVITY);
// 设置目标ID为故障实例的活动ID
queryInstanceFile.setTargetId(dmsBillsFaultInstance.getInstanceActivityId());
// 查询实例文件列表
List<DmsInstanceFileVo> dmsInstanceFiles = DmsInstanceFileService.queryList(queryInstanceFile);
// 遍历实例文件列表FIXME
for (DmsInstanceFileVo dmsInstanceFile : dmsInstanceFiles){
// 获取文件路径
String filePath = dmsInstanceFile.getFilePath();
// 如果文件路径不包含"7309"
if(!filePath.contains("7309")){
// 如果文件路径包含"https",将其替换为"http"
if(filePath.contains("https")){
filePath.replaceFirst("https","http");
}
// 找到"/statics"的索引位置
int index= filePath.indexOf("/statics");
// 修改文件路径为新的地址
filePath = "http://172.16.12.100:7309"+filePath.substring(index);
// 设置新的URL和文件路径
dmsInstanceFile.setFilePath(filePath);
dmsInstanceFile.setFilePath(filePath);
}else{
// 如果文件路径包含"7309"直接设置URL为文件路径
dmsInstanceFile.setFilePath(dmsInstanceFile.getFilePath());
}
}
List<DmsInstanceFile> InstanceFiles = MapstructUtils.convert(dmsInstanceFiles, DmsInstanceFile.class);
// 将修改后的实例文件列表设置到故障实例中
dmsBillsFaultInstance.setDmsInstanceFiles(InstanceFiles);
// 返回故障实例对象
return dmsBillsFaultInstance;
}
public void batchInsertInstanceFiles(List<String> fileUrls, Long instanceActivityId) {
// 判断文件URL列表是否不为空且非空
if (fileUrls != null && !fileUrls.isEmpty()) {
// 创建一个DmsInstanceFile对象的列表
List<DmsInstanceFile> dmsInstanceFiles = new ArrayList<>();
// 遍历文件URL列表
for (String fileUrl : fileUrls) {
// 创建一个新的DmsInstanceFile对象
DmsInstanceFile dmsInstanceFile = new DmsInstanceFile();
// 设置目标ID为实例活动ID
dmsInstanceFile.setTargetId(instanceActivityId);
// 设置目标类型为故障实例活动
dmsInstanceFile.setTargetType(DmsConstants.DMS_INSTANCE_FILE_TARGET_TYPE_FAULT_INSTANCE_ACTIVITY);
// 设置文件路径为当前URL
dmsInstanceFile.setFilePath(fileUrl);
// 将DmsInstanceFile对象添加到列表中
dmsInstanceFiles.add(dmsInstanceFile);
}
// 批量插入DmsInstanceFile对象到数据库
dmsInstanceFileMapper.batchDmsInstanceFile(dmsInstanceFiles);
}
}
/**
*
*
* @param dmsFaultInstanceActivity
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateDmsFaultInstanceActivity(DmsFaultInstanceActivityBo dmsFaultInstanceActivity) {
// 获取文件URL列表
List<String> fileUrls = dmsFaultInstanceActivity.getFileUrls();
// 获取活动ID
Long activityId = dmsFaultInstanceActivity.getInstanceActivityId();
// 根据活动ID查询对应的维修实例ID
Long repairInstanceId = dmsFaultInstanceActivityMapper.selectRepairInstanceId(activityId);
// 创建新的DmsBillsFaultInstance对象
DmsBillsFaultInstance dmsBillsFaultInstance = new DmsBillsFaultInstance();
// 设置外包ID
dmsBillsFaultInstance.setOutsourcingId(dmsFaultInstanceActivity.getOutsourcingId());
// 设置故障来源类型
dmsBillsFaultInstance.setFaultSourceType(dmsFaultInstanceActivity.getFaultSourceType());
// 设置故障类型
dmsBillsFaultInstance.setFaultType(dmsFaultInstanceActivity.getFaultType());
// 设置维修实例ID
dmsBillsFaultInstance.setRepairInstanceId(repairInstanceId);
// 根据ID更新DmsBillsFaultInstance记录
int i = dmsBillsFaultInstanceMapper.updateById(dmsBillsFaultInstance);
// 根据目标ID删除DmsFaultInstanceActivity记录
int rows = dmsFaultInstanceActivityMapper.deleteByTargetId(activityId);
// 批量插入实例文件
batchInsertInstanceFiles(fileUrls,activityId);
// 将dmsFaultInstanceActivity转换为DmsBillsFaultInstance对象
DmsBillsFaultInstance update = MapstructUtils.convert(dmsFaultInstanceActivity, DmsBillsFaultInstance.class);
// 在保存之前验证实体
validEntityBeforeSave(update);
// 根据ID更新记录并返回影响行数
return baseMapper.updateById(update);
}
/**
*
*
* @param dmsBillsFaultInstanceScanVo
*/
@Override
public Long scanDevice4Repair(DmsBillsFaultInstanceScanBo dmsBillsFaultInstanceScan) {
Long count = dmsBillsFaultInstanceMapper.selectCountByRepairInstanceIdAndDeviceCode(
dmsBillsFaultInstanceScan.getRepairInstanceId(), dmsBillsFaultInstanceScan.getDeviceCode());
if (count <= 0) {
throw new ServiceException("扫描验证失败");
}else {
return count;
}
}
/**
*
*
* @param dmsFaultInstanceActivity
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int startRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity) {
// 根据维修实例ID查询故障实例信息
DmsBillsFaultInstance dmsBillsFaultInstance = dmsBillsFaultInstanceMapper
.selectFaultInstanceJoinFirstById(dmsFaultInstanceActivity.getRepairInstanceId());//join 第一步activity
// 获取工单状态
String dmsBillsStatus = dmsBillsFaultInstance.getBillsStatus();
// 如果工单状态为已完成,抛出异常
if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH)) {//维修完成
throw new ServiceException("已经维修完成");
}
// 获取当前日期和登录用户名
Date currentDate = new Date();
String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname();
// 如果工单状态为待维修
if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_TO_REPAIR)) {//待维修
// 设置工单状态为维修中
dmsBillsFaultInstance.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_REPAIRING);
// 设置实际开始时间
dmsBillsFaultInstance.setRealBeginTime(currentDate);
// 更新故障实例信息
dmsBillsFaultInstanceMapper.updateById(dmsBillsFaultInstance);
// 设置维修实例ID
dmsFaultInstanceActivity.setRepairInstanceId(dmsBillsFaultInstance.getRepairInstanceId());
// FIXME: 工作流相关代码(暂时注释掉)
// dmsFaultInstanceActivity.setProcessActivityId(WfConstants.WF_BILLS_FAULT_INSTANCE_PROCESS_ACTIVITY_SECOND_ID);
// 设置机器ID
dmsFaultInstanceActivity.setMachineId(dmsBillsFaultInstance.getMachineId());
// 设置处理状态为执行中
dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_EXECUTING);
// 设置步骤顺序
dmsFaultInstanceActivity.setProcessStepOrder(2L);
// 设置开始时间
dmsFaultInstanceActivity.setStartTime(currentDate);
// 设置处理用户ID
dmsFaultInstanceActivity.setHandleUserId(LoginHelper.getUserId());
// 设置处理人名称
dmsFaultInstanceActivity.setHandleBy(userName);
// 设置处理时间
dmsFaultInstanceActivity.setHandleTime(currentDate);
// 插入新的故障实例活动记录
Boolean b = dmsFaultInstanceActivityService.insertByBo(dmsFaultInstanceActivity);
// 创建第一个实例活动对象并设置其属性
DmsFaultInstanceActivityBo firstInstanceActivity = new DmsFaultInstanceActivityBo();
firstInstanceActivity.setInstanceActivityId(dmsBillsFaultInstance.getInstanceActivityId());
// 设置处理状态为已完成
firstInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_FINISH);
// 设置结束时间
firstInstanceActivity.setEndTime(currentDate);
// FIXME: 需重新梳理代码dmsFaultInstanceActivityService
// 更新第一个实例活动记录
dmsFaultInstanceActivityService.updateByBo(firstInstanceActivity);
} else {// 如果工单状态为维修中
// 更新故障实例活动记录
Boolean b = dmsFaultInstanceActivityService.updateByBo(dmsFaultInstanceActivity);
}
// 返回结果1表示成功
return 1;
}
/**
*
*
* @param dmsFaultInstanceActivity
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int completeRepair(DmsFaultInstanceActivityBo dmsFaultInstanceActivity) {
// 批量插入实例的附件文件信息
batchInsertInstanceAfterFiles(dmsFaultInstanceActivity.getFileUrls(),dmsFaultInstanceActivity.getInstanceActivityId());
// 获取需要插入的备件列表
List<DmsFaultComponentsParts> parts = dmsFaultInstanceActivity.getParts();
// 如果备件列表不为空则设置每个备件的故障ID并插入数据库
if (!CollectionUtils.isEmpty(parts)){
for (DmsFaultComponentsParts part : parts) {
part.setFaultId(dmsFaultInstanceActivity.getRepairInstanceId());
}
dmsFaultInstanceActivityMapper.insertParts(parts);
}
// 根据维修实例ID查询对应的工单实例
DmsBillsFaultInstanceVo dmsBillsFaultInstance = this.
queryById(dmsFaultInstanceActivity.getRepairInstanceId());
// 获取当前工单的状态
String dmsBillsStatus = dmsBillsFaultInstance.getBillsStatus();
// 如果状态为已完成,抛出异常提示已经维修完成
if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH)) {//维修完成
throw new ServiceException("已经维修完成");
}
// 如果状态为待维修,抛出异常提示请先开始维修
if (dmsBillsStatus.equals(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_TO_REPAIR)) {//待维修
throw new ServiceException("请先开始维修");
}
// 获取当前日期和时间
Date currentDate = new Date();
// 获取当前登录用户的用户名或昵称
String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname();
// 设置工单状态为已完成,并记录实际结束时间
dmsBillsFaultInstance.setBillsStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_STATUS_FINISH);
dmsBillsFaultInstance.setRealEndTime(currentDate);
// 将工单实例转换为数据库实体对象并更新数据库
DmsBillsFaultInstance faultInstance = MapstructUtils.convert(dmsBillsFaultInstance, DmsBillsFaultInstance.class);
dmsBillsFaultInstanceMapper.updateById(faultInstance);
// 设置工单活动状态为已完成,并记录结束时间和维修人员
dmsFaultInstanceActivity.setProcessHandleStatus(DmsConstants.DMS_BILLS_FAULT_INSTANCE_ACTIVITY_HANDLE_STATUS_FINISH);
dmsFaultInstanceActivity.setEndTime(currentDate);
dmsFaultInstanceActivity.setRepairer(userName);
// 将工单活动实例转换为数据库实体对象并更新数据库
DmsFaultInstanceActivity faultInstanceActivity = MapstructUtils.convert(dmsFaultInstanceActivity, DmsFaultInstanceActivity.class);
int i = dmsFaultInstanceActivityMapper.updateById(faultInstanceActivity);
// 返回更新操作影响的行数
return i;
}
public void batchInsertInstanceAfterFiles(List<String> fileUrls, Long instanceActivityId) {
// 判断文件URL列表是否不为空且非空集合
if (fileUrls != null && !fileUrls.isEmpty()) {
// 创建一个DmsInstanceFile对象的列表用于存储文件信息
List<DmsInstanceFile> dmsInstanceFiles = new ArrayList<>();
// 遍历文件URL列表
for (String fileUrl : fileUrls) {
// 创建一个新的DmsInstanceFile对象
DmsInstanceFile dmsInstanceFile = new DmsInstanceFile();
// 设置目标ID为传入的实例活动ID
dmsInstanceFile.setTargetId(instanceActivityId);
// 设置目标类型为"2",表示关联类型为维修后
dmsInstanceFile.setTargetType("2");//关联类型(1维修前2维修后)
// 设置文件路径为当前遍历到的文件URL
dmsInstanceFile.setFilePath(fileUrl);
// 将DmsInstanceFile对象添加到列表中
dmsInstanceFiles.add(dmsInstanceFile);
}
// 调用数据映射器批量插入文件信息
dmsInstanceFileMapper.batchDmsInstanceFile(dmsInstanceFiles);
}
}
}

@ -1,5 +1,6 @@
package org.dromara.dms.service.impl;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -9,13 +10,24 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.dms.domain.DmsBillsInspectInstance;
import org.dromara.dms.domain.DmsBillsLubeInstance;
import org.dromara.dms.domain.bo.DmsBillsInspectInstanceBo;
import org.dromara.dms.domain.bo.DmsBillsLubeInstanceBo;
import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo;
import org.dromara.dms.domain.vo.DmsBillsLubeInstanceVo;
import org.dromara.dms.mapper.DmsBillsInspectInstanceMapper;
import org.dromara.dms.service.IDmsBillsInspectInstanceService;
import org.springframework.stereotype.Service;
import org.dromara.dms.domain.bo.DmsBillsInspectInstanceActivityBo;
import org.dromara.dms.domain.vo.DmsBillsInspectInstanceActivityVo;
import org.dromara.dms.domain.DmsBillsInspectInstanceActivity;
import org.dromara.dms.mapper.DmsBillsInspectInstanceActivityMapper;
import org.dromara.dms.service.IDmsBillsInspectInstanceActivityService;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -32,6 +44,8 @@ public class DmsBillsInspectInstanceActivityServiceImpl implements IDmsBillsInsp
private final DmsBillsInspectInstanceActivityMapper baseMapper;
private final DmsBillsInspectInstanceMapper dmsBillsInspectInstanceMapper;
/**
* ;
*
@ -101,9 +115,28 @@ public class DmsBillsInspectInstanceActivityServiceImpl implements IDmsBillsInsp
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public DmsBillsInspectInstanceActivityVo insertByBo(DmsBillsInspectInstanceActivityBo bo) {
DmsBillsInspectInstanceActivity add = MapstructUtils.convert(bo, DmsBillsInspectInstanceActivity.class);
validEntityBeforeSave(add);
// 获取当前登录用户信息
Long userId = LoginHelper.getUserId();
String username = LoginHelper.getUsername();
add.setHandleTime(DateUtils.getNowDate());/**/
add.setHandleUserId(userId);
add.setHandleBy(username);
// 更新点巡检工单状态
DmsBillsInspectInstanceVo dmsBillsInspectInstanceVo = dmsBillsInspectInstanceMapper.selectVoById(add.getInspectInstanceId());
if (add.getProcessStepOrder() == 2L) {//如果是第二步就更新为巡检中
dmsBillsInspectInstanceVo.setInspectStatus("2");
}else if (add.getProcessStepOrder() == 3L) {//如果是第三步就更新为巡检结束
dmsBillsInspectInstanceVo.setInspectStatus("3");
dmsBillsInspectInstanceVo.setRealEndTime(new Date());
}
DmsBillsInspectInstance updateInstance = MapstructUtils.convert(dmsBillsInspectInstanceVo, DmsBillsInspectInstance.class);
dmsBillsInspectInstanceMapper.updateById(updateInstance);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setInstanceActivityId(add.getInstanceActivityId());

@ -4,23 +4,30 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.DmsConstants;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.dms.domain.DmsBaseInspectRoute;
import org.dromara.dms.domain.DmsBillsInspectInstance;
import org.dromara.dms.domain.DmsPlanInspect;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.dms.domain.*;
import org.dromara.dms.domain.bo.DmsBillsInspectInstanceBo;
import org.dromara.dms.domain.bo.DmsBillsInspectInstanceScanBo;
import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo;
import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo;
import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo;
import org.dromara.dms.mapper.DmsBillsInspectInstanceMapper;
import org.dromara.dms.mapper.DmsInspectInstanceDetailMapper;
import org.dromara.dms.mapper.DmsInspectInstanceDetailProjectMapper;
import org.dromara.dms.mapper.DmsPlanInspectMapper;
import org.dromara.dms.service.IDmsBillsInspectInstanceService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -36,6 +43,15 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
private final DmsBillsInspectInstanceMapper baseMapper;
private final DmsBillsInspectInstanceMapper dmsBillsInspectInstanceMapper;
private final DmsPlanInspectMapper dmsPlanInspectMapper;
private final DmsInspectInstanceDetailMapper dmsInspectInstanceDetailMapper;
private final DmsInspectInstanceDetailProjectMapper dmsInspectInstanceDetailPrjectMapper;
/**
*
*
@ -87,8 +103,6 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
.leftJoin(DmsBaseInspectRoute.class, DmsBaseInspectRoute::getInspectRouteId, DmsBillsInspectInstance::getInspectRouteId)
.eq(bo.getInspectInstanceId() != null, DmsBillsInspectInstance::getInspectInstanceId, bo.getInspectInstanceId())
.eq(bo.getPlanInspectId() != null, DmsBillsInspectInstance::getPlanInspectId, bo.getPlanInspectId())
.eq(bo.getWfDefinitionId() != null, DmsBillsInspectInstance::getWfDefinitionId, bo.getWfDefinitionId())
@ -173,6 +187,160 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
throw new ServiceException("记录不存在");
}
entity.setWfDefinitionId(wfDefinitionId);
entity.setInspectStatus("1");
entity.setRealBeginTime(new Date());
return baseMapper.updateById(entity) > 0;
}
/**
*
*
* @param dmsInspectInstanceDetail
* @return
*/
// @Override
// @Transactional(rollbackFor = Exception.class)
// public int updateDmsInspectInstanceDetail(DmsInspectInstanceDetailBo dmsInspectInstanceDetail) {
// // 根据instanceDetailId查询记录检查信息
// DmsRecordInspect dmsRecordInspect = dmsBillsInspectInstanceMapper.selectRecord(dmsInspectInstanceDetail.getInstanceDetailId());
//
// // 根据inspectInstanceId批量查询记录检查信息
// List<DmsRecordInspect> recordInspect = dmsBillsInspectInstanceMapper.selectRecordByInstainceId(dmsRecordInspect.getInspectInstanceId());
//// if (recordInspect!=null&&recordInspect.size()>0){
//// // 如果有未完成的检查记录设置状态为2
//// dmsRecordInspect.setInspectStatus(2l);
//// }else {
//// // 如果所有检查记录都完成设置状态为3
//// dmsRecordInspect.setInspectStatus(3l);
//// }
// // 直接将状态设置为3表示完成
// dmsRecordInspect.setInspectStatus(3l);
// // 插入记录检查信息
// int i1 = dmsBillsInspectInstanceMapper.insertRecord(dmsRecordInspect);
// // 查询未完成的检查实例数量
// int count = dmsBillsInspectInstanceMapper.selectUnCompletedInstance(dmsRecordInspect.getInspectInstanceId());
//// int count1 = dmsBillsInspectInstanceMapper.selectAllInstance(dmsRecordInspect.getInspectInstanceId());
// // 创建新的检查实例对象
// DmsBillsInspectInstanceBo dmsBillsInspectInstance = new DmsBillsInspectInstanceBo();
// if (count==0||count==1){
// // 如果没有未完成的检查实例设置状态为3
// dmsBillsInspectInstance.setInspectStatus("3");
// }else{
// // 如果有未完成的检查实例设置状态为2
// dmsBillsInspectInstance.setInspectStatus("2");
// }
// // 设置检查实例ID
// dmsBillsInspectInstance.setInspectInstanceId(dmsInspectInstanceDetail.getInspectInstanceId());
// // 设置实际结束时间
// dmsBillsInspectInstance.setRealEndTime(new Date());
// // 更新检查实例信息
// dmsBillsInspectInstanceService.updateByBo(dmsBillsInspectInstance);
// // 获取当前登录用户的信息
// String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname();
// // 获取当前日期
// Date currentDate = new Date();
// // 设置更新时间和更新人
// dmsInspectInstanceDetail.setUpdateTime(currentDate);
// dmsInspectInstanceDetail.setUpdateBy(Long.valueOf(userName));
//
// // 处理检查实例详情的子项目
// DmsInspectInstanceDetail returnInspectInstanceDetail = handleDmsInspectInstanceDetailProject(dmsInspectInstanceDetail);
// if (returnInspectInstanceDetail != null) {
// // 更新检查状态和实例详情状态
// dmsInspectInstanceDetail.setInspectStatus(returnInspectInstanceDetail.getInspectStatus());
// dmsInspectInstanceDetail.setInstanceDetailStatus(returnInspectInstanceDetail.getInstanceDetailStatus());
// // 设置子项目列表
// dmsInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(returnInspectInstanceDetail.getDmsInspectInstanceDetailProjectList());
// // 批量更新子项目信息
// batchUpdateDmsInspectInstanceDetailProject(dmsInspectInstanceDetail);
// }
//
// // 返回更新结果
// return dmsInspectInstanceDetailMapper.update(dmsInspectInstanceDetail);
// }
/**
*
*
* @param dmsBillsInspectInstanceBo
* @return
*/
@Override
public DmsBillsInspectInstanceVo getNewestBillsInspectInstance(DmsBillsInspectInstanceBo dmsBillsInspectInstanceBo) {
// 设置巡检状态字符串,包含“待巡检”和“巡检中”状态
dmsBillsInspectInstanceBo.setInspectStatusStr(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT + "," + DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_INSPECTING);
// 将传入的BO对象转换为DO对象
DmsBillsInspectInstance dmsBillsInspectInstance = MapstructUtils.convert(dmsBillsInspectInstanceBo, DmsBillsInspectInstance.class);
// 查询最新的未完成巡检工单
DmsBillsInspectInstanceVo newestBillsInspectInstance = dmsBillsInspectInstanceMapper.selectNewestDmsBillsInspectInstance(dmsBillsInspectInstance);
// 如果查询结果不为空
if (newestBillsInspectInstance != null) {
// 创建巡检实例详情查询对象
DmsInspectInstanceDetail queryInspectInstanceDetail = new DmsInspectInstanceDetail();
// 设置巡检实例ID
queryInspectInstanceDetail.setInspectInstanceId(newestBillsInspectInstance.getInspectInstanceId());
// 查询巡检实例详情列表
List<DmsInspectInstanceDetail> inspectInstanceDetails = dmsInspectInstanceDetailMapper.selectDmsInspectInstanceDetailJoinList(queryInspectInstanceDetail);
// 设置巡检实例详情列表到newestBillsInspectInstance对象中
newestBillsInspectInstance.setDmsInspectInstanceDetailList(inspectInstanceDetails);
}
// 设置新的巡检编码为计划巡检编码
newestBillsInspectInstance.setBillsInspectCode(newestBillsInspectInstance.getPlanInspectCode());
// 返回最新的未完成巡检工单
return newestBillsInspectInstance;
}
/**
*
*
* @param dmsBillsInspectInstanceScan
* @return
*/
@Override
public DmsInspectInstanceDetailVo scanInspectInstanceDetail(DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan) {
// 根据检查实例ID和设备编码查询检查实例详细信息
DmsInspectInstanceDetailVo dmsInspectInstanceDetail = dmsInspectInstanceDetailMapper.selectDmsInspectInstanceDetailByUI(dmsBillsInspectInstanceScan.getInspectInstanceId(),
dmsBillsInspectInstanceScan.getDeviceCode());
// 如果查询结果为空,抛出异常提示无此设备的检查工单
if (dmsInspectInstanceDetail == null) {
throw new ServiceException("无此设备的检查工单");
}
// 获取设备ID
Long deviceId = dmsInspectInstanceDetail.getMachineId();
// 创建查询检查实例详细项目的参数对象
DmsInspectInstanceDetailProject queryInspectInstanceDetailProject = new DmsInspectInstanceDetailProject();
// 设置设备ID
queryInspectInstanceDetailProject.setDeviceId(deviceId);
// 根据标准ID查询项目ID
Long projectId = dmsInspectInstanceDetailPrjectMapper.selectProjectByStandardId(dmsInspectInstanceDetail.getInspectStandard());
// 设置检查项目ID
queryInspectInstanceDetailProject.setInspectProjectId(projectId);
// 设置检查实例详情ID
queryInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId());
// 查询检查实例详细项目列表
List<DmsInspectInstanceDetailProject> dmsInspectInstanceDetailProjects = dmsInspectInstanceDetailPrjectMapper.selectDmsInspectInstanceDetailProjectJoinList(queryInspectInstanceDetailProject);
// 将查询结果设置到检查实例详情对象中
dmsInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(dmsInspectInstanceDetailProjects);
// 更新检查实例的开始时间
DmsBillsInspectInstanceBo dmsBillsInspectInstance = new DmsBillsInspectInstanceBo();
// 设置检查实例ID
dmsBillsInspectInstance.setInspectInstanceId(dmsBillsInspectInstanceScan.getInspectInstanceId());
// 设置实际开始时间为当前时间
dmsBillsInspectInstance.setRealBeginTime(new Date());
// dmsBillsInspectInstance.setInspectStatus("2");
// FIXME: 梳理流程,完善更新方法
// int i = dmsBillsInspectInstanceMapper.updateDmsBillsInspectInstance(dmsBillsInspectInstance);
// 使用BO更新检查实例信息
this.updateByBo(dmsBillsInspectInstance);
// 返回检查实例详情对象
return dmsInspectInstanceDetail;
}
}

@ -10,9 +10,12 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.dms.domain.DmsBillsLubeInstance;
import org.dromara.dms.domain.DmsBillsLubeInstanceActivity;
import org.dromara.dms.domain.bo.DmsBillsLubeInstanceActivityBo;
import org.dromara.dms.domain.bo.DmsBillsLubeInstanceBo;
import org.dromara.dms.domain.vo.DmsBillsLubeInstanceActivityVo;
import org.dromara.dms.domain.vo.DmsBillsLubeInstanceVo;
import org.dromara.dms.mapper.DmsBillsLubeInstanceActivityMapper;
import org.dromara.dms.mapper.DmsBillsLubeInstanceMapper;
import org.dromara.dms.service.IDmsBillsLubeInstanceActivityService;
@ -21,10 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* Service
@ -127,101 +127,16 @@ public class DmsBillsLubeInstanceActivityServiceImpl implements IDmsBillsLubeIns
add.setHandleUserId(userId);
add.setHandleBy(username);
/* fixme:京源的工作流程 */
// 如果当前步骤不是第一步
if (add.getProcessStepOrder() != 1) {
// 如果是最后一步,执行结束流程
/* if (add.getProcessStepOrder() == add.getWfLength()) {
// 设置结束信息
add.setEndTime(DateUtils.getNowDate());
add.setHandleUserId(userId);
add.setHandleBy(username);
add.setHandleTime(DateUtils.getNowDate());
// 查询该润滑实例的所有相关活动
MPJLambdaWrapper<DmsBillsLubeInstanceActivity> wrapper = JoinWrappers.lambda(DmsBillsLubeInstanceActivity.class)
.selectAll(DmsBillsLubeInstanceActivity.class)
.eq(DmsBillsLubeInstanceActivity::getLubeInstanceId, add.getLubeInstanceId());
List<DmsBillsLubeInstanceActivityVo> activities = baseMapper.selectJoinList(DmsBillsLubeInstanceActivityVo.class, wrapper);
// 插入新的润滑工单实例活动记录
boolean flag = baseMapper.insert(add) > 0;
// 更新所有相关活动的处理状态为"0"
for (DmsBillsLubeInstanceActivityVo activity : activities) {
DmsBillsLubeInstanceActivityBo updateBo = new DmsBillsLubeInstanceActivityBo();
updateBo.setInstanceActivityId(activity.getInstanceActivityId());
updateBo.setProcessHandleStatus("0");
this.updateByBo(updateBo);
//更新润滑工单的状态
DmsBillsLubeInstanceVo dmsBillsLubeInstanceVo = dmsBillsLubeInstanceMapper.selectVoById(add.getLubeInstanceId());
if(add.getProcessStepOrder()==2L){//如果是第二步就更新为润滑中
dmsBillsLubeInstanceVo.setLubeStatus("2");
}else if (add.getProcessStepOrder()==3L){//如果是第三步就更新为润滑结束
dmsBillsLubeInstanceVo.setLubeStatus("3");
dmsBillsLubeInstanceVo.setRealEndTime(new Date());
}
dmsBillsLubeInstanceMapper.updateById(MapstructUtils.convert(dmsBillsLubeInstanceVo, DmsBillsLubeInstance.class));
// 更新润滑工单实例的状态和实际结束时间
MPJLambdaWrapper<DmsBillsLubeInstance> instanceWrapper = JoinWrappers.lambda(DmsBillsLubeInstance.class)
.selectAll(DmsBillsLubeInstance.class)
.eq(DmsBillsLubeInstance::getLubeInstanceId, add.getLubeInstanceId());
DmsBillsLubeInstanceVo instance = dmsBillsLubeInstanceMapper.selectJoinOne(DmsBillsLubeInstanceVo.class, instanceWrapper);
DmsBillsLubeInstanceBo updateInstance = new DmsBillsLubeInstanceBo();
updateInstance.setLubeInstanceId(instance.getLubeInstanceId());
updateInstance.setLubeStatus("2"); // 完成状态
updateInstance.setRealEndTime(DateUtils.getNowDate());
dmsBillsLubeInstanceMapper.updateById(MapstructUtils.convert(updateInstance, DmsBillsLubeInstance.class));
// 创建润滑记录相关代码暂时注释
DmsRecordLube dmsRecordLube = new DmsRecordLube();
dmsRecordLube.setPlanLubeId(instance.getPlanLubeId());
dmsRecordLube.setBillsLubeCode(instance.getBillsLubeCode());
dmsRecordLube.setLubeGroup(add.getLubeGroup());
dmsRecordLube.setLubeLevel(add.getLubeLevel());
dmsRecordLube.setLubeSupervisor(add.getLubeSupervisor());
dmsRecordLube.setLubeStatus(instance.getLubeStatus());
dmsRecordLube.setPlanBeginTime(instance.getPlanBeginTime());
dmsRecordLube.setRealBeginTime(instance.getRealBeginTime());
dmsRecordLube.setPlanEndTime(instance.getPlanEndTime());
dmsRecordLube.setRealEndTime(instance.getRealEndTime());
if (flag) {
bo.setInstanceActivityId(add.getInstanceActivityId());
}
return flag;
}
// 中间步骤的处理逻辑
else {
// 如果是第二步,更新润滑工单实例的实际开始时间
if (add.getProcessStepOrder() == 2) {
DmsBillsLubeInstanceBo updateInstance = new DmsBillsLubeInstanceBo();
updateInstance.setLubeInstanceId(add.getLubeInstanceId());
updateInstance.setRealBeginTime(DateUtils.getNowDate());
dmsBillsLubeInstanceMapper.updateById(MapstructUtils.convert(updateInstance, DmsBillsLubeInstance.class));
}
// 查询前一个步骤的活动
MPJLambdaWrapper<DmsBillsLubeInstanceActivity> prevWrapper = JoinWrappers.lambda(DmsBillsLubeInstanceActivity.class)
.selectAll(DmsBillsLubeInstanceActivity.class)
.eq(DmsBillsLubeInstanceActivity::getLubeInstanceId, add.getLubeInstanceId())
.eq(DmsBillsLubeInstanceActivity::getProcessStepOrder, add.getProcessStepOrder() - 1);
List<DmsBillsLubeInstanceActivityVo> prevActivities = baseMapper.selectJoinList(DmsBillsLubeInstanceActivityVo.class, prevWrapper);
if (!prevActivities.isEmpty()) {
// 更新前一个步骤的活动状态和时间信息
DmsBillsLubeInstanceActivityBo updatePrev = new DmsBillsLubeInstanceActivityBo();
updatePrev.setInstanceActivityId(prevActivities.get(0).getInstanceActivityId());
updatePrev.setProcessHandleStatus("3");
updatePrev.setEndTime(DateUtils.getNowDate());
updatePrev.setHandleTime(DateUtils.getNowDate());
updatePrev.setHandleBy(username);
updatePrev.setHandleUserId(userId);
this.updateByBo(updatePrev);
}
}*/
}
// 插入新的润滑工单实例活动记录
boolean flag = baseMapper.insert(add) > 0;

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.constant.DmsConstants;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.DateUtils;
@ -24,6 +25,10 @@ import org.dromara.dms.domain.vo.DmsPlanLubeDetailVo;
import org.dromara.dms.domain.vo.DmsPlanLubeVo;
import org.dromara.dms.mapper.*;
import org.dromara.dms.service.IDmsBillsLubeInstanceService;
import org.dromara.workflow.api.RemoteWorkflowService;
import org.dromara.workflow.api.domain.RemoteCompleteTask;
import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
@ -51,7 +56,8 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
private final DmsPlanLubeDetailMapper dmsPlanLubeDetailMapper;
@DubboReference
private final RemoteWorkflowService remoteWorkflowService;
/**
*
@ -319,8 +325,24 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean startLube(DmsBillsLubeDetailBo bo) {
Long lubeInstanceId = bo.getLubeInstanceId();
// 根据润滑实例ID查询润滑实例信息
DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(bo.getLubeInstanceId());
DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(lubeInstanceId);
//FIXME:需测试能否启动工作流
RemoteStartProcess startProcess = new RemoteStartProcess();
startProcess.setFlowCode(DmsConstants.DMS_BILLS_LUBE_INSTANCE_WF_CODE);
String businessId = lubeInstanceId.toString();
startProcess.setBusinessId(businessId);
RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(startProcess);
Long taskId = remoteStartProcessReturn.getTaskId();
if (taskId == null) {
throw new ServiceException("流程启动失败");
}else if (taskId != null) {
dmsBillsLubeInstance.setWfDefinitionId(taskId);
}
DmsBillsLubeInstanceBo dmsBillsLubeInstanceBo = MapstructUtils.convert(dmsBillsLubeInstance, DmsBillsLubeInstanceBo.class);
this.updateByBo(dmsBillsLubeInstanceBo);
// 获取润滑状态,如果为空则设置为待润滑状态
String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ?
@ -375,6 +397,12 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
// 根据润滑实例ID查询润滑实例信息
DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(lubeInstanceId);
//fIXME:需测试能否完成工作流
Long taskId = dmsBillsLubeInstance.getWfDefinitionId();
RemoteCompleteTask completeTask = new RemoteCompleteTask();
completeTask.setTaskId(taskId);
boolean taskFlag = remoteWorkflowService.completeTask(completeTask);
// 获取润滑状态,如果为空则设置为待润滑状态
String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ?
DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE : dmsBillsLubeInstance.getLubeStatus();
@ -422,9 +450,10 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
bo.setEndTime(currentDate);
//bo.setUpdateBy(userId);
bo.setMaintStatus(String.valueOf(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE));
dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class));
int i = dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class));
return 1;
return i;
}
@ -445,6 +474,8 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
throw new ServiceException("记录不存在");
}
entity.setWfDefinitionId(wfDefinitionId);
entity.setLubeStatus("1");//待润滑
entity.setRealBeginTime(new Date());
return baseMapper.updateById(entity) > 0;
}

@ -296,13 +296,9 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS
if (maintStatus.equals(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT)) {//待保养
dmsBillsMaintInstance.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_MAINTING);
dmsBillsMaintInstance.setRealBeginTime(currentDate);
baseMapper.updateById(dmsBillsMaintInstance);
dmsBillsMaintDetail.setBeginTime(currentDate);
dmsBillsMaintDetail.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_MAINTING);
dmsBillsMaintDetailMapper.updateById(dmsBillsMaintDetail);
}
@ -331,24 +327,34 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS
@Override
@Transactional(rollbackFor = Exception.class)
public int completeMaint(DmsBillsMaintDetail dmsBillsMaintDetail) {
// 获取保养工单明细中的项目列表
List<DmsBillsMaintDetailProjectVo> dmsBillsMaintDetailProjects = dmsBillsMaintDetail.getDmsBillsMaintDetailProjectList();
// 获取保养实例ID
Long maintInstanceId = dmsBillsMaintDetail.getMaintInstanceId();
// 根据保养实例ID查询保养实例信息
DmsBillsMaintInstance dmsBillsMaintInstance = baseMapper.
selectDmsBillsMaintInstanceByMaintInstanceId(maintInstanceId);
// 获取保养状态,如果为空则设置为待保养状态
Long maintStatus = dmsBillsMaintInstance.getMaintStatus() == null ?
DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT : dmsBillsMaintInstance.getMaintStatus();
// 如果保养状态为已完成,抛出异常提示已经保养完成
if (maintStatus.equals(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE)) {//保养完成
throw new ServiceException("已经保养完成");
}
// 如果保养状态为待保养,抛出异常提示请先执行开始保养
if (maintStatus.equals(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_TO_MAINT)) {//待保养
throw new ServiceException("请先执行开始保养");
}
// 获取当前日期时间
Date currentDate = new Date();
// 创建查询保养明细的对象
DmsBillsMaintDetailBo queryMaintDetail = new DmsBillsMaintDetailBo();
// 设置查询条件为保养实例ID
queryMaintDetail.setMaintInstanceId(maintInstanceId);
// 查询保养明细列表
List<DmsBillsMaintDetailVo> maintDetails = dmsBillsMaintDetailService.queryList(queryMaintDetail);
/**获取未完成的保养明细,并且需要排除当前提交完成的保养明细*/
@ -360,26 +366,36 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS
/**如果已经没有未完成的,则需要将工单修改成已完成,并更新结束时间*/
if (inCompleteMaintDetails == null || inCompleteMaintDetails.isEmpty()) {
// 设置保养状态为已完成
dmsBillsMaintInstance.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE);
// 设置实际结束时间为当前时间
dmsBillsMaintInstance.setRealEndTime(currentDate);
// 更新保养实例信息
baseMapper.updateById(dmsBillsMaintInstance);
}
//更新保养工单明细项目信息
for (DmsBillsMaintDetailProjectVo dmsBillsMaintDetailProject : dmsBillsMaintDetailProjects) {
// 设置项目状态为已完成
dmsBillsMaintDetailProject.setMaintProjectStatus(DmsConstants.DMS_MAINT_PROJECT_STATUS_COMPLETE);
// 转换项目对象类型
DmsBillsMaintDetailProject dmsBillsMaintInstanceProject = MapstructUtils.convert(dmsBillsMaintDetailProject, DmsBillsMaintDetailProject.class);
// 更新项目信息
dmsBillsMaintInstanceProjectMapper.updateById(dmsBillsMaintInstanceProject);
}
// 设置保养明细的结束时间为当前时间
dmsBillsMaintDetail.setEndTime(currentDate);
// 设置保养明细的更新时间为当前时间
dmsBillsMaintDetail.setUpdateTime(currentDate);
// 设置保养明细的状态为已完成
dmsBillsMaintDetail.setMaintStatus(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE);
// 更新保养明细信息
dmsBillsMaintDetailMapper.updateById(dmsBillsMaintDetail);
// 返回结果1表示成功
return 1;
}
@ -400,6 +416,8 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS
throw new ServiceException("记录不存在");
}
entity.setWfDefinitionId(wfDefinitionId);
entity.setMaintStatus(1L);
entity.setRealBeginTime(new Date());
return baseMapper.updateById(entity) > 0;
}

@ -1,5 +1,6 @@
package org.dromara.dms.service.impl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -9,13 +10,19 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.dms.domain.DmsBillsMaintInstance;
import org.dromara.dms.domain.bo.DmsBillsMaintInstanceBo;
import org.dromara.dms.domain.vo.DmsBillsMaintInstanceVo;
import org.dromara.dms.mapper.DmsBillsMaintInstanceMapper;
import org.springframework.stereotype.Service;
import org.dromara.dms.domain.bo.DmsMaintInstanceActivityBo;
import org.dromara.dms.domain.vo.DmsMaintInstanceActivityVo;
import org.dromara.dms.domain.DmsMaintInstanceActivity;
import org.dromara.dms.mapper.DmsMaintInstanceActivityMapper;
import org.dromara.dms.service.IDmsMaintInstanceActivityService;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -32,6 +39,8 @@ public class DmsMaintInstanceActivityServiceImpl implements IDmsMaintInstanceAct
private final DmsMaintInstanceActivityMapper baseMapper;
private final DmsBillsMaintInstanceMapper dmsBillsMaintInstanceMapper;
/**
* ;
*
@ -101,9 +110,21 @@ public class DmsMaintInstanceActivityServiceImpl implements IDmsMaintInstanceAct
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public DmsMaintInstanceActivityVo insertByBo(DmsMaintInstanceActivityBo bo) {
DmsMaintInstanceActivity add = MapstructUtils.convert(bo, DmsMaintInstanceActivity.class);
validEntityBeforeSave(add);
DmsBillsMaintInstanceVo dmsBillsMaintInstanceVo = dmsBillsMaintInstanceMapper.selectVoById(bo.getMaintInstanceId());
if (add.getProcessStepOrder() == 2L){
dmsBillsMaintInstanceVo.setMaintStatus(2L);
}else if(add.getProcessStepOrder()== 3L){
dmsBillsMaintInstanceVo.setMaintStatus(3L);
dmsBillsMaintInstanceVo.setRealEndTime(new Date());
}
DmsBillsMaintInstance updateInstance = MapstructUtils.convert(dmsBillsMaintInstanceVo,DmsBillsMaintInstance.class);
dmsBillsMaintInstanceMapper.updateById(updateInstance);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setInstanceActivityId(add.getInstanceActivityId());

@ -195,6 +195,7 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService {
if (add.getMaintLevel().equals(3l)){
cron = "0 0 "+add.getHour()+" "+day+" "+ month+" ? "+year;
}
bo.setCronExpression(cron);//cron表达式
String planMaintCode = Seq.getId(Seq.planMaintSeqType, Seq.planMaintCode);
// String cron = "* * "+dmsPlanMaint.getHour()+" ? * "+week;
/* SysJob job = new SysJob();

@ -4,4 +4,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.dms.mapper.DmsBaseMachineInfoMapper">
<select id="likeDeviceName" resultType="org.dromara.dms.domain.vo.DmsBaseMachineInfoVo"
parameterType="java.lang.String">
select
x.*
from
prod_base_machine_info x
where
x.machine_name like concat('%',#{deviceName},'%')
</select>
</mapper>

@ -5,7 +5,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="org.dromara.dms.mapper.DmsBillsFaultInstanceMapper">
<resultMap type="DmsBillsFaultInstance" id="DmsBillsFaultInstanceResult">
<resultMap type="DmsBillsFaultInstanceVo" id="DmsBillsFaultInstanceResult">
<result property="repairInstanceId" column="repair_instance_id" />
<result property="faultSourceType" column="fault_source_type" />
<result property="faultSourceId" column="fault_source_id" />
@ -225,4 +225,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</mapper>

@ -4,10 +4,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.dms.mapper.DmsBillsInspectInstanceMapper">
<resultMap type="DmsBillsInspectInstanceVo" id="DmsBillsInspectInstanceResult">
<resultMap type="org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo" id="DmsBillsInspectInstanceResult">
<result property="inspectInstanceId" column="inspect_instance_id" />
<result property="planInspectId" column="plan_inspect_id" />
<result property="wfProcessId" column="wf_process_id" />
<result property="wfDefinitionId" column="wf_definition_id" />
<result property="inspectType" column="inspect_type" />
<result property="billsInspectCode" column="bills_inspect_code" />
<result property="planBeginTime" column="plan_begin_time" />
@ -30,7 +30,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select
a.inspect_instance_id,
a.plan_inspect_id,
a.wf_process_id,
a.inspect_type,
a.bills_inspect_code,
a.plan_begin_time,
@ -38,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.real_begin_time,
a.real_end_time,
a.inspect_status,
a.wf_definition_id,
b.remark,
b.create_by,
a.create_time,
@ -61,4 +60,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where a.inspect_type = 1
</select>
<select id="selectNewestDmsBillsInspectInstance" parameterType="DmsBillsInspectInstance" resultMap="DmsBillsInspectInstanceResult">
select
dbii.inspect_instance_id,
dbii.plan_inspect_id,
dbii.wf_definition_id,
dbii.inspect_type,
dbii.bills_inspect_code,
dbii.plan_begin_time,
dbii.plan_end_time,
dbii.real_begin_time,
dbii.real_end_time,
dbii.inspect_status,
dbii.create_time,
dbir.route_name,a.plan_inspect_code,
a.remark inspectDesc
from
dms_bills_inspect_instance dbii
left join dms_base_inspect_route dbir on
dbii.inspect_route_id = dbir.inspect_route_id left join dms_plan_inspect a on dbii.plan_inspect_id = a.plan_inspect_id
<where>
<if test="inspectRouteId != null "> and dbii.inspect_route_id = #{inspectRouteId}</if>
<if test="wfProcessId != null "> and dbii.wf_process_id = #{wfProcessId}</if>
<if test="inspectType != null and inspectType != ''"> and dbii.inspect_type = #{inspectType}</if>
<if test="billsInspectCode != null and billsInspectCode != ''"> and dbii.bills_inspect_code = #{billsInspectCode}</if>
<if test="inspectStatus != null and inspectStatus != ''"> and dbii.inspect_status = #{inspectStatus}</if>
<if test="inspectStatusStr != null and inspectStatusStr != ''"> and dbii.inspect_status in (${inspectStatusStr})</if>
<if test="isFlag != null and isFlag != ''"> and dbii.is_flag = #{isFlag}</if>
</where>
order by dbii.create_time desc limit 1
</select>
</mapper>

@ -55,4 +55,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectRepairInstanceId" resultType="java.lang.Long" parameterType="java.lang.Long">
SELECT x.repair_instance_id FROM dms_fault_instance_activity x where x.instance_activity_id =#{activityId}
</select>
<delete id="deleteByTargetId" parameterType="java.lang.Long">
delete FROM dms_instance_file where target_id =#{activityId}
</delete>
<insert id="insertParts" parameterType="java.util.List">
insert into dms_fault_compents_parts(fault_id,part_name,part_specifications,amount)
values
<foreach collection="list" item="item" index="index" open="" close="" separator=",">
(#{item.faultId},#{item.partName},#{item.partSpecifications},#{item.amount})
</foreach>
</insert>
</mapper>

@ -57,5 +57,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where x.inspect_standard_id = #{inspectStandard}
</select>
<select id="selectDmsInspectInstanceDetailJoinList" parameterType="DmsInspectInstanceDetail" resultMap="DmsInspectInstanceDetailResult">
<include refid="selectDmsInspectInstanceDetailJoinVo"/>
<where>
<if test="deviceCode != null and deviceCode != ''"> and dbdl.device_code = #{deviceCode}</if>
<if test="inspectInstanceId != null "> and diid.inspect_instance_id = #{inspectInstanceId}</if>
<if test="lineStep != null "> and diid.line_step = #{lineStep}</if>
<if test="realLineStep != null "> and diid.real_line_step = #{realLineStep}</if>
<if test="deviceId != null "> and diid.device_id = #{deviceId}</if>
<if test="instanceDetailStatus != null and instanceDetailStatus != ''"> and diid.instance_detail_status = #{instanceDetailStatus}</if>
<if test="inspectStandard != null and inspectStandard != ''"> and diid.inspect_standard = #{inspectStandard}</if>
<if test="inspectStatus != null and inspectStatus != ''"> and diid.inspect_status = #{inspectStatus}</if>
</where>
</select>
</mapper>

@ -4,4 +4,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.dms.mapper.DmsInstanceFileMapper">
<insert id="batchDmsInstanceFile">
insert into dms_instance_file( instance_file_id, target_type, target_id, file_path) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.instanceFileId}, #{item.targetType}, #{item.targetId}, #{item.filePath})
</foreach>
</insert>
</mapper>

@ -93,7 +93,6 @@ public class ProdShiftChangeServiceImpl implements IProdShiftChangeService {
.leftJoin(ProdBaseMachineInfo.class,ProdBaseMachineInfo::getMachineId,ProdShiftChange::getMachineId)
.eq(bo.getShiftChangeId() != null, ProdShiftChange::getShiftChangeId, bo.getShiftChangeId())
.eq(bo.getShiftChangeTime() != null, ProdShiftChange::getShiftChangeTime, bo.getShiftChangeTime())
.eq(bo.getMachineId() != null, ProdShiftChange::getMachineId, bo.getMachineId())

Loading…
Cancel
Save