diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceCalibrationPlanController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceCalibrationPlanController.java index 3ec1cf84..59bf9530 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceCalibrationPlanController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceCalibrationPlanController.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.device.controller.admin; +import com.alibaba.fastjson.JSONObject; import com.zt.plat.module.qms.resource.device.controller.vo.*; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; @@ -55,7 +56,8 @@ public class DeviceCalibrationPlanController extends AbstractFileUploadControlle @PostMapping("/createPlan") @Operation(summary = "创建设备-检定校准计划") - public CommonResult createPlan(String checkYear) { + public CommonResult createPlan(@RequestBody JSONObject param) { + String checkYear = param.getString("checkYear"); return deviceCalibrationPlanService.createPlan(checkYear); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckController.java index e4caedfc..9fa3d782 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckController.java @@ -1,8 +1,10 @@ package com.zt.plat.module.qms.resource.device.controller.admin; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPageReqVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckRespVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckSaveReqVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zt.plat.module.qms.resource.device.controller.vo.*; +import com.zt.plat.module.qms.resource.device.service.DeviceProductService; +import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -52,8 +54,8 @@ public class DevicePeriodCheckController extends AbstractFileUploadController im } } - @Resource - private DevicePeriodCheckService devicePeriodCheckService; + @Resource private DevicePeriodCheckService devicePeriodCheckService; + @Resource private DeviceProductService deviceProductService; @PostMapping("/create") @Operation(summary = "创建设备-期间核查") @@ -93,11 +95,38 @@ public class DevicePeriodCheckController extends AbstractFileUploadController im return success(BeanUtils.toBean(devicePeriodCheck, DevicePeriodCheckRespVO.class)); } + @GetMapping("/getVO") + @Operation(summary = "获得设备-检定校准") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getVO(@RequestParam("id") Long id) { + DevicePeriodCheckVO vo = devicePeriodCheckService.getDevicePeriodCheckVO(id); + return success(vo); + } + + @RequestMapping("/submitApply") + @Operation(summary = "提交申请") + public CommonResult submitApply(@RequestBody DevicePeriodCheckSaveReqVO param) { + return devicePeriodCheckService.submitApply(param); + } + @GetMapping("/page") @Operation(summary = "获得设备-期间核查分页") - public CommonResult> getDevicePeriodCheckPage(@Valid DevicePeriodCheckPageReqVO pageReqVO) { - PageResult pageResult = devicePeriodCheckService.getDevicePeriodCheckPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, DevicePeriodCheckRespVO.class)); + public CommonResult> getDevicePeriodCheckPage(@Valid DevicePeriodCheckPageReqVO param) { + Page page = new Page<>(param.getPageNo(), param.getPageSize()); + Long productId = param.getProductId(); + if(!ObjectUtils.isEmpty(productId)){ + List productIdList = deviceProductService.getIdListByIdPath(productId); + param.setProductIdList(productIdList); + param.setProductId(null); + } + String flowStatus = param.getFlowStatus(); + if (!ObjectUtils.isEmpty(flowStatus)) { + param.setFlowStatusList(Arrays.asList(flowStatus.split(","))); + param.setFlowStatus(""); + } + IPage pageList = devicePeriodCheckService.queryPageList(page, param); + PageResult pageResult = new PageResult<>(pageList.getRecords(), pageList.getTotal()); + return CommonResult.success(pageResult); } @GetMapping("/export-excel") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckPlanController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckPlanController.java index b8994226..25f6563e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckPlanController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DevicePeriodCheckPlanController.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.device.controller.admin; +import com.alibaba.fastjson.JSONObject; import com.zt.plat.module.qms.resource.device.controller.vo.*; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.*; @@ -56,12 +57,22 @@ public class DevicePeriodCheckPlanController extends AbstractFileUploadControlle @PostMapping("/createPlan") @Operation(summary = "创建设备-期间核查计划") - public CommonResult createDevicePeriodCheckPlan(@RequestBody String checkYear) { + public CommonResult createDevicePeriodCheckPlan(@RequestBody JSONObject param) { + String checkYear = param.getString("checkYear"); return success(devicePeriodCheckPlanService.createPlan(checkYear)); } + @RequestMapping("/savePlan") + @Operation(summary = "编辑计划") + public CommonResult savePlan(@RequestBody DevicePeriodCheckPlanSaveReqVO param) { + return devicePeriodCheckPlanService.savePlan(param); + } - + @RequestMapping("/submitApply") + @Operation(summary = "提交申请") + public CommonResult submitApply(@RequestBody DevicePeriodCheckPlanSaveReqVO param) { + return devicePeriodCheckPlanService.submitApply(param); + } @PutMapping("/update") @Operation(summary = "更新设备-期间核查计划") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckPageReqVO.java index b1ea854a..57b064bd 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckPageReqVO.java @@ -13,6 +13,9 @@ import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH @Data public class DevicePeriodCheckPageReqVO extends PageParam { + @Schema(description = "ID") + private Long id; + @Schema(description = "期间核查计划id", example = "21407") private Long planId; @@ -85,4 +88,35 @@ public class DevicePeriodCheckPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + + //======================设备大类字段============================== + + + + //======================设备字段============================== + + + + //======================查询字段============================== + @Schema(description = "流程状态列表") + private List flowStatusList; + + @Schema(description = "设备名称") + private String deviceName; + +// @Schema(description = "计划id列表") +// private List planIdList; + + @Schema(description = "设备大类id") + private Long productId; + + @Schema(description = "设备大类id列表") + private List productIdList; + + @Schema(description = "部门id列表") + private List deptIdList; + + @Schema(description = "部门id") + private Long deptId; + } \ 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/DevicePeriodCheckPlanSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckPlanSaveReqVO.java index e197013b..f5fd1d55 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckPlanSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckPlanSaveReqVO.java @@ -1,5 +1,7 @@ package com.zt.plat.module.qms.resource.device.controller.vo; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceCalibrationDO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -48,4 +50,7 @@ public class DevicePeriodCheckPlanSaveReqVO { @Schema(description = "备注") private String remark; + //==============扩展字段================== + @Schema(description = "检定校准明细列表") + List devicePeriodCheckList; } \ 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/DevicePeriodCheckVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckVO.java new file mode 100644 index 00000000..b9b7577e --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DevicePeriodCheckVO.java @@ -0,0 +1,54 @@ +package com.zt.plat.module.qms.resource.device.controller.vo; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.time.LocalDateTime; + +/* +* 期间核查响应对象 +* */ + +@Data +public class DevicePeriodCheckVO extends DevicePeriodCheckRespVO{ + + //=========公共字段============ + + private Long companyId; + private String companyName; + + private Long deptId; + + private String deptName; + + private Long postId; + private Long tenantId; + + private String updaterName; + private String creatorName; + private LocalDateTime createTime; + private LocalDateTime updateTime; + private String creator; + private String updater; + + //============大类字段============ + + private String specification; //规格 + + private String modelNo; //型号 + + private String manufacturer; //制造商 + + private String customConfig; + + private JSONObject customConfigJson; + + //============设备字段============ + private String deviceName; //设备名称 + + private String alias; //别名 + + private String deviceCode; //管理编号 + + private String factoryCode; //出厂编号 +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.java index 8097e3e3..55ccd266 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.java @@ -1,13 +1,14 @@ package com.zt.plat.module.qms.resource.device.dal.mapper; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.DevicePeriodCheckVO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckDO; import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPageReqVO; -import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckPlanDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -54,4 +55,5 @@ public interface DevicePeriodCheckMapper extends BaseMapperX getLastDataCheckList(@Param("param") JSONObject param); + IPage queryPageList(Page page, @Param("param") DevicePeriodCheckPageReqVO param); } \ 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/DeviceCalibrationPlanServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceCalibrationPlanServiceImpl.java index e3041f44..f097da17 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceCalibrationPlanServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceCalibrationPlanServiceImpl.java @@ -259,7 +259,6 @@ public class DeviceCalibrationPlanServiceImpl implements DeviceCalibrationPlanSe //判断是否最后一个节点 String lastActivityFlag = "0"; String firstActivityFlag = "0"; - String borrowConfirm = "0"; if(!fieldExtensions.isEmpty()){ for(int i = 0; i < fieldExtensions.size(); i++){ JSONObject fieldExtension = fieldExtensions.getJSONObject(i); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceCalibrationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceCalibrationServiceImpl.java index 21cd1da6..65e9933e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceCalibrationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceCalibrationServiceImpl.java @@ -1,6 +1,7 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -11,14 +12,19 @@ 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.common.data.dal.dataobject.DataCommonType; import com.zt.plat.module.qms.common.data.service.DataKeyCheckService; import com.zt.plat.module.qms.common.data.service.DataOpinionService; import com.zt.plat.module.qms.common.dic.service.DictionaryBusinessService; +import com.zt.plat.module.qms.enums.QmsBpmConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.resource.device.common.DeviceConstant; import com.zt.plat.module.qms.resource.device.common.DeviceUtil; import com.zt.plat.module.qms.resource.device.controller.vo.*; import com.zt.plat.module.qms.resource.device.dal.dataobject.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; @@ -48,9 +54,10 @@ import static com.zt.plat.module.qms.enums.QmsBpmConstant.BPM_CALLBACK_BEAN_NAME * * @author 后台管理-1 */ -@Service +@Service("deviceCalibrationService") @Validated -public class DeviceCalibrationServiceImpl implements DeviceCalibrationService { +@Slf4j +public class DeviceCalibrationServiceImpl implements DeviceCalibrationService, BMPCallbackInterface { @Resource private DeviceCalibrationMapper deviceCalibrationMapper; @Resource private DeviceInfomationService deviceInfomationService; @@ -251,4 +258,78 @@ public class DeviceCalibrationServiceImpl implements DeviceCalibrationService { public void insertBatch(List list) { deviceCalibrationMapper.insertBatch(list); } + + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult callback(QmsBpmDTO reqDTO) { + log.error("流程回调:{}", JSONObject.toJSONString(reqDTO)); + JSONObject variables = reqDTO.getVariables(); + JSONObject taskVariables = variables.getJSONObject("taskVariables"); + String processInsId = variables.getString(QmsBpmConstant.BPM_PROCESS_INS_ID); + String currentActivityInsId = variables.getString(QmsBpmConstant.BPM_CUR_ACTIVITY_INS_ID); + String currentActivityId = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_ID); + String currentActivityName = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_NAME); + 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); + } + DeviceCalibrationDO entity = getDeviceCalibration(Long.valueOf(mainId)); + + //判断是否最后一个节点 + String lastActivityFlag = "0"; + String firstActivityFlag = "0"; + if(!fieldExtensions.isEmpty()){ + for(int i = 0; i < fieldExtensions.size(); i++){ + JSONObject fieldExtension = fieldExtensions.getJSONObject(i); + String stringValue = fieldExtension.getString("stringValue"); + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG) && "1".equals(stringValue)){ + lastActivityFlag = "1"; + } + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG) && "1".equals(stringValue)){ + firstActivityFlag = "1"; + } + } + } + //"RETURN_FLAG_Activity_001": true 标识驳回到发起环节 + if(("1").equals(returnFlag)){ + //驳回。流程需要配置退回到发起节点 + entity.setFlowStatus(QmsCommonConstant.REJECTED); + dataOpinionService.disableOpinionsByBusId(entity.getId()); + }else if("4".equals(PROCESS_STATUS)){ + //作废 + entity.setFlowStatus(QmsCommonConstant.VOID); + }else if("1".equals(PROCESS_STATUS)){ + //通过 +// assembleSignature(currentActivityId, entity); + DataCommonType dataCommonType = new DataCommonType(); + dataCommonType.setBusinessId(entity.getId()); + dataCommonType.setFlowInstanceId(entity.getFlowInstanceId()); + dataOpinionService.saveOpinionByWfCallback(dataCommonType, currentActivityId, currentActivityName, taskVariables); + if("1".equals(firstActivityFlag)) + entity.setFlowStatus(QmsCommonConstant.IN_PROGRESS); //驳回后重新提交 + if("1".equals(lastActivityFlag)){ + entity.setFlowStatus(QmsCommonConstant.COMPLETED); //结束审批 + } + } + deviceCalibrationMapper.updateById(entity); + 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/DevicePeriodCheckPlanService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckPlanService.java index f15b34f1..195239d1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckPlanService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckPlanService.java @@ -2,9 +2,8 @@ package com.zt.plat.module.qms.resource.device.service; import java.util.*; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPlanPageReqVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPlanRespVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPlanSaveReqVO; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.qms.resource.device.controller.vo.*; import jakarta.validation.*; import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckPlanDO; import com.zt.plat.framework.common.pojo.PageResult; @@ -21,6 +20,9 @@ public interface DevicePeriodCheckPlanService { */ DevicePeriodCheckPlanRespVO createPlan(String checkYear); + CommonResult savePlan(DevicePeriodCheckPlanSaveReqVO paramVO); + + CommonResult submitApply(DevicePeriodCheckPlanSaveReqVO paramVO); /** * 更新设备-期间核查计划 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckPlanServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckPlanServiceImpl.java index 4e96c847..3abfa9cb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckPlanServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckPlanServiceImpl.java @@ -1,40 +1,64 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +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.common.data.dal.dataobject.DataCommonType; +import com.zt.plat.module.qms.common.data.service.DataKeyCheckService; +import com.zt.plat.module.qms.common.data.service.DataOpinionService; +import com.zt.plat.module.qms.common.dic.service.DictionaryBusinessService; +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.DevicePeriodCheckPlanPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPlanRespVO; +import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPlanPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPlanSaveReqVO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckPlanDO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckDO; +import lombok.extern.slf4j.Slf4j; 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.text.SimpleDateFormat; import java.util.*; -import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckPlanDO; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.resource.device.dal.mapper.DevicePeriodCheckPlanMapper; 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_PERIOD_CHECK_PLAN_NOT_EXISTS; +import static com.zt.plat.module.qms.enums.QmsBpmConstant.BPM_CALLBACK_BEAN_NAME; /** * 设备-期间核查计划 Service 实现类 * * @author 后台管理-1 */ -@Service +@Service("devicePeriodCheckPlanService") @Validated -public class DevicePeriodCheckPlanServiceImpl implements DevicePeriodCheckPlanService { +@Slf4j +public class DevicePeriodCheckPlanServiceImpl implements DevicePeriodCheckPlanService, BMPCallbackInterface { @Resource private DevicePeriodCheckPlanMapper devicePeriodCheckPlanMapper; @Resource private DevicePeriodCheckService devicePeriodCheckService; + @Resource private DictionaryBusinessService dictionaryBusinessService; + @Resource private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource private DataKeyCheckService dataKeyCheckService; + @Resource private DataOpinionService dataOpinionService; + private final String wfDicKey = "DevicePeriodCheckPlanWfKey"; @Override @Transactional(rollbackFor = Exception.class) @@ -53,6 +77,87 @@ public class DevicePeriodCheckPlanServiceImpl implements DevicePeriodCheckPlanSe return BeanUtils.toBean(entity, DevicePeriodCheckPlanRespVO.class); } + @Override + public CommonResult savePlan(DevicePeriodCheckPlanSaveReqVO paramVO) { + updateDevicePeriodCheckPlan(paramVO); + + //处理明细 + List devicePeriodCheckList = paramVO.getDevicePeriodCheckList(); + List detailList = devicePeriodCheckService.getListByPlanId(paramVO.getId()); + List updateList = new ArrayList<>(); + List deleteList = new ArrayList<>(); + List insertList = new ArrayList<>(); + for (DevicePeriodCheckDO dbDetail : detailList) { + boolean findFlag = false; + for(DevicePeriodCheckDO d : devicePeriodCheckList){ + if(dbDetail.getId().equals(d.getId())){ + updateList.add(d); + findFlag = true; + break; + } + } + if(!findFlag){ + deleteList.add(dbDetail.getId()); + } + } + for (DevicePeriodCheckDO d : devicePeriodCheckList) { + boolean findFlag = false; + for(DevicePeriodCheckDO dbDetail : detailList){ + if(d.getId().equals(dbDetail.getId())){ + findFlag = true; + break; + } + } + if(!findFlag){ + insertList.add(d); + } + } + if(!updateList.isEmpty()) + devicePeriodCheckService.updateBatch(updateList); + if(!deleteList.isEmpty()) + devicePeriodCheckService.deleteDevicePeriodCheckListByIds(deleteList); + if(!insertList.isEmpty()) + devicePeriodCheckService.insertBatch(insertList); + DevicePeriodCheckPlanDO entity = getDevicePeriodCheckPlan(paramVO.getId()); + DevicePeriodCheckPlanRespVO vo = BeanUtils.toBean(entity, DevicePeriodCheckPlanRespVO.class); + return CommonResult.success(vo); + } + + @Override + public CommonResult submitApply(DevicePeriodCheckPlanSaveReqVO paramVO) { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + //当前登录用户昵称 + String nickName = SecurityFrameworkUtils.getLoginUserNickname(); + Long id = paramVO.getId(); + DevicePeriodCheckPlanDO entity = getDevicePeriodCheckPlan(id); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String processDefKey = dictionaryBusinessService.getValueByDataKey(wfDicKey); + if(ObjectUtils.isEmpty(processDefKey)) + throw exception0(DEVICE_PERIOD_CHECK_PLAN_NOT_EXISTS.getCode(), "请先配置流程定义"); + Map variables = new JSONObject(); + variables.put("mainId", id); + variables.put("applyUser", nickName); + variables.put("applyUserId", loginUser.getId()); + variables.put("applyDepartment", loginUser.getVisitDeptName()); + variables.put("applyDepartmentId", loginUser.getVisitDeptId()); + variables.put("applyTime", sdf.format(new Date())); + variables.put(BPM_CALLBACK_BEAN_NAME, "devicePeriodCheckPlanService"); //流程回调时使用的service + BpmProcessInstanceCreateReqDTO reqDTO = new BpmProcessInstanceCreateReqDTO(); + reqDTO.setBusinessKey(String.valueOf(id)); + reqDTO.setProcessDefinitionKey(processDefKey); + reqDTO.setVariables(variables); + CommonResult result = bpmProcessInstanceApi.createProcessInstance(loginUser.getId(), reqDTO); + if(!result.isSuccess()){ + throw exception0(DEVICE_PERIOD_CHECK_PLAN_NOT_EXISTS.getCode(), result.getMsg()); + } + String wfInsId = result.getData(); + entity.setFlowInstanceId(wfInsId); + entity.setFlowStatus(QmsCommonConstant.IN_PROGRESS); + devicePeriodCheckPlanMapper.updateById(entity); + DevicePeriodCheckPlanRespVO respVO = BeanUtils.toBean(entity, DevicePeriodCheckPlanRespVO.class); + return CommonResult.success(respVO); + } + @Override public void updateDevicePeriodCheckPlan(DevicePeriodCheckPlanSaveReqVO updateReqVO) { // 校验存在 @@ -101,4 +206,79 @@ public class DevicePeriodCheckPlanServiceImpl implements DevicePeriodCheckPlanSe return devicePeriodCheckPlanMapper.selectPage(pageReqVO); } + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult callback(QmsBpmDTO reqDTO) { + log.error("流程回调:{}", JSONObject.toJSONString(reqDTO)); + JSONObject variables = reqDTO.getVariables(); + JSONObject taskVariables = variables.getJSONObject("taskVariables"); + String processInsId = variables.getString(QmsBpmConstant.BPM_PROCESS_INS_ID); + String currentActivityInsId = variables.getString(QmsBpmConstant.BPM_CUR_ACTIVITY_INS_ID); + String currentActivityId = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_ID); + String currentActivityName = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_NAME); + 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); + } + DevicePeriodCheckPlanDO entity = getDevicePeriodCheckPlan(Long.valueOf(mainId)); + + //判断是否最后一个节点 + String lastActivityFlag = "0"; + String firstActivityFlag = "0"; + if(!fieldExtensions.isEmpty()){ + for(int i = 0; i < fieldExtensions.size(); i++){ + JSONObject fieldExtension = fieldExtensions.getJSONObject(i); + String stringValue = fieldExtension.getString("stringValue"); + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG) && "1".equals(stringValue)){ + lastActivityFlag = "1"; + } + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG) && "1".equals(stringValue)){ + firstActivityFlag = "1"; + } + } + } + //"RETURN_FLAG_Activity_001": true 标识驳回到发起环节 + if(("1").equals(returnFlag)){ + //驳回。流程需要配置退回到发起节点 + entity.setFlowStatus(QmsCommonConstant.REJECTED); + dataOpinionService.disableOpinionsByBusId(entity.getId()); + }else if("4".equals(PROCESS_STATUS)){ + //作废 + entity.setFlowStatus(QmsCommonConstant.VOID); + devicePeriodCheckService.updateEffectiveFlag(entity.getId(), "0"); + }else if("1".equals(PROCESS_STATUS)){ + //通过 +// assembleSignature(currentActivityId, entity); + DataCommonType dataCommonType = new DataCommonType(); + dataCommonType.setBusinessId(entity.getId()); + dataCommonType.setFlowInstanceId(entity.getFlowInstanceId()); + dataOpinionService.saveOpinionByWfCallback(dataCommonType, currentActivityId, currentActivityName, taskVariables); + if("1".equals(firstActivityFlag)) + entity.setFlowStatus(QmsCommonConstant.IN_PROGRESS); //驳回后重新提交 + if("1".equals(lastActivityFlag)){ + entity.setFlowStatus(QmsCommonConstant.COMPLETED); //结束审批 + } + devicePeriodCheckService.updateEffectiveFlag(entity.getId(), "1"); + } + devicePeriodCheckPlanMapper.updateById(entity); + 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/DevicePeriodCheckService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckService.java index 9963b778..76b5db84 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckService.java @@ -3,10 +3,12 @@ package com.zt.plat.module.qms.resource.device.service; import java.util.*; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPageReqVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckRespVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckSaveReqVO; +import com.zt.plat.module.qms.resource.device.controller.vo.*; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceCalibrationDO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckPlanDO; import jakarta.validation.*; import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckDO; @@ -24,6 +26,14 @@ public interface DevicePeriodCheckService { CommonResult> getLastDataCheckList(List deviceIds, String flowStatus); + IPage queryPageList(Page page, DevicePeriodCheckPageReqVO pageReqVO); + + void updateEffectiveFlag(Long planId, String effectiveFlag); + + List getListByPlanId(Long planId); + + CommonResult submitApply(DevicePeriodCheckSaveReqVO paramVO); + /** * 创建设备-期间核查 * @@ -61,6 +71,7 @@ public interface DevicePeriodCheckService { */ DevicePeriodCheckDO getDevicePeriodCheck(Long id); + DevicePeriodCheckVO getDevicePeriodCheckVO(Long id); /** * 获得设备-期间核查分页 * @@ -69,4 +80,7 @@ public interface DevicePeriodCheckService { */ PageResult getDevicePeriodCheckPage(DevicePeriodCheckPageReqVO pageReqVO); + void updateBatch(List list); + + void insertBatch(List 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/service/DevicePeriodCheckServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckServiceImpl.java index 201957f1..5fd5149e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DevicePeriodCheckServiceImpl.java @@ -1,47 +1,69 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.common.data.dal.dataobject.DataCommonType; +import com.zt.plat.module.qms.common.data.service.DataKeyCheckService; +import com.zt.plat.module.qms.common.data.service.DataOpinionService; +import com.zt.plat.module.qms.common.dic.service.DictionaryBusinessService; +import com.zt.plat.module.qms.enums.QmsBpmConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.resource.device.common.DeviceConstant; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckPageReqVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckRespVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DevicePeriodCheckSaveReqVO; -import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceConfigBusinessRuleDO; -import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfoWithBizConfigVO; -import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckPlanDO; +import com.zt.plat.module.qms.resource.device.controller.vo.*; +import com.zt.plat.module.qms.resource.device.dal.dataobject.*; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInfoWithBizConfigVO; import com.zt.plat.module.qms.resource.material.service.MaterialInfomationService; +import lombok.extern.slf4j.Slf4j; 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.text.SimpleDateFormat; import java.util.*; -import com.zt.plat.module.qms.resource.device.dal.dataobject.DevicePeriodCheckDO; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.resource.device.dal.mapper.DevicePeriodCheckMapper; 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_PERIOD_CHECK_NOT_EXISTS; +import static com.zt.plat.module.qms.enums.QmsBpmConstant.BPM_CALLBACK_BEAN_NAME; /** * 设备-期间核查 Service 实现类 * * @author 后台管理-1 */ -@Service +@Service("devicePeriodCheckService") @Validated -public class DevicePeriodCheckServiceImpl implements DevicePeriodCheckService { +@Slf4j +public class DevicePeriodCheckServiceImpl implements DevicePeriodCheckService, BMPCallbackInterface { @Resource private DevicePeriodCheckMapper devicePeriodCheckMapper; @Resource private DeviceInfomationService deviceInfomationService; @Resource private MaterialInfomationService materialInfomationService; + @Resource private DictionaryBusinessService dictionaryBusinessService; + @Resource private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource private DataKeyCheckService dataKeyCheckService; + @Resource private DataOpinionService dataOpinionService; + private final String wfDicKey = "DevicePeriodCheckWfKey"; /* * 创建本年度的期间核查列表 @@ -105,6 +127,74 @@ public class DevicePeriodCheckServiceImpl implements DevicePeriodCheckService { return CommonResult.success(list); } + + @Override + public IPage queryPageList(Page page, DevicePeriodCheckPageReqVO pageReqVO) { + return devicePeriodCheckMapper.queryPageList(page, pageReqVO); + } + + @Override + public void updateEffectiveFlag(Long planId, String effectiveFlag) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(DevicePeriodCheckDO::getPlanId, planId); + updateWrapper.set(DevicePeriodCheckDO::getEffectiveFlag, effectiveFlag); + devicePeriodCheckMapper.update(updateWrapper); + } + + @Override + public List getListByPlanId(Long planId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(DevicePeriodCheckDO::getPlanId, planId); + return devicePeriodCheckMapper.selectList(queryWrapper); + } + + @Override + public CommonResult submitApply(DevicePeriodCheckSaveReqVO paramVO) { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + //当前登录用户昵称 + String nickName = SecurityFrameworkUtils.getLoginUserNickname(); + Long id = paramVO.getId(); + DevicePeriodCheckDO entity = getDevicePeriodCheck(id); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String processDefKey = dictionaryBusinessService.getValueByDataKey(wfDicKey); + if(ObjectUtils.isEmpty(processDefKey)) + throw exception0(DEVICE_PERIOD_CHECK_NOT_EXISTS.getCode(), "请先配置流程定义"); + Map variables = new JSONObject(); + variables.put("mainId", id); + variables.put("applyUser", nickName); + variables.put("applyUserId", loginUser.getId()); + variables.put("applyDepartment", loginUser.getVisitDeptName()); + variables.put("applyDepartmentId", loginUser.getVisitDeptId()); + variables.put("applyTime", sdf.format(new Date())); + variables.put(BPM_CALLBACK_BEAN_NAME, "devicePeriodCheckService"); //流程回调时使用的service + BpmProcessInstanceCreateReqDTO reqDTO = new BpmProcessInstanceCreateReqDTO(); + reqDTO.setBusinessKey(String.valueOf(id)); + reqDTO.setProcessDefinitionKey(processDefKey); + reqDTO.setVariables(variables); + CommonResult result = bpmProcessInstanceApi.createProcessInstance(loginUser.getId(), reqDTO); + if(!result.isSuccess()){ + throw exception0(DEVICE_PERIOD_CHECK_NOT_EXISTS.getCode(), result.getMsg()); + } + String wfInsId = result.getData(); + entity.setFlowInstanceId(wfInsId); + entity.setFlowStatus(QmsCommonConstant.IN_PROGRESS); + devicePeriodCheckMapper.updateById(entity); + DevicePeriodCheckRespVO respVO = BeanUtils.toBean(entity, DevicePeriodCheckRespVO.class); + return CommonResult.success(respVO); + } + + @Override + public DevicePeriodCheckVO getDevicePeriodCheckVO(Long id) { + Page page = new Page<>(1,10); + DevicePeriodCheckPageReqVO param = new DevicePeriodCheckPageReqVO(); + param.setId( id); + IPage pageList = queryPageList(page, param); + PageResult pageResult = new PageResult<>(pageList.getRecords(), pageList.getTotal()); + if(pageResult.getList().isEmpty()) + return null; + return pageResult.getList().get(0); + } + @Override public DevicePeriodCheckRespVO createDevicePeriodCheck(DevicePeriodCheckSaveReqVO createReqVO) { // 插入 @@ -162,4 +252,87 @@ public class DevicePeriodCheckServiceImpl implements DevicePeriodCheckService { return devicePeriodCheckMapper.selectPage(pageReqVO); } + @Override + public void updateBatch(List list) { + devicePeriodCheckMapper.updateBatch(list); + } + + @Override + public void insertBatch(List list) { + devicePeriodCheckMapper.insertBatch(list); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult callback(QmsBpmDTO reqDTO) { + log.error("流程回调:{}", JSONObject.toJSONString(reqDTO)); + JSONObject variables = reqDTO.getVariables(); + JSONObject taskVariables = variables.getJSONObject("taskVariables"); + String processInsId = variables.getString(QmsBpmConstant.BPM_PROCESS_INS_ID); + String currentActivityInsId = variables.getString(QmsBpmConstant.BPM_CUR_ACTIVITY_INS_ID); + String currentActivityId = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_ID); + String currentActivityName = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_NAME); + 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); + } + DevicePeriodCheckDO entity = getDevicePeriodCheck(Long.valueOf(mainId)); + + //判断是否最后一个节点 + String lastActivityFlag = "0"; + String firstActivityFlag = "0"; + if(!fieldExtensions.isEmpty()){ + for(int i = 0; i < fieldExtensions.size(); i++){ + JSONObject fieldExtension = fieldExtensions.getJSONObject(i); + String stringValue = fieldExtension.getString("stringValue"); + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG) && "1".equals(stringValue)){ + lastActivityFlag = "1"; + } + if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG) && "1".equals(stringValue)){ + firstActivityFlag = "1"; + } + } + } + //"RETURN_FLAG_Activity_001": true 标识驳回到发起环节 + if(("1").equals(returnFlag)){ + //驳回。流程需要配置退回到发起节点 + entity.setFlowStatus(QmsCommonConstant.REJECTED); + dataOpinionService.disableOpinionsByBusId(entity.getId()); + }else if("4".equals(PROCESS_STATUS)){ + //作废 + entity.setFlowStatus(QmsCommonConstant.VOID); + }else if("1".equals(PROCESS_STATUS)){ + //通过 +// assembleSignature(currentActivityId, entity); + DataCommonType dataCommonType = new DataCommonType(); + dataCommonType.setBusinessId(entity.getId()); + dataCommonType.setFlowInstanceId(entity.getFlowInstanceId()); + dataOpinionService.saveOpinionByWfCallback(dataCommonType, currentActivityId, currentActivityName, taskVariables); + if("1".equals(firstActivityFlag)) + entity.setFlowStatus(QmsCommonConstant.IN_PROGRESS); //驳回后重新提交 + if("1".equals(lastActivityFlag)){ + entity.setFlowStatus(QmsCommonConstant.COMPLETED); //结束审批 + } + } + devicePeriodCheckMapper.updateById(entity); + 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/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceCalibrationMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceCalibrationMapper.xml index da7cbcb8..7e778956 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceCalibrationMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceCalibrationMapper.xml @@ -117,7 +117,7 @@ - AND CHK_DT BETWEEN #{checkDate[0]} AND #{checkDate[1]} + AND c.CHK_DT BETWEEN #{checkDate[0]} AND #{checkDate[1]} and d.DEV_NAME like concat(concat('%', #{param.deviceName}), '%') diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.xml index c32e8a07..6a5e431a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DevicePeriodCheckMapper.xml @@ -9,7 +9,7 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - + @@ -45,6 +45,15 @@ + + + + + + + + + + + + \ No newline at end of file