Compare commits

..

9 Commits

81 changed files with 1010 additions and 1006 deletions

View File

@@ -24,4 +24,6 @@ public interface QmsPermissionConstant {
String SAMPLE_WAREHOUSE_ADMIN = "sample_warehouse_admin"; //样品库管理员 String SAMPLE_WAREHOUSE_ADMIN = "sample_warehouse_admin"; //样品库管理员
String DEVICE_MANAGER = "qms_device_manager"; //设备管理员 String DEVICE_MANAGER = "qms_device_manager"; //设备管理员
String ADMIN_ROLE = "ytjyAdmin"; // 超级管理员 标识
} }

View File

@@ -61,6 +61,9 @@ public class ConfigWarehouseLocationPageReqVO extends PageParam {
@Schema(description = "查询时进行权限过滤") @Schema(description = "查询时进行权限过滤")
private String permissionFilterFlag; private String permissionFilterFlag;
@Schema(description = "是否为管理员-可查看全部数据")
private Boolean adminFlag;
@Schema(description = "查询用-权限角色") @Schema(description = "查询用-权限角色")
private Set<Long> roleIds; private Set<Long> roleIds;

View File

@@ -16,6 +16,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 存放位置 Mapper * 存放位置 Mapper
@@ -29,9 +30,7 @@ public interface ConfigWarehouseLocationMapper extends BaseMapperX<ConfigWarehou
MPJLambdaWrapperX<ConfigWarehouseLocationDO> wrapper = new MPJLambdaWrapperX<>(); MPJLambdaWrapperX<ConfigWarehouseLocationDO> wrapper = new MPJLambdaWrapperX<>();
//仓库 //仓库
wrapper.leftJoin(ConfigWarehouseLocationParDO.class, ConfigWarehouseLocationParDO::getId, ConfigWarehouseLocationDO::getParentId) wrapper.leftJoin(ConfigWarehouseLocationParDO.class, ConfigWarehouseLocationParDO::getId, ConfigWarehouseLocationDO::getParentId);
// 权限
.leftJoin(ConfigPermissionDO.class, ConfigPermissionDO::getSourceId, ConfigWarehouseLocationDO::getId);
wrapper.selectAll(ConfigWarehouseLocationDO.class) wrapper.selectAll(ConfigWarehouseLocationDO.class)
.selectAs(ConfigWarehouseLocationParDO::getName, ConfigWarehouseLocationRespVO::getWarehouseName) .selectAs(ConfigWarehouseLocationParDO::getName, ConfigWarehouseLocationRespVO::getWarehouseName)
.selectAs(ConfigWarehouseLocationParDO::getCode, ConfigWarehouseLocationRespVO::getWarehouseCode) .selectAs(ConfigWarehouseLocationParDO::getCode, ConfigWarehouseLocationRespVO::getWarehouseCode)
@@ -48,12 +47,19 @@ public interface ConfigWarehouseLocationMapper extends BaseMapperX<ConfigWarehou
.eqIfPresent(ConfigWarehouseLocationDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) .eqIfPresent(ConfigWarehouseLocationDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
.betweenIfPresent(ConfigWarehouseLocationDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(ConfigWarehouseLocationDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ConfigWarehouseLocationDO::getRemark, reqVO.getRemark()) .eqIfPresent(ConfigWarehouseLocationDO::getRemark, reqVO.getRemark())
// 角色权限 ;
.and(CollUtil.isNotEmpty(reqVO.getRoleIds()), wrapper1 -> Boolean adminFlag = reqVO.getAdminFlag();
wrapper1.in(ConfigPermissionDO::getTargetId, reqVO.getRoleIds()) // 角色权限 - 使用 exists 子查询
.or() if (adminFlag == null || !adminFlag && CollUtil.isNotEmpty(reqVO.getRoleIds())) {
.eqIfExists(ConfigWarehouseLocationDO::getCreator, SecurityFrameworkUtils.getLoginUserId())) String roleIdsStr = reqVO.getRoleIds().stream()
.orderByDesc(ConfigWarehouseLocationDO::getSortNo); .map(String::valueOf)
.collect(Collectors.joining(","));
wrapper.and(wrapper1 ->
wrapper1.exists("SELECT 1 FROM t_cfg_perm WHERE t_cfg_perm.SRC_ID = t.ID AND t_cfg_perm.deleted = 0 AND t_cfg_perm.TGT_ID IN (" + roleIdsStr + ")")
);
}
wrapper.orderByDesc(ConfigWarehouseLocationDO::getSortNo);
return selectJoinPage(reqVO, ConfigWarehouseLocationRespVO.class, wrapper); return selectJoinPage(reqVO, ConfigWarehouseLocationRespVO.class, wrapper);
} }

View File

@@ -3,6 +3,7 @@ package com.zt.plat.module.qms.business.config.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zt.plat.framework.common.biz.system.permission.PermissionCommonApi;
import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO;
@@ -12,6 +13,7 @@ import com.zt.plat.module.qms.business.config.controller.vo.ConfigWarehouseLocat
import com.zt.plat.module.qms.enums.QmsPermissionConstant; import com.zt.plat.module.qms.enums.QmsPermissionConstant;
import com.zt.plat.module.qms.enums.QmsWarehouseLocationConstant; import com.zt.plat.module.qms.enums.QmsWarehouseLocationConstant;
import com.zt.plat.module.system.api.permission.PermissionApi; import com.zt.plat.module.system.api.permission.PermissionApi;
import com.zt.plat.module.system.api.permission.RoleApi;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@@ -45,6 +47,8 @@ public class ConfigWarehouseLocationServiceImpl implements ConfigWarehouseLocati
@Autowired @Autowired
private PermissionApi permissionApi; private PermissionApi permissionApi;
@Autowired
private PermissionCommonApi permissionCommonApi;
@Override @Override
public ConfigWarehouseLocationRespVO save(ConfigWarehouseLocationSaveReqVO reqVo) { public ConfigWarehouseLocationRespVO save(ConfigWarehouseLocationSaveReqVO reqVo) {
@@ -182,6 +186,8 @@ public class ConfigWarehouseLocationServiceImpl implements ConfigWarehouseLocati
// 获取当前用户角色 // 获取当前用户角色
CommonResult<Set<Long>> userRoleIds = permissionApi.getUserRoleIdListByUserId(SecurityFrameworkUtils.getLoginUserId()); CommonResult<Set<Long>> userRoleIds = permissionApi.getUserRoleIdListByUserId(SecurityFrameworkUtils.getLoginUserId());
pageReqVO.setRoleIds(userRoleIds.getData()); pageReqVO.setRoleIds(userRoleIds.getData());
CommonResult<Boolean> hasAnyRoles = permissionCommonApi.hasAnyRoles(SecurityFrameworkUtils.getLoginUserId(), QmsPermissionConstant.ADMIN_ROLE);
pageReqVO.setAdminFlag(hasAnyRoles.getData());
return configWarehouseLocationMapper.selectPage(pageReqVO); return configWarehouseLocationMapper.selectPage(pageReqVO);
} }

View File

@@ -83,4 +83,13 @@ public class DataOpinionRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
//===========扩展字段
@Schema(description = "审批时间年月日")
@ExcelProperty("审批时间年月日")
private String opinionTimeYYYYMMDD;
@Schema(description = "base64签名图片")
private String signatureIdBase64;
} }

View File

@@ -28,6 +28,8 @@ public interface DataOpinionService {
List<DataOpinionDO> getListByFlowInsId(String flowInsId); List<DataOpinionDO> getListByFlowInsId(String flowInsId);
JSONObject assembleOpinion(Long busId);
/** /**
* 创建审批意见 * 创建审批意见
* *

View File

@@ -1,6 +1,7 @@
package com.zt.plat.module.qms.common.data.service; package com.zt.plat.module.qms.common.data.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -20,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import com.zt.plat.module.qms.common.data.dal.dataobject.DataOpinionDO; import com.zt.plat.module.qms.common.data.dal.dataobject.DataOpinionDO;
@@ -105,6 +107,30 @@ public class DataOpinionServiceImpl implements DataOpinionService {
return dataOpinionMapper.selectList(query); return dataOpinionMapper.selectList(query);
} }
@Override
public JSONObject assembleOpinion(Long busId) {
List<DataOpinionDO> opinionList = this.getListByBusId(busId);
List<DataOpinionRespVO> opinionRespVOList = BeanUtils.toBean(opinionList, DataOpinionRespVO.class);
List<Long> signatureIdList = opinionRespVOList.stream().map(DataOpinionRespVO::getOpinionSignatureId).distinct().toList();
List<ConfigUserSignatureDO> signatureList = new ArrayList<>();
if(!signatureIdList.isEmpty())
signatureList = configUserSignatureService.getByIdList(signatureIdList);
JSONObject opinion = new JSONObject();
for(DataOpinionRespVO opinionRespVO : opinionRespVOList){
for(ConfigUserSignatureDO signature : signatureList){
if(signature.getId().equals(opinionRespVO.getOpinionSignatureId())){
opinionRespVO.setSignatureIdBase64(signature.getSignatureContent());
}
}
if(opinionRespVO.getOpinionTime() != null){
opinionRespVO.setOpinionTimeYYYYMMDD(DateUtil.format(opinionRespVO.getOpinionTime(), "yyyy-MM-dd"));
}
String nodeKey = opinionRespVO.getNodeKey();
opinion.put(nodeKey, opinionRespVO);
}
return opinion;
}
@Override @Override
public DataOpinionRespVO createDataOpinion(DataOpinionSaveReqVO createReqVO) { public DataOpinionRespVO createDataOpinion(DataOpinionSaveReqVO createReqVO) {
// 插入 // 插入

View File

@@ -13,4 +13,9 @@ public class DeviceConstant {
public static final String FREQUENCY_TYPE_MONTH = "month"; public static final String FREQUENCY_TYPE_MONTH = "month";
public static final String FREQUENCY_TYPE_DAY = "day"; public static final String FREQUENCY_TYPE_DAY = "day";
//期间核查目标类型
public static final String PERIOD_CHECK_TAGET_DEVICE = "device";
public static final String PERIOD_CHECK_TAGET_MATERIAL = "material";
} }

View File

@@ -56,7 +56,6 @@ public class DeviceCalibrationController extends AbstractFileUploadController im
} }
@Resource private DeviceCalibrationService deviceCalibrationService; @Resource private DeviceCalibrationService deviceCalibrationService;
@Resource private DeviceCalibrationPlanService deviceCalibrationPlanService;
@Resource private DeviceProductService deviceProductService; @Resource private DeviceProductService deviceProductService;
@PostMapping("/create") @PostMapping("/create")
@@ -65,11 +64,18 @@ public class DeviceCalibrationController extends AbstractFileUploadController im
return success(deviceCalibrationService.createDeviceCalibration(createReqVO)); return success(deviceCalibrationService.createDeviceCalibration(createReqVO));
} }
@PostMapping("/createByDeviceId")
@Operation(summary = "创建设备-检定校准")
public CommonResult<DeviceCalibrationRespVO> createByDeviceId(@RequestBody DeviceCalibrationSaveReqVO createReqVO) {
return success(deviceCalibrationService.createByDeviceId(createReqVO));
}
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新设备-检定校准") @Operation(summary = "更新设备-检定校准")
public CommonResult<Boolean> updateDeviceCalibration(@Valid @RequestBody DeviceCalibrationSaveReqVO updateReqVO) { public CommonResult<DeviceCalibrationRespVO> updateDeviceCalibration(@Valid @RequestBody DeviceCalibrationSaveReqVO updateReqVO) {
deviceCalibrationService.updateDeviceCalibration(updateReqVO); DeviceCalibrationDO entity = deviceCalibrationService.updateDeviceCalibration(updateReqVO);
return success(true); DeviceCalibrationRespVO vo = BeanUtils.toBean(entity, DeviceCalibrationRespVO.class);
return success(vo);
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")

View File

@@ -2,8 +2,10 @@ package com.zt.plat.module.qms.resource.device.controller.admin;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zt.plat.module.qms.resource.device.common.DeviceConstant;
import com.zt.plat.module.qms.resource.device.controller.vo.*; import com.zt.plat.module.qms.resource.device.controller.vo.*;
import com.zt.plat.module.qms.resource.device.service.DeviceProductService; import com.zt.plat.module.qms.resource.device.service.DeviceProductService;
import com.zt.plat.module.qms.resource.material.service.MaterialProductService;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@@ -56,6 +58,7 @@ public class DevicePeriodCheckController extends AbstractFileUploadController im
@Resource private DevicePeriodCheckService devicePeriodCheckService; @Resource private DevicePeriodCheckService devicePeriodCheckService;
@Resource private DeviceProductService deviceProductService; @Resource private DeviceProductService deviceProductService;
@Resource private MaterialProductService materialProductService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建设备-期间核查") @Operation(summary = "创建设备-期间核查")
@@ -65,9 +68,10 @@ public class DevicePeriodCheckController extends AbstractFileUploadController im
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新设备-期间核查") @Operation(summary = "更新设备-期间核查")
public CommonResult<Boolean> updateDevicePeriodCheck(@Valid @RequestBody DevicePeriodCheckSaveReqVO updateReqVO) { public CommonResult<DevicePeriodCheckRespVO> updateDevicePeriodCheck(@Valid @RequestBody DevicePeriodCheckSaveReqVO updateReqVO) {
devicePeriodCheckService.updateDevicePeriodCheck(updateReqVO); DevicePeriodCheckDO entity = devicePeriodCheckService.updateDevicePeriodCheck(updateReqVO);
return success(true); DevicePeriodCheckRespVO vo = BeanUtils.toBean(entity, DevicePeriodCheckRespVO.class);
return success(vo);
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")
@@ -95,11 +99,19 @@ public class DevicePeriodCheckController extends AbstractFileUploadController im
return success(BeanUtils.toBean(devicePeriodCheck, DevicePeriodCheckRespVO.class)); return success(BeanUtils.toBean(devicePeriodCheck, DevicePeriodCheckRespVO.class));
} }
@GetMapping("/getVO") @GetMapping("/getVoDevice")
@Operation(summary = "获得设备-检定校准") @Operation(summary = "获得设备-检定校准")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<DevicePeriodCheckVO> getVO(@RequestParam("id") Long id) { public CommonResult<DevicePeriodCheckVO> getVoDevice(@RequestParam("id") Long id) {
DevicePeriodCheckVO vo = devicePeriodCheckService.getDevicePeriodCheckVO(id); DevicePeriodCheckVO vo = devicePeriodCheckService.getVoDevice(id);
return success(vo);
}
@GetMapping("/getVoMaterial")
@Operation(summary = "获得设备-检定校准")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<DevicePeriodCheckVO> getVoMaterial(@RequestParam("id") Long id) {
DevicePeriodCheckVO vo = devicePeriodCheckService.getVoMaterial(id);
return success(vo); return success(vo);
} }
@@ -109,9 +121,9 @@ public class DevicePeriodCheckController extends AbstractFileUploadController im
return devicePeriodCheckService.submitApply(param); return devicePeriodCheckService.submitApply(param);
} }
@GetMapping("/page") @GetMapping("/pageDevice")
@Operation(summary = "获得设备-期间核查分页") @Operation(summary = "获得设备-期间核查分页")
public CommonResult<PageResult<DevicePeriodCheckVO>> getDevicePeriodCheckPage(@Valid DevicePeriodCheckPageReqVO param) { public CommonResult<PageResult<DevicePeriodCheckVO>> pageDevice(@Valid DevicePeriodCheckPageReqVO param) {
Page<DevicePeriodCheckPageReqVO> page = new Page<>(param.getPageNo(), param.getPageSize()); Page<DevicePeriodCheckPageReqVO> page = new Page<>(param.getPageNo(), param.getPageSize());
Long productId = param.getProductId(); Long productId = param.getProductId();
if(!ObjectUtils.isEmpty(productId)){ if(!ObjectUtils.isEmpty(productId)){
@@ -124,7 +136,29 @@ public class DevicePeriodCheckController extends AbstractFileUploadController im
param.setFlowStatusList(Arrays.asList(flowStatus.split(","))); param.setFlowStatusList(Arrays.asList(flowStatus.split(",")));
param.setFlowStatus(""); param.setFlowStatus("");
} }
IPage<DevicePeriodCheckVO> pageList = devicePeriodCheckService.queryPageList(page, param); param.setCheckTarget(DeviceConstant.PERIOD_CHECK_TAGET_DEVICE);
IPage<DevicePeriodCheckVO> pageList = devicePeriodCheckService.queryPageListDevice(page, param);
PageResult<DevicePeriodCheckVO> pageResult = new PageResult<>(pageList.getRecords(), pageList.getTotal());
return CommonResult.success(pageResult);
}
@GetMapping("/pageMaterial")
@Operation(summary = "获得设备-期间核查分页")
public CommonResult<PageResult<DevicePeriodCheckVO>> pageMaterial(@Valid DevicePeriodCheckPageReqVO param) {
Page<DevicePeriodCheckPageReqVO> page = new Page<>(param.getPageNo(), param.getPageSize());
Long productId = param.getProductId();
if(!ObjectUtils.isEmpty(productId)){
List<Long> 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("");
}
param.setCheckTarget(DeviceConstant.PERIOD_CHECK_TAGET_MATERIAL);
IPage<DevicePeriodCheckVO> pageList = devicePeriodCheckService.queryPageListMaterial(page, param);
PageResult<DevicePeriodCheckVO> pageResult = new PageResult<>(pageList.getRecords(), pageList.getTotal()); PageResult<DevicePeriodCheckVO> pageResult = new PageResult<>(pageList.getRecords(), pageList.getTotal());
return CommonResult.success(pageResult); return CommonResult.success(pageResult);
} }

Some files were not shown because too many files have changed in this diff Show More