diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/datapermission/QMSMultiDataPermissionHandler.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/datapermission/QMSMultiDataPermissionHandler.java index 7aa8e605..3cfc3d7b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/datapermission/QMSMultiDataPermissionHandler.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/datapermission/QMSMultiDataPermissionHandler.java @@ -131,6 +131,12 @@ public class QMSMultiDataPermissionHandler implements MultiDataPermissionHandler if (!DeptContextHolder.shouldIgnore() && ctxDeptId != null && ctxDeptId > 0L) { effectiveDeptIds = CollUtil.newHashSet(ctxDeptId); } + + //如果可以查看所有数据,直接跳过 + if (qmsDataPermission.getAll()) { + return null; + } + // 情况一:仅当不存在上下文部门时,且 ALL 可查看全部,才无需拼接条件;若存在上下文部门则仍需基于该部门过滤 if (ctxDeptId == null && qmsDataPermission.getAll()) { return null; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java index 6537b85d..72176b46 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java @@ -73,6 +73,11 @@ public class DeviceApplyController extends AbstractFileUploadController implemen return deviceApplyService.addDetail(param); } + @RequestMapping("/submitDeviceApply") + @Operation(summary = "提交申请") + public CommonResult submitDeviceApply(@RequestBody DeviceApplySaveReqVO param) { + return deviceApplyService.submitDeviceApply(param); + } @RequestMapping("/removeDetail") @Operation(summary = "删除明细") @@ -100,7 +105,7 @@ public class DeviceApplyController extends AbstractFileUploadController implemen @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除设备通用流程,验收、降级、停用、报废、还原、启用") - @PreAuthorize("@ss.hasPermission('qms:device-apply:delete')") + @PreAuthorize("@ss.hasPermission('qms:device-apply:delete')") public CommonResult deleteDeviceApplyList(@RequestBody BatchDeleteReqVO req) { deviceApplyService.deleteDeviceApplyListByIds(req.getIds()); return success(true); @@ -109,7 +114,7 @@ public class DeviceApplyController extends AbstractFileUploadController implemen @GetMapping("/get") @Operation(summary = "获得设备通用流程,验收、降级、停用、报废、还原、启用") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('qms:device-apply:query')") +// @PreAuthorize("@ss.hasPermission('qms:device-apply:query')") public CommonResult getDeviceApply(@RequestParam("id") Long id) { DeviceApplyDO deviceApply = deviceApplyService.getDeviceApply(id); return success(BeanUtils.toBean(deviceApply, DeviceApplyRespVO.class)); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyDetailController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyDetailController.java index d0f19941..5dbd7437 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyDetailController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyDetailController.java @@ -57,20 +57,20 @@ public class DeviceApplyDetailController extends AbstractFileUploadController im @GetMapping("/list") @Operation(summary = "获得设备通用流程分页") public CommonResult> list(DeviceApplyDetailPageReqVO reqVO) { - List list = deviceApplyDetailService.selectList(reqVO); - return success(BeanUtils.toBean(list, DeviceApplyDetailRespVO.class)); + List list = deviceApplyDetailService.selectListWithDeviceInfo(reqVO); + return success(list); } @PostMapping("/create") @Operation(summary = "创建设备通用流程明细") - @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:create')") +// @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:create')") public CommonResult createDeviceApplyDetail(@Valid @RequestBody DeviceApplyDetailSaveReqVO createReqVO) { return success(deviceApplyDetailService.createDeviceApplyDetail(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新设备通用流程明细") - @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:update')") +// @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:update')") public CommonResult updateDeviceApplyDetail(@Valid @RequestBody DeviceApplyDetailSaveReqVO updateReqVO) { deviceApplyDetailService.updateDeviceApplyDetail(updateReqVO); return success(true); @@ -79,7 +79,7 @@ public class DeviceApplyDetailController extends AbstractFileUploadController im @DeleteMapping("/delete") @Operation(summary = "删除设备通用流程明细") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:delete')") +// @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:delete')") public CommonResult deleteDeviceApplyDetail(@RequestParam("id") Long id) { deviceApplyDetailService.deleteDeviceApplyDetail(id); return success(true); @@ -88,7 +88,7 @@ public class DeviceApplyDetailController extends AbstractFileUploadController im @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除设备通用流程明细") - @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:delete')") + @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:delete')") public CommonResult deleteDeviceApplyDetailList(@RequestBody BatchDeleteReqVO req) { deviceApplyDetailService.deleteDeviceApplyDetailListByIds(req.getIds()); return success(true); @@ -97,7 +97,7 @@ public class DeviceApplyDetailController extends AbstractFileUploadController im @GetMapping("/get") @Operation(summary = "获得设备通用流程明细") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:query')") +// @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:query')") public CommonResult getDeviceApplyDetail(@RequestParam("id") Long id) { DeviceApplyDetailDO deviceApplyDetail = deviceApplyDetailService.getDeviceApplyDetail(id); return success(BeanUtils.toBean(deviceApplyDetail, DeviceApplyDetailRespVO.class)); @@ -105,9 +105,9 @@ public class DeviceApplyDetailController extends AbstractFileUploadController im @GetMapping("/page") @Operation(summary = "获得设备通用流程明细分页") - @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:query')") +// @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:query')") public CommonResult> getDeviceApplyDetailPage(@Valid DeviceApplyDetailPageReqVO pageReqVO) { - PageResult pageResult = deviceApplyDetailService.getDeviceApplyDetailPage(pageReqVO); + PageResult pageResult = deviceApplyDetailService.getDeviceApplyDetailPage(pageReqVO); return success(BeanUtils.toBean(pageResult, DeviceApplyDetailRespVO.class)); } @@ -115,13 +115,11 @@ public class DeviceApplyDetailController extends AbstractFileUploadController im @Operation(summary = "导出设备通用流程明细 Excel") @PreAuthorize("@ss.hasPermission('qms:device-apply-detail:export')") @ApiAccessLog(operateType = EXPORT) - public void exportDeviceApplyDetailExcel(@Valid DeviceApplyDetailPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + public void exportDeviceApplyDetailExcel(@Valid DeviceApplyDetailPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = deviceApplyDetailService.getDeviceApplyDetailPage(pageReqVO).getList(); + List list = deviceApplyDetailService.getDeviceApplyDetailPage(pageReqVO).getList(); // 导出 Excel - ExcelUtils.write(response, "设备通用流程明细.xls", "数据", DeviceApplyDetailRespVO.class, - BeanUtils.toBean(list, DeviceApplyDetailRespVO.class)); + ExcelUtils.write(response, "设备通用流程明细.xls", "数据", DeviceApplyDetailRespVO.class,list); } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java index c4f9c411..2a32ac27 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java @@ -105,14 +105,14 @@ public class DeviceMaintainController extends AbstractFileUploadController imple @PostMapping("/create") @Operation(summary = "创建设备-点检、保养记录") - @PreAuthorize("@ss.hasPermission('qms:device-maintain:create')") +// @PreAuthorize("@ss.hasPermission('qms:device-maintain:create')") public CommonResult createDeviceMaintain(@Valid @RequestBody DeviceMaintainSaveReqVO createReqVO) { return success(deviceMaintainService.createDeviceMaintain(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新设备-点检、保养记录") - @PreAuthorize("@ss.hasPermission('qms:device-maintain:update')") +// @PreAuthorize("@ss.hasPermission('qms:device-maintain:update')") public CommonResult updateDeviceMaintain(@Valid @RequestBody DeviceMaintainSaveReqVO updateReqVO) { deviceMaintainService.updateDeviceMaintain(updateReqVO); return success(true); @@ -121,7 +121,7 @@ public class DeviceMaintainController extends AbstractFileUploadController imple @DeleteMapping("/delete") @Operation(summary = "删除设备-点检、保养记录") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('qms:device-maintain:delete')") +// @PreAuthorize("@ss.hasPermission('qms:device-maintain:delete')") public CommonResult deleteDeviceMaintain(@RequestParam("id") Long id) { deviceMaintainService.deleteDeviceMaintain(id); return success(true); @@ -130,7 +130,7 @@ public class DeviceMaintainController extends AbstractFileUploadController imple @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除设备-点检、保养记录") - @PreAuthorize("@ss.hasPermission('qms:device-maintain:delete')") + @PreAuthorize("@ss.hasPermission('qms:device-maintain:delete')") public CommonResult deleteDeviceMaintainList(@RequestBody BatchDeleteReqVO req) { deviceMaintainService.deleteDeviceMaintainListByIds(req.getIds()); return success(true); @@ -146,7 +146,7 @@ public class DeviceMaintainController extends AbstractFileUploadController imple @GetMapping("/page") @Operation(summary = "获得设备-点检、保养记录分页") - @PreAuthorize("@ss.hasPermission('qms:device-maintain:query')") +// @PreAuthorize("@ss.hasPermission('qms:device-maintain:query')") public CommonResult> getDeviceMaintainPage(@Valid DeviceMaintainPageReqVO pageReqVO) { PageResult pageResult = deviceMaintainService.getDeviceMaintainPage(pageReqVO); return success(BeanUtils.toBean(pageResult, DeviceMaintainRespVO.class)); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyDetailRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyDetailRespVO.java index fbc1ceb6..02850a4c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyDetailRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyDetailRespVO.java @@ -44,4 +44,42 @@ public class DeviceApplyDetailRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + //============设备大类属性==================== + @Schema(description = "大类名称", example = "王五") + @ExcelProperty("大类名称") + private String productName; + + @Schema(description = "型号") + @ExcelProperty("型号") + private String modelNo; + + @Schema(description = "技术指标") + @ExcelProperty("技术指标") + private String parameter; + + @Schema(description = "制造商") + @ExcelProperty("制造商") + private String manufacturer; + + + //============设备实例属性==================== + @Schema(description = "设备名称", example = "张三") + @ExcelProperty("设备名称") + private String deviceName; + + @Schema(description = "别名") + @ExcelProperty("别名") + private String alias; + + @Schema(description = "管理编号") + @ExcelProperty("管理编号") + private String deviceCode; + + @Schema(description = "出厂编号") + @ExcelProperty("出厂编号") + private String factoryCode; + + @Schema(description = "存放位置") + @ExcelProperty("存放位置") + private String position; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceInfomationSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceInfomationSaveReqVO.java index 7c087f37..5b487dc2 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceInfomationSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceInfomationSaveReqVO.java @@ -101,8 +101,8 @@ public class DeviceInfomationSaveReqVO { @Schema(description = "自定义表单数据") private String customFormData; - @Schema(description = "设备图片") - private String photo; +// @Schema(description = "设备图片") +// private String photo; @Schema(description = "技术指标") private String deviceParameter; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceApplyDetailMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceApplyDetailMapper.java index b5964762..1aea65eb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceApplyDetailMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceApplyDetailMapper.java @@ -3,8 +3,12 @@ package com.zt.plat.module.qms.resource.device.dal.mapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX; +import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailRespVO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDetailDO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailPageReqVO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceProductDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -17,16 +21,42 @@ import java.util.List; @Mapper public interface DeviceApplyDetailMapper extends BaseMapperX { - default PageResult selectPage(DeviceApplyDetailPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() +// default PageResult selectPage(DeviceApplyDetailPageReqVO reqVO) { +// return selectPage(reqVO, new LambdaQueryWrapperX() +// .eqIfPresent(DeviceApplyDetailDO::getApplyId, reqVO.getApplyId()) +// .eqIfPresent(DeviceApplyDetailDO::getDeviceInfomationId, reqVO.getDeviceInfomationId()) +// .eqIfPresent(DeviceApplyDetailDO::getDeviceBorrowDetailId, reqVO.getDeviceBorrowDetailId()) +// .eqIfPresent(DeviceApplyDetailDO::getFormData, reqVO.getFormData()) +// .eqIfPresent(DeviceApplyDetailDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) +// .eqIfPresent(DeviceApplyDetailDO::getRemark, reqVO.getRemark()) +// .betweenIfPresent(DeviceApplyDetailDO::getCreateTime, reqVO.getCreateTime()) +// .orderByDesc(DeviceApplyDetailDO::getId)); +// } + + default PageResult selectPage(DeviceApplyDetailPageReqVO reqVO) { + return selectJoinPage(reqVO, DeviceApplyDetailRespVO.class, new MPJLambdaWrapperX() + .leftJoin(DeviceInfomationDO.class, DeviceInfomationDO::getId, DeviceApplyDetailDO::getDeviceInfomationId) + .leftJoin(DeviceProductDO.class, DeviceProductDO::getId, DeviceInfomationDO::getProductId) + .selectAll(DeviceApplyDetailDO.class) + .selectAs(DeviceProductDO::getName, DeviceApplyDetailRespVO::getProductName) + .selectAs(DeviceProductDO::getModelNo, DeviceApplyDetailRespVO::getModelNo) + .selectAs(DeviceProductDO::getParameter, DeviceApplyDetailRespVO::getParameter) + .selectAs(DeviceProductDO::getManufacturer, DeviceApplyDetailRespVO::getManufacturer) + .selectAs(DeviceInfomationDO::getDeviceName, DeviceApplyDetailRespVO::getDeviceName) + .selectAs(DeviceInfomationDO::getAlias, DeviceApplyDetailRespVO::getAlias) + .selectAs(DeviceInfomationDO::getDeviceCode, DeviceApplyDetailRespVO::getDeviceCode) + .selectAs(DeviceInfomationDO::getFactoryCode, DeviceApplyDetailRespVO::getFactoryCode) + .selectAs(DeviceInfomationDO::getPosition, DeviceApplyDetailRespVO::getPosition) .eqIfPresent(DeviceApplyDetailDO::getApplyId, reqVO.getApplyId()) .eqIfPresent(DeviceApplyDetailDO::getDeviceInfomationId, reqVO.getDeviceInfomationId()) + .inIfPresent(DeviceApplyDetailDO::getDeviceInfomationId, reqVO.getDeviceInfoIdList()) .eqIfPresent(DeviceApplyDetailDO::getDeviceBorrowDetailId, reqVO.getDeviceBorrowDetailId()) .eqIfPresent(DeviceApplyDetailDO::getFormData, reqVO.getFormData()) .eqIfPresent(DeviceApplyDetailDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) .eqIfPresent(DeviceApplyDetailDO::getRemark, reqVO.getRemark()) .betweenIfPresent(DeviceApplyDetailDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(DeviceApplyDetailDO::getId)); + .orderByDesc(DeviceApplyDetailDO::getId) + ); } default List selectList(DeviceApplyDetailPageReqVO reqVO) { @@ -42,5 +72,31 @@ public interface DeviceApplyDetailMapper extends BaseMapperX selectListWithDeviceInfo(DeviceApplyDetailPageReqVO reqVO) { + return selectJoinList(DeviceApplyDetailRespVO.class, new MPJLambdaWrapperX() + .leftJoin(DeviceInfomationDO.class, DeviceInfomationDO::getId, DeviceApplyDetailDO::getDeviceInfomationId) + .leftJoin(DeviceProductDO.class, DeviceProductDO::getId, DeviceInfomationDO::getProductId) + .selectAll(DeviceApplyDetailDO.class) + .selectAs(DeviceProductDO::getName, DeviceApplyDetailRespVO::getProductName) + .selectAs(DeviceProductDO::getModelNo, DeviceApplyDetailRespVO::getModelNo) + .selectAs(DeviceProductDO::getParameter, DeviceApplyDetailRespVO::getParameter) + .selectAs(DeviceProductDO::getManufacturer, DeviceApplyDetailRespVO::getManufacturer) + .selectAs(DeviceInfomationDO::getDeviceName, DeviceApplyDetailRespVO::getDeviceName) + .selectAs(DeviceInfomationDO::getAlias, DeviceApplyDetailRespVO::getAlias) + .selectAs(DeviceInfomationDO::getDeviceCode, DeviceApplyDetailRespVO::getDeviceCode) + .selectAs(DeviceInfomationDO::getFactoryCode, DeviceApplyDetailRespVO::getFactoryCode) + .selectAs(DeviceInfomationDO::getPosition, DeviceApplyDetailRespVO::getPosition) + .eqIfPresent(DeviceApplyDetailDO::getApplyId, reqVO.getApplyId()) + .eqIfPresent(DeviceApplyDetailDO::getDeviceInfomationId, reqVO.getDeviceInfomationId()) + .inIfPresent(DeviceApplyDetailDO::getDeviceInfomationId, reqVO.getDeviceInfoIdList()) + .eqIfPresent(DeviceApplyDetailDO::getDeviceBorrowDetailId, reqVO.getDeviceBorrowDetailId()) + .eqIfPresent(DeviceApplyDetailDO::getFormData, reqVO.getFormData()) + .eqIfPresent(DeviceApplyDetailDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) + .eqIfPresent(DeviceApplyDetailDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(DeviceApplyDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DeviceApplyDetailDO::getId) + ); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/enums/DeviceBizEnum.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/enums/DeviceBizEnum.java new file mode 100644 index 00000000..191116fb --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/enums/DeviceBizEnum.java @@ -0,0 +1,67 @@ +package com.zt.plat.module.qms.resource.device.enums; + +public enum DeviceBizEnum { + + accept("Accept", "验收"), + repair("Repair", "维修"), + demote("Demote", "降级"), + scrap("Scrap", "报废"), + disable("Disable", "停用"), + enable("Enable", "启用"), + lend("Lend", "外借"), + giveback("Giveback", "归还"); + + + private String code; + private String describe; + + + DeviceBizEnum(String code, String describe){ + this.code = code; + this.describe = describe; + } + + public static DeviceBizEnum getByCode(String code) { + for (DeviceBizEnum c : DeviceBizEnum.values()) { + if (c.getCode().equals(code)) { + return c; + } + } + return null; + } + + public static String getDescribe(String code) { + for (DeviceBizEnum c : DeviceBizEnum.values()) { + if (c.getCode().equals(code)) { + return c.describe; + } + } + return code; + } + + public static String getCode(String describe) { + for (DeviceBizEnum c : DeviceBizEnum.values()) { + if (c.getDescribe().equals(describe)) { + return c.code; + } + } + return describe; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDescribe() { + return describe; + } + + public void setDescribe(String describe) { + this.describe = describe; + } + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailService.java index ca31f320..9a6cc926 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailService.java @@ -16,8 +16,12 @@ import com.zt.plat.framework.common.pojo.PageResult; */ public interface DeviceApplyDetailService { + List selectListWithDeviceInfo(DeviceApplyDetailPageReqVO reqVO); + List selectList(DeviceApplyDetailPageReqVO reqVO); + List selectListByApplyId(Long applyId); + void insertBatch(List list); /** @@ -63,6 +67,6 @@ public interface DeviceApplyDetailService { * @param pageReqVO 分页查询 * @return 设备通用流程明细分页 */ - PageResult getDeviceApplyDetailPage(DeviceApplyDetailPageReqVO pageReqVO); + PageResult getDeviceApplyDetailPage(DeviceApplyDetailPageReqVO pageReqVO); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailServiceImpl.java index 897abf87..5c42faa4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyDetailServiceImpl.java @@ -1,6 +1,7 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailSaveReqVO; @@ -38,6 +39,18 @@ public class DeviceApplyDetailServiceImpl implements DeviceApplyDetailService { return deviceApplyDetailMapper.selectList(reqVO); } + @Override + public List selectListWithDeviceInfo(DeviceApplyDetailPageReqVO reqVO) { + return deviceApplyDetailMapper.selectListWithDeviceInfo(reqVO); + } + + @Override + public List selectListByApplyId(Long applyId) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DeviceApplyDetailDO::getApplyId, applyId); + return deviceApplyDetailMapper.selectList(query); + } + @Override @Transactional(rollbackFor = Exception.class) public void insertBatch(List list) { @@ -71,12 +84,12 @@ public class DeviceApplyDetailServiceImpl implements DeviceApplyDetailService { } @Override - public void deleteDeviceApplyDetailListByIds(List ids) { + public void deleteDeviceApplyDetailListByIds(List ids) { // 校验存在 validateDeviceApplyDetailExists(ids); // 删除 deviceApplyDetailMapper.deleteByIds(ids); - } + } private void validateDeviceApplyDetailExists(List ids) { List list = deviceApplyDetailMapper.selectByIds(ids); @@ -97,7 +110,7 @@ public class DeviceApplyDetailServiceImpl implements DeviceApplyDetailService { } @Override - public PageResult getDeviceApplyDetailPage(DeviceApplyDetailPageReqVO pageReqVO) { + public PageResult getDeviceApplyDetailPage(DeviceApplyDetailPageReqVO pageReqVO) { return deviceApplyDetailMapper.selectPage(pageReqVO); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java index 6d4634e9..50d16b17 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java @@ -37,6 +37,8 @@ public interface DeviceApplyService { CommonResult saveDeviceApply(@Valid DeviceApplySaveReqVO updateReqVO); + CommonResult submitDeviceApply(DeviceApplySaveReqVO param); + /** * 更新设备通用流程,验收、降级、停用、报废、还原、启用 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java index b4cd4182..65c96b05 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java @@ -3,15 +3,23 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.parser.Feature; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; +import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import com.zt.plat.module.qms.api.task.BMPCallbackInterface; +import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO; +import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentMainRespVO; +import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO; import com.zt.plat.module.qms.common.data.dal.dataobject.DataCollectionDO; import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO; import com.zt.plat.module.qms.common.data.service.DataCollectionService; +import com.zt.plat.module.qms.common.data.service.DataKeyCheckService; import com.zt.plat.module.qms.common.data.service.DataTemplateService; +import com.zt.plat.module.qms.enums.QmsBpmConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyDetailPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO; @@ -20,17 +28,17 @@ import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDetailDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceConfigFlowDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO; +import com.zt.plat.module.qms.resource.device.enums.DeviceBizEnum; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.beanutils.PropertyUtils; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; -import java.lang.reflect.InvocationTargetException; +import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.*; -import java.util.stream.Collectors; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO; import com.zt.plat.framework.common.pojo.PageResult; @@ -39,18 +47,20 @@ import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.resource.device.dal.mapper.DeviceApplyMapper; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; -import static com.zt.plat.module.qms.enums.ErrorCodeConstants.DEVICE_APPLY_NOT_EXISTS; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; +import static com.zt.plat.module.qms.enums.QmsBpmConstant.BPM_CALLBACK_BEAN_NAME; /** * 设备通用流程,验收、降级、停用、报废、还原、启用 Service 实现类 * * @author 后台管理-1 */ -@Service @Validated @Slf4j -public class DeviceApplyServiceImpl implements DeviceApplyService { +@Service("deviceApplyService") +public class DeviceApplyServiceImpl implements DeviceApplyService, BMPCallbackInterface { @Resource private DeviceApplyMapper deviceApplyMapper; @Resource private DeviceConfigFlowService deviceConfigFlowService; @@ -58,6 +68,8 @@ public class DeviceApplyServiceImpl implements DeviceApplyService { @Resource private DeviceApplyDetailService deviceApplyDetailService; @Resource private DataCollectionService dataCollectionService; @Resource private DataTemplateService dataTemplateService; + @Resource private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource private DataKeyCheckService dataKeyCheckService; @Override public DeviceApplyRespVO createDeviceApply(DeviceApplySaveReqVO createReqVO) { @@ -116,13 +128,15 @@ public class DeviceApplyServiceImpl implements DeviceApplyService { List deviceList = deviceInfomationService.getListByIds(deviceIds); if(deviceList.isEmpty()) return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "设备不存在"); + Long id = Long.valueOf(applyId); + DeviceApplyDO apply = getDeviceApply(id); List deviceInfoIdList = new ArrayList<>(); for (DeviceInfomationDO device : deviceList) { deviceInfoIdList.add(device.getId()); } //查询已有明细,避免重复添加 DeviceApplyDetailPageReqVO detailPageReqVO = new DeviceApplyDetailPageReqVO(); - detailPageReqVO.setApplyId(Long.valueOf(applyId)); + detailPageReqVO.setApplyId(id); detailPageReqVO.setDeviceInfoIdList(deviceInfoIdList); List detailList = deviceApplyDetailService.selectList(detailPageReqVO); //过滤已添加设备 @@ -131,12 +145,22 @@ public class DeviceApplyServiceImpl implements DeviceApplyService { List detailDOList = new ArrayList<>(); for (DeviceInfomationDO device : addDeviceList) { DeviceApplyDetailDO detail = new DeviceApplyDetailDO(); - detail.setApplyId(Long.valueOf(applyId)); + detail.setApplyId(id); detail.setDeviceInfomationId(device.getId()); detailDOList.add(detail); } deviceApplyDetailService.insertBatch(detailDOList); + //更新设备状态 + List deviceUpdateList = new ArrayList<>(); + //添加明细后,修改对应业务状态为running + for (DeviceInfomationDO device : addDeviceList) { + CommonResult deviceUpdateRet = deviceInfomationService.initDeviceStatusByBizType(device, apply.getBusinessCode(), QmsCommonConstant.RUNNING, false); + deviceUpdateList.add(deviceUpdateRet.getData()); + } + if(!deviceUpdateList.isEmpty()) + deviceInfomationService.updateBatch(deviceUpdateList); + return CommonResult.success(true); } @@ -182,6 +206,47 @@ public class DeviceApplyServiceImpl implements DeviceApplyService { BeanUtil.copyProperties(jsonVo, updateReqVO, copyOptions); } + //提交申请-发起流程 + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult submitDeviceApply(DeviceApplySaveReqVO param) { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + //当前登录用户昵称 + String nickName = SecurityFrameworkUtils.getLoginUserNickname(); + Long id = param.getId(); + DeviceApplyDO entity = getDeviceApply(id); + JSONObject formData = new JSONObject(); + if(entity.getFormData() != null) + formData = JSONObject.parseObject(entity.getFormData()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + String businessCode = entity.getBusinessCode(); + DeviceConfigFlowDO flow = deviceConfigFlowService.getByBusinessType(businessCode); + + + formData.put("mainId", id); + formData.put("applyUser", nickName); + formData.put("applyUserId", loginUser.getId()); + formData.put("applyDepartment", loginUser.getVisitDeptName()); + formData.put("applyDepartmentId", loginUser.getVisitDeptId()); + formData.put("applyTime", sdf.format(new Date())); + Map variables = formData.toJavaObject(Map.class); + variables.put(BPM_CALLBACK_BEAN_NAME, "deviceApplyService"); //流程回调时使用的service + BpmProcessInstanceCreateReqDTO reqDTO = new BpmProcessInstanceCreateReqDTO(); + reqDTO.setBusinessKey(String.valueOf(id)); + reqDTO.setProcessDefinitionKey(flow.getFlowKey()); + reqDTO.setVariables(variables); + CommonResult result = bpmProcessInstanceApi.createProcessInstance(loginUser.getId(), reqDTO); + if(!result.isSuccess()){ + throw exception0(ERROR_CODE_MODULE_COMMON, result.getMsg()); + } + String wfInsId = result.getData(); + entity.setFlowInstanceId(wfInsId); + entity.setBusinessStatus(QmsCommonConstant.IN_PROGRESS); + deviceApplyMapper.updateById(entity); + DeviceApplyRespVO respVO = BeanUtils.toBean(entity, DeviceApplyRespVO.class); + return CommonResult.success(respVO); + } @Override public void updateDeviceApply(DeviceApplySaveReqVO updateReqVO) { @@ -231,4 +296,118 @@ public class DeviceApplyServiceImpl implements DeviceApplyService { return deviceApplyMapper.selectPage(pageReqVO); } + //流程回调 + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult callback(QmsBpmDTO reqDTO) { + log.error("流程回调:{}", JSONObject.toJSONString(reqDTO)); + JSONObject variables = reqDTO.getVariables(); + String processInsId = variables.getString(QmsBpmConstant.BPM_PROCESS_INS_ID); + String currentActivityInsId = variables.getString(QmsBpmConstant.BPM_CUR_ACTIVITY_INS_ID); + String returnFlag = variables.getString(QmsBpmConstant.BPM_REJECT_TO_FIRST_FLAG); //退回标识。在任务监听中设置 + //同一个节点实例只触发一次 + String checkKey = currentActivityInsId; + if(ObjectUtils.isEmpty(currentActivityInsId)) + checkKey = processInsId + "-create"; + if("1".equals(returnFlag)) + checkKey += "-reject"; + try{ + dataKeyCheckService.create(checkKey, this.getClass().getName()); + }catch (Exception e){ +// e.printStackTrace(); + log.error("checkKey 重复:key={}", checkKey); + return CommonResult.success(new JSONObject()); + } + //流程状态 1-提交(含退回) 4-取消流程 + String PROCESS_STATUS = variables.getString(QmsBpmConstant.PROCESS_INSTANCE_VARIABLE_STATUS); + String mainId = variables.getString("mainId"); + JSONArray fieldExtensions = new JSONArray(); + if(variables.containsKey(QmsBpmConstant.BPM_FIELD_EXTENSIONS)){ + fieldExtensions = variables.getJSONArray(QmsBpmConstant.BPM_FIELD_EXTENSIONS); + } + DeviceApplyDO entity = getDeviceApply(Long.valueOf(mainId)); + String currentActivityId = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_ID); + + //判断是否最后一个节点 + String lastActivityFlag = "0"; + String firstActivityFlag = "0"; + if(!fieldExtensions.isEmpty()){ + for(int i = 0; i < fieldExtensions.size(); i++){ + JSONObject fieldExtension = fieldExtensions.getJSONObject(i); + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG)){ + lastActivityFlag = "1"; + } + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG)){ + firstActivityFlag = "1"; + } + } + } + //"RETURN_FLAG_Activity_001": true 标识驳回到发起环节 + if(("1").equals(returnFlag)){ + //驳回。流程需要配置退回到发起节点 + entity.setBusinessStatus(QmsCommonConstant.REJECTED); + }else if("4".equals(PROCESS_STATUS)){ + //作废 + entity.setBusinessStatus(QmsCommonConstant.VOID); + }else if("1".equals(PROCESS_STATUS)){ + //通过 +// assembleSignature(currentActivityId, entity); + if("1".equals(firstActivityFlag)) + entity.setBusinessStatus(QmsCommonConstant.IN_PROGRESS); //驳回后重新提交 + if("1".equals(lastActivityFlag)) + entity.setBusinessStatus(QmsCommonConstant.COMPLETED); //结束审批 + } + deviceApplyMapper.updateById(entity); + + //更新设备状态 + List deviceList = new ArrayList<>(); + List detailList = deviceApplyDetailService.selectListByApplyId(entity.getId()); + String bizType = entity.getBusinessCode(); + String flag = ""; + boolean updateStateShow = false; + DeviceBizEnum biz = DeviceBizEnum.getByCode(bizType); + if(biz == null) + throw exception0(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "更新设备状态时发生错误,业务类型不存在:" + bizType); + if (bizType.equals(DeviceBizEnum.accept.getCode())) { + flag = "1"; + updateStateShow = false; + } + if (bizType.equals(DeviceBizEnum.repair.getCode())) { + flag = "1"; + updateStateShow = true; + } + if (bizType.equals(DeviceBizEnum.demote.getCode())) { + flag = "1"; + updateStateShow = true; + } + if (bizType.equals(DeviceBizEnum.scrap.getCode())) { + flag = "1"; + updateStateShow = true; + } + if (bizType.equals(DeviceBizEnum.disable.getCode())) { + flag = "1"; + updateStateShow = true; + } + if(bizType.equals(DeviceBizEnum.enable.getCode())){ + flag = "0"; + updateStateShow = true; + } + if (bizType.equals(DeviceBizEnum.lend.getCode())) { + flag = "1"; + updateStateShow = true; + } + if(bizType.equals(DeviceBizEnum.giveback.getCode())){ + flag = "0"; + updateStateShow = true; + } + + for(DeviceApplyDetailDO detail : detailList){ + DeviceInfomationDO device = deviceInfomationService.getDeviceInfomation(detail.getDeviceInfomationId()); + device = deviceInfomationService.initDeviceStatusByBizType(device, bizType, flag, updateStateShow).getData(); + deviceList.add(device); + } + deviceInfomationService.updateBatch(deviceList); + JSONObject ret = new JSONObject(); + return CommonResult.success(ret); + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java index 622203fc..93d793a7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java @@ -11,7 +11,6 @@ import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO; import jakarta.validation.Valid; import java.util.List; -import java.util.Map; /** * 设备-设备信息 Service 接口 @@ -37,7 +36,7 @@ public interface DeviceInfomationService { // 更新设备的生命周期状态 - CommonResult updateLifeStatus(DeviceInfomationDO info, String bizType, Integer flag); + CommonResult initDeviceStatusByBizType(DeviceInfomationDO info, String bizType, String flag, boolean updateStateShow); //更新“使用中”状态 void updateDeviceInUseFlag(Long deviceId, Integer inUseFlag); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java index 26e0fc91..a4154434 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java @@ -19,6 +19,7 @@ import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfoWithBizCo import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceProductDO; import com.zt.plat.module.qms.resource.device.dal.mapper.DeviceInfomationMapper; +import com.zt.plat.module.qms.resource.device.enums.DeviceBizEnum; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,29 +43,31 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.DEVICE_PRODUCT_NOT @Validated public class DeviceInfomationServiceImpl implements DeviceInfomationService { - @Resource private DeviceInfomationMapper deviceInfomationMapper; - @Resource private DeviceProductService deviceProductService; + @Resource + private DeviceInfomationMapper deviceInfomationMapper; + @Resource + private DeviceProductService deviceProductService; @Override @Transactional(rollbackFor = Exception.class) public CommonResult saveDevice(DeviceInfomationSaveReqVO reqVO) { Long productId = reqVO.getProductId(); String deviceCode = reqVO.getDeviceCode(); - if(productId == null) + if (productId == null) throw exception0(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "请选择所属设备大类!"); DeviceProductDO productDO = deviceProductService.getDeviceProduct(productId); - if(productDO == null) + if (productDO == null) throw exception(DEVICE_PRODUCT_NOT_EXISTS); - if(!DataTypeConstant.DATA_TYPE_DATA.equals(productDO.getNodeType())) + if (!DataTypeConstant.DATA_TYPE_DATA.equals(productDO.getNodeType())) throw exception0(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "您选择的是“分类”,请选择“产品”!"); DeviceInfomationDO checkData = getByCode(deviceCode); - if(reqVO.getId() == null){ - if(checkData != null && !checkData.getId().equals(reqVO.getId())) + if (reqVO.getId() == null) { + if (checkData != null && !checkData.getId().equals(reqVO.getId())) throw exception0(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "管理编号已存在,请重新填写!"); DeviceInfomationRespVO respVO = this.createDeviceInfomation(reqVO); return CommonResult.success(respVO); } - if(checkData != null) + if (checkData != null) throw exception0(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "管理编号已存在,请重新填写!"); reqVO.setDeviceParameter(productDO.getParameter()); this.updateDeviceInfomation(reqVO); @@ -74,18 +77,19 @@ public class DeviceInfomationServiceImpl implements DeviceInfomationService { @Override public CommonResult checkDeviceUsable(Long id) { DeviceInfomationDO deviceDO = this.getDeviceInfomation(id); - if(ObjectUtils.isEmpty(deviceDO)) + if (ObjectUtils.isEmpty(deviceDO)) return CommonResult.error(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "设备不存在,请刷新后重试!"); - if("1".equals(deviceDO.getDisableFlag())) + if ("1".equals(deviceDO.getDisableFlag())) return CommonResult.error(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "设备已停用!"); - if("1".equals(deviceDO.getScrapFlag())) + if ("1".equals(deviceDO.getScrapFlag())) return CommonResult.error(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "设备已报废!"); - if("1".equals(deviceDO.getLendFlag())) + if ("1".equals(deviceDO.getLendFlag())) return CommonResult.error(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "设备已外借!"); - if("1".equals(deviceDO.getRepairFlag())) - return CommonResult.error( DEVICE_INFOMATION_NOT_EXISTS.getCode(), "设备在维修中"); - return CommonResult.success( true); + if ("1".equals(deviceDO.getRepairFlag())) + return CommonResult.error(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "设备在维修中"); + return CommonResult.success(true); } + /*查询需要“某个业务类型”的设备列表*/ @Override public List getListNeedByRule(JSONObject params) { @@ -93,102 +97,134 @@ public class DeviceInfomationServiceImpl implements DeviceInfomationService { } /* - * 更新设备生命周期状态 - * 传入设备实体、业务类型(停用、外借、维修、降级等)、状态(1-是,其他-否) - * */ + * 更新设备生命周期状态 + * 传入设备实体、业务类型(停用、外借、维修、降级等)、状态(1-是,其他-否) + * */ @Override - @Transactional(rollbackFor = Exception.class) - public CommonResult updateLifeStatus(DeviceInfomationDO info, String bizType, Integer flag) { +// @Transactional(rollbackFor = Exception.class) + public CommonResult initDeviceStatusByBizType(DeviceInfomationDO info, String bizType, String flag, boolean updateStateShow) { String stateStack = info.getStateStack(); JSONArray arr = new JSONArray(); - if(!ObjectUtils.isEmpty(stateStack)) + if (!ObjectUtils.isEmpty(stateStack)) arr = JSON.parseArray(stateStack); String state = "-1"; - Map stateMap = new HashMap<>(); +// DeviceInfomationDO updateInfo = new DeviceInfomationDO(); +// updateInfo.setId(info.getId()); SFunction tableField = null; - stateMap.put("repair", "维修"); - stateMap.put("demote", "降级"); - stateMap.put("scrap", "报废"); - stateMap.put("disable", "停用"); - stateMap.put("lend", "外借"); - if(bizType.equals("repair")){ - state = info.getRepairFlag(); - tableField = DeviceInfomationDO::getRepairFlag; + DeviceBizEnum biz = DeviceBizEnum.getByCode(bizType); + if(biz == null) + throw exception0(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "更新设备状态时发生错误,业务类型不存在:" + bizType); + /* + todo running状态处理。需要额外字段记录running状态 + todo 设备状态改为json保存。 + */ + if (bizType.equals(DeviceBizEnum.accept.getCode())) { + if ("1".equals(flag)) + info.setAcceptanceFlag("1"); + else if ("0".equals(flag)) + info.setAcceptanceFlag("0"); + else + info.setAcceptanceFlag(flag); } - if(bizType.equals("demote")){ - state = info.getDemoteFlag(); - tableField = DeviceInfomationDO::getDemoteFlag; + if (bizType.equals(DeviceBizEnum.repair.getCode())) { + if ("1".equals(flag)) + info.setRepairFlag("1"); + else if ("0".equals(flag)) + info.setRepairFlag("0"); + else + info.setRepairFlag(flag); } - if(bizType.equals("scrap")){ - state = info.getScrapFlag(); - tableField = DeviceInfomationDO::getScrapFlag; + if (bizType.equals(DeviceBizEnum.demote.getCode())) { + if ("1".equals(flag)) + info.setDemoteFlag("1"); + else if ("0".equals(flag)) + info.setDemoteFlag("0"); + else + info.setDemoteFlag(flag); } - if(bizType.equals("disable")){ - state = info.getDisableFlag(); - tableField = DeviceInfomationDO::getDisableFlag; + if (bizType.equals(DeviceBizEnum.scrap.getCode())) { + if ("1".equals(flag)) + info.setScrapFlag("1"); + else if ("0".equals(flag)) + info.setScrapFlag("0"); + else + info.setScrapFlag(flag); } - if(bizType.equals("lend")){ - state = info.getLendFlag(); - tableField = DeviceInfomationDO::getLendFlag; + if (bizType.equals(DeviceBizEnum.disable.getCode()) || bizType.equals(DeviceBizEnum.enable.getCode())) { + if ("1".equals(flag)) + info.setDisableFlag("1"); + else if ("0".equals(flag)) + info.setDisableFlag("0"); + else + info.setDisableFlag(flag); + } + if (bizType.equals(DeviceBizEnum.lend.getCode()) || bizType.equals(DeviceBizEnum.giveback.getCode())) { + if ("1".equals(flag)) + info.setLendFlag("1"); + else if ("0".equals(flag)) + info.setLendFlag("0"); + else + info.setLendFlag(flag); } - if("-1".equals( state)) - return CommonResult.error(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "请传入正确的业务类型!"); //未传入状态,则切换状态 - if(flag == null){ - state = "1".equals(state) ? "0" : "1"; - }else{ - state = flag.equals(1) ? "1" : "0"; +// if (flag == null) { +// state = "1".equals(state) ? "0" : "1"; +// } else { +// state = flag.equals(1) ? "1" : "0"; +// } + + if(updateStateShow){ + JSONObject json = null; + int index = -1; + boolean itemFindFlag = false; + for (int i = 0; i < arr.size(); i++) { + index = i; + JSONObject item = arr.getJSONObject(i); + if (item.getString("bizType").equals(bizType)) { + json = item; + itemFindFlag = true; + break; + } + } + //如果栈里不存在记录 + if (json == null) { + //状态为正常,不做处理 + if (!"0".equals(state)) { + //插入记录 + json = new JSONObject(); + json.put("bizType", bizType); + json.put("state", state); + arr.add(0, json); + } + } else { + //存在记录,移至最前端 + if (itemFindFlag) + arr.remove(index); + if ("1".equals(state)) + arr.add(0, json); + } + info.setStateStack(arr.toJSONString()); + if (arr.isEmpty()) { + info.setStateShow("正常"); + } else { + JSONObject first = arr.getJSONObject(0); + String firstBiz = first.getString("bizType"); + info.setStateShow(DeviceBizEnum.valueOf(firstBiz).getDescribe()); + } } - JSONObject json = null; - int index = -1; - boolean itemFindFlag = false; - for(int i = 0; i < arr.size(); i++){ - index = i; - JSONObject item = arr.getJSONObject(i); - if(item.getString("bizType").equals(bizType)){ - json = item; - itemFindFlag = true; - break; - } - } - //如果栈里不存在记录 - if(json == null){ - //状态为正常,不做处理 - if(!"0".equals(state)){ - //插入记录 - json = new JSONObject(); - json.put("bizType", bizType); - json.put("state", state); - arr.add(0, json); - } - }else{ - //存在记录,移至最前端 - if(itemFindFlag) - arr.remove(index); - if("1".equals(state)) - arr.add(0, json); - } - info.setStateStack(arr.toJSONString()); - if(arr.isEmpty()){ - info.setStateShow("正常"); - }else{ - JSONObject first = arr.getJSONObject(0); - String firstBiz = first.getString("bizType"); - info.setStateShow(stateMap.get(firstBiz)); - } //更新数据 - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(DeviceInfomationDO::getId, info.getId()); - updateWrapper.set(tableField, state); - updateWrapper.set(DeviceInfomationDO::getStateShow, info.getStateShow()); - updateWrapper.set(DeviceInfomationDO::getStateStack, info.getStateStack()); - deviceInfomationMapper.update(updateWrapper); +// LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); +// updateWrapper.eq(DeviceInfomationDO::getId, info.getId()); +// updateWrapper.set(tableField, state); +// updateWrapper.set(DeviceInfomationDO::getStateShow, info.getStateShow()); +// updateWrapper.set(DeviceInfomationDO::getStateStack, info.getStateStack()); +// deviceInfomationMapper.update(updateWrapper); return CommonResult.success(info); } /* - * 更新“使用中”状态*/ + * 更新“使用中”状态*/ @Override @Transactional(rollbackFor = Exception.class) public void updateDeviceInUseFlag(Long deviceId, Integer inUseFlag) { @@ -220,9 +256,9 @@ public class DeviceInfomationServiceImpl implements DeviceInfomationService { @Override public List getListByIds(String ids) { - if(ObjectUtils.isEmpty(ids)) + if (ObjectUtils.isEmpty(ids)) return Collections.emptyList(); - List< Long> idsList = Arrays.asList(ids.split(",")).stream().map(Long::parseLong).toList(); + List idsList = Arrays.asList(ids.split(",")).stream().map(Long::parseLong).toList(); return deviceInfomationMapper.selectByIds(idsList); } @@ -264,12 +300,12 @@ public class DeviceInfomationServiceImpl implements DeviceInfomationService { } @Override - public void deleteDeviceInfomationListByIds(List ids) { + public void deleteDeviceInfomationListByIds(List ids) { // 校验存在 validateDeviceInfomationExists(ids); // 删除 deviceInfomationMapper.deleteByIds(ids); - } + } private void validateDeviceInfomationExists(List ids) { List list = deviceInfomationMapper.selectByIds(ids);