Commit ac49929a authored by 胡秀武's avatar 胡秀武

模型审核,模型验收

parent 7d75b589
......@@ -36,8 +36,12 @@
</properties>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
......
......@@ -18,7 +18,7 @@ import java.util.TimeZone;
* @Date: 2022/2/21 15:48
* @Description:启动类
*/
//com.pms.ocp.mapper
@SpringBootApplication
@MapperScan(basePackages = {"com.pms.ocp.mapper"})
@ConfigurationPropertiesScan
......
package com.pms.ocp.controller;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.model.vo.ModelAcceptVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ModelAcceptService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/7 15:56
*/
@Slf4j
@RequestMapping("/modelAccept")
@RestController
@Api(tags = "模型管控-模型验收")
public class ModelAcceptController {
@Autowired
private ModelAcceptService modelAcceptService;
/**
* 模型验收列表
* @author huxiuwu
* @date 2022/4/7
* @return pms.ocp.model.vo.ResponseVO
**/
@ApiOperation("模型验收列表")
@GetMapping("/modelAcceptList")
public ResponseVO modelAuditList() {
return modelAcceptService.modelAcceptList();
}
/**
* 模型验收详情
* @author huxiuwu
* @date 2022/4/8
* @param modelCode 模型编码
* @param requirementCode 需求编码
* @return pms.ocp.model.vo.ResponseVO
**/
@ApiOperation("模型验收详情")
@GetMapping("/modelAuditDetail")
public ResponseVO<ModelAcceptVo> modelAuditDetail(@ApiParam(value = "需求编码") @RequestParam(value = "modelCode") String modelCode,
@ApiParam(value = "模型编码") @RequestParam(value = "requirementCode") String requirementCode) {
return modelAcceptService.modelAuditDetail(modelCode,requirementCode);
}
/**
* 模型信息对比
* @author huxiuwu
* @date 2022/4/11
* @param requirementCode 需求编码
* @param modelCode 模型编码
* @param tableName 表名称
* @return ResponseVO<java.util.List<com.pms.ocp.model.entity.ModelPropInfo>>
**/
@ApiOperation("模型信息对比")
@GetMapping("/modelDetailCompare")
public ResponseVO<List<ModelPropInfo>> modelDetailCompare(@ApiParam(value = "需求编码") @RequestParam(value = "requirementCode") String requirementCode,
@ApiParam(value = "模型编码") @RequestParam(value = "modelCode") String modelCode,
@ApiParam(value = "表名称") @RequestParam(value = "tableName") String tableName) {
return modelAcceptService.modelDetailCompare(requirementCode,modelCode,tableName);
}
/**
*
* @author huxiuwu
* @date 2022/4/11
* @param model 模型数据
* @return ResponseVO<java.util.List<com.pms.ocp.model.entity.ModelPropInfo>>
**/
@ApiOperation("验收通过")
@PostMapping("/modelAcceptPass")
public ResponseVO<List<ModelPropInfo>> modelAcceptPass(@RequestBody Model model) {
return modelAcceptService.modelAcceptPass(model);
}
}
package com.pms.ocp.controller;
import com.github.pagehelper.PageInfo;
import com.pms.ocp.model.dto.ModelAuditDto;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.model.vo.ModelCheckVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ModelCheckService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/6 10:07
* 模型审核
*/
@Slf4j
@RequestMapping("/modelAudit")
@RestController
@Api(tags = "模型管控-模型审核")
public class ModelCheckController {
@Autowired
private ModelCheckService modelCheckService;
/**
* 模型审核列表
* @author huxiuwu
* @date 2022/4/6
* @param currentPage 当前页
* @param pageSize 每页数量
* @param searchCondition 搜索条件
* @return ResponseVO<java.util.List<com.pms.ocp.model.vo.ModelCheckVo>>
**/
@ApiOperation("模型审核列表")
@GetMapping("/modelAuditList")
public ResponseVO<PageInfo<ModelCheckVo>> modelAuditList(@ApiParam(value = "当前页") @RequestParam(value = "currentPage", required = false,defaultValue = "1") Integer currentPage,
@ApiParam(value = "每页数量") @RequestParam(value = "pageSize", required = false,defaultValue = "10") Integer pageSize,
@ApiParam(value = "搜索条件") @RequestParam(value = "searchCondition", required = false) String searchCondition) {
return modelCheckService.modelAuditList(currentPage,pageSize,searchCondition);
}
/**
* 修改审核状态
* @author huxiuwu
* @date 2022/4/6
* @param ocp
* @return pms.ocp.model.vo.ResponseVO
**/
@ApiOperation("修改审核状态")
@PostMapping("/updateAuditType")
public ResponseVO updateAuditType (@RequestBody ModelAuditDto ocp){
return modelCheckService.updateAuditType(ocp);
}
/**
* 模型关系表
* @author huxiuwu
* @date 2022/4/7
* @param modelCode
* @return pms.ocp.model.vo.ResponseVO
**/
@ApiOperation("模型关系")
@GetMapping("/modelRelation")
public ResponseVO<List<ModelPropInfo>> modelRelation (@ApiParam(value = "模型编码") @RequestParam(value = "modelCode")String modelCode){
return modelCheckService.modelRelation(modelCode);
}
}
package com.pms.ocp.controller;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/11 17:15
*/
public class ModelCheckRuleController {
}
......@@ -51,9 +51,10 @@ public class ModelClassifyController {
public ResponseVO subclassDetailsList(@RequestParam int currentPage,
@RequestParam int pageSize,
@RequestParam(required = false,defaultValue = "") String parentGroupCode,
@RequestParam(required = false,defaultValue = "") String subclassGroupName
@RequestParam(required = false,defaultValue = "") String subclassGroupName,
@RequestParam(required = false) boolean isTop
) {
return modelClassifyService.subclassDetailsList(currentPage, pageSize, parentGroupCode, subclassGroupName);
return modelClassifyService.subclassDetailsList(currentPage, pageSize, parentGroupCode, subclassGroupName,isTop);
}
/**
......
package com.pms.ocp.mapper;
import com.pms.ocp.model.entity.ModelPropInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/9 14:46
*/
@Mapper
public interface MiddleGroundModelMapper {
List<String> selectModels(@Param("modelName") String modelName);
ModelPropInfo selectMiddleGroundModeByName(@Param("modelName") String modelName,@Param("schemaName")String schemaName);
}
package com.pms.ocp.mapper;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.entity.PropInfo;
import com.pms.ocp.model.vo.ModelAcceptListVo;
import com.pms.ocp.model.vo.ModelAcceptVo;
import com.pms.ocp.model.vo.ModelCheckVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/7 16:14
*/
@Mapper
public interface ModelAcceptMapper {
List<ModelAcceptListVo> modelAcceptList();
ModelAcceptVo modelAuditDetail(@Param("requirementCode") String requirementCode);
List<ModelCheckVo> selectModelList();
List<ModelCheckVo> relationModels(@Param("modelCode") String modelCode);
List<PropInfo> selectPropList(String modelCode);
boolean deleteModelVersion(Model model);
boolean deletePropVersion(Model model);
boolean deleteRequirementVersion(Model model);
boolean deleteAcceptVersion(Model model);
boolean deleteModelRelationProp(Model model);
}
package com.pms.ocp.mapper;
import com.pms.ocp.model.dto.ModelAuditDto;
import com.pms.ocp.model.dto.OcpModelRequirementAcceptDto;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.model.vo.ModelCheckVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/6 10:13
*/
@Mapper
public interface ModelCheckMapper {
List<ModelCheckVo> modelAuditList(@Param("searchCondition") String searchCondition);
List<ModelCheckVo> selectCompanyList();
boolean updateAuditState(ModelAuditDto ocp);
boolean saveAccept(OcpModelRequirementAcceptDto ocp);
List<ModelPropInfo> selectModelOwnerProp();
List<String> selectModelCodeList(@Param("modelCode") String modelCode);
void deleteByRequirementCode(ModelAuditDto ocp);
}
package com.pms.ocp.model.dto;
import lombok.Data;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/6 17:50
*/
@Data
public class ModelAuditDto {
/**
* 审核状态
*/
private Integer auditState;
/**
* 模型编码
*/
private String modelCode;
/**
* 需求编号
*/
private String requirementCode;
}
package com.pms.ocp.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 模型需求验收表(OcpModelRequirementAcceptDto)实体类
*
* @author huxiuwu
* @since 2022-04-06 17:18:51
*/
@Data
public class OcpModelRequirementAcceptDto implements Serializable {
private static final long serialVersionUID = -44873798104620306L;
/**
* 主键 
*/
@ApiModelProperty(value = "主键")
private String objId;
/**
* 需求编码 
*/
@ApiModelProperty(value = "需求编码 ")
private String requirementCode;
/**
* 服务编码
*/
@ApiModelProperty(value = "服务编码")
private String apiCode;
/**
* 验收状态0:未验收 1:验收通过 2:验收拒绝
*/
@ApiModelProperty(value = "验收状态0:未验收 1:验收通过 2:验收拒绝")
private Integer acceptStats;
/**
* 验收单位 
*/
@ApiModelProperty(value = "验收单位")
private String acceptCompanyCode;
/**
* 验收部门 
*/
@ApiModelProperty(value = "验收部门")
private String acceptDepartment;
/**
* 验收人 
*/
@ApiModelProperty(value = "验收人")
private String acceptUserId;
/**
* 验收人姓名 
*/
@ApiModelProperty(value = "验收人姓名")
private String acceptUserName;
/**
* 验收时间 
*/
@ApiModelProperty(value = "验收时间 ")
private Date acceptCtime;
/**
* 修改时间 
*/
@ApiModelProperty(value = "修改时间")
private Date acceptMtime;
/**
* 是否删除0:否 1:是
*/
@ApiModelProperty(value = "是否删除0:否 1:是")
private Integer isDelete;
}
......@@ -132,6 +132,12 @@ public class Model {
* 建设厂商
*/
private String apiUnit;
/**
* 需求编码
*/
@TableField(exist = false)
private String requirementCode;
}
// create table ocp_model_base
......
package com.pms.ocp.model.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/7 11:13
*/
@Data
public class ModelPropInfo {
/**
* 模型名称
*/
private String modelName;
/**
* 模型名称英文
*/
private String modelTable;
/**
* 模型编码
*/
@JsonIgnore
private String modelCode;
/**
* 字段list
*/
private List<PropInfo> propList;
}
package com.pms.ocp.model.entity;
import lombok.Data;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/7 11:18
*/
@Data
public class PropInfo {
/**
* 字段名称
*/
private String propName;
/**
* 字段类型
*/
private String propType;
/**
* 数字长度
*/
private Integer propLength;
/**
* 是否相同
*/
private boolean isSame;
}
package com.pms.ocp.model.vo;
import lombok.Data;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/8 11:19
*/
@Data
public class ModelAcceptListVo {
private String modelCode;
private String modelName;
private String requirementCode;
private String tableName;
}
package com.pms.ocp.model.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/8 9:23
*/
@Data
public class ModelAcceptVo {
/**
* 需求编码
*/
@ApiModelProperty(value = "需求编码")
private String requirementCode;
/**
*提交单位
*/
@ApiModelProperty(value = "提交单位")
private String submitCompanyName;
/**
* 提交人
*/
@ApiModelProperty(value = "提交人")
private String submitUser;
/**
* 提交人
*/
@ApiModelProperty(value = "提交人")
private String modelGroupName;
/**
* 提交时间
*/
@ApiModelProperty(value = "提交时间")
private Date submitTime;
/**
*模型名称
*/
@ApiModelProperty(value = "模型名称")
private String modelName;
/**
* 所属资源
*/
@ApiModelProperty(value = "所属资源")
private String belongResource;
/**
* 关联设备
*/
@ApiModelProperty(value = "所属资源")
private List<ModelCheckVo> RelationModels;
/**
* 需求描述
*/
@ApiModelProperty(value = "所属资源")
private String requirementDesc;
/**
* 审核状态
*/
@ApiModelProperty(value = "审核状态")
private Integer auditState;
/**
* 审核人姓名
*/
@ApiModelProperty(value = "审核人姓名")
private String auditUserName;
/**
* 审核时间
*/
@ApiModelProperty(value = "审核时间")
private Date auditTime;
/**
* 审核意见
*/
@ApiModelProperty(value = "审核意见")
private String auditOpinion;
}
......@@ -2,7 +2,6 @@ package com.pms.ocp.model.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -29,7 +28,7 @@ public class ModelAuditVO {
/**
* 模型编码
*/
@ApiModelProperty(value = "模型事记编号")
@ApiModelProperty(value = "模型编码")
private int modelCode;
/**
......
package com.pms.ocp.model.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 模型审核vo
* @author huxiuwu
* @version 1.0
* @date 2022/4/6 11:02
*/
@Data
public class ModelCheckVo {
/**
* 模型名称
*/
@ApiModelProperty(value = "模型名称")
private String modelName;
/**
* 模型编码
*/
@ApiModelProperty(value = "模型编码")
private String modelCode;
/**
* 所属专业
*/
@ApiModelProperty(value = "所属专业")
private String belongMajor;
/**
* 表名称
*/
@ApiModelProperty(value = "表名称")
private String tableName;
/**
* 流程类型
*/
@ApiModelProperty(value = "流程类型")
private String flowState;
/**
* 申请单位名称
*/
@ApiModelProperty(value = "申请单位名称")
private String proposerCompanyName;
/**
* 申请单位编码
*/
@ApiModelProperty(value = "申请单位编码")
private String proposerCompanyCode;
/**
* 需求审核状态
*/
@ApiModelProperty(value = "需求审核状态")
private Integer demandAuditState;
/**
* 审核意见
*/
@ApiModelProperty(value = "审核意见")
private String auditOpinion;
/**
* 审核人姓名
*/
@ApiModelProperty(value = "审核人姓名")
private String auditName;
/**
* 审核时间
*/
@ApiModelProperty(value = "审核时间")
private Date auditTime;
/**
* 需求编码
*/
@ApiModelProperty(value = "审核时间")
private String requirementCode;
}
package com.pms.ocp.service;
import com.pms.ocp.model.entity.ModelPropInfo;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/9 14:39
*/
public interface MiddleGroundModelService {
ModelPropInfo selectMiddleGroundModeByName(String ModelName);
}
package com.pms.ocp.service;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.model.vo.ModelAcceptVo;
import com.pms.ocp.model.vo.ResponseVO;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/7 16:12
*/
public interface ModelAcceptService {
ResponseVO modelAcceptList();
ResponseVO<ModelAcceptVo> modelAuditDetail(String modelCode, String requirementCode);
ResponseVO<List<ModelPropInfo>> modelDetailCompare(String requirementCode, String modelCode, String tableName);
ResponseVO<List<ModelPropInfo>> modelAcceptPass(Model model);
}
package com.pms.ocp.service;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/11 17:17
*/
public interface ModelCheckRuleService {
}
package com.pms.ocp.service;
import com.github.pagehelper.PageInfo;
import com.pms.ocp.model.dto.ModelAuditDto;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.model.vo.ModelCheckVo;
import com.pms.ocp.model.vo.ResponseVO;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/6 10:09
*/
public interface ModelCheckService {
ResponseVO<PageInfo<ModelCheckVo>> modelAuditList(Integer currentPage, Integer pageSize, String searchCondition);
ResponseVO updateAuditType(ModelAuditDto ocp);
ResponseVO<List<ModelPropInfo>> modelRelation(String modelCode);
}
......@@ -16,7 +16,7 @@ public interface ModelClassifyService {
ResponseVO insert(List<ModelClassify> list);
ResponseVO subclassDetailsList(int currentPage,int pageSize,String parentGroupCode,String subclassGroupName);
ResponseVO subclassDetailsList(int currentPage, int pageSize, String parentGroupCode, String subclassGroupName, boolean isTop);
ResponseVO update(List<ModelClassify> list);
......
package com.pms.ocp.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.pms.ocp.mapper.MiddleGroundModelMapper;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.service.MiddleGroundModelService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/9 14:40
*/
@Service
@DS("middleGround")
public class MiddleGroundModelServiceImpl implements MiddleGroundModelService {
@Resource
private MiddleGroundModelMapper middleGroundModelMapper;
/**
* 根据表名称查询中台表信息
* @author huxiuwu
* @date 2022/4/9
* @param ModelName
* @return pms.ocp.model.entity.ModelPropInfo
**/
@Override
public ModelPropInfo selectMiddleGroundModeByName(String ModelName) {
List<String> schemaNameList = middleGroundModelMapper.selectModels(ModelName);
if (CollectionUtil.isEmpty(schemaNameList)){
return new ModelPropInfo();
}
return middleGroundModelMapper.selectMiddleGroundModeByName(ModelName,schemaNameList.get(0));
}
}
package com.pms.ocp.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.pms.ocp.mapper.ModelAcceptMapper;
import com.pms.ocp.mapper.ModelMapper;
import com.pms.ocp.model.entity.Model;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.model.entity.PropInfo;
import com.pms.ocp.model.vo.ModelAcceptListVo;
import com.pms.ocp.model.vo.ModelAcceptVo;
import com.pms.ocp.model.vo.ModelCheckVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.MiddleGroundModelService;
import com.pms.ocp.service.ModelAcceptService;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/7 16:13
*/
@Service
@Slf4j
public class ModelAcceptServiceImpl implements ModelAcceptService {
@Resource
private ModelAcceptMapper modelAcceptMapper;
@Resource
private MiddleGroundModelService middleGroundModelService;
@Resource
private ModelMapper modelMapper;
/**
* 模型验收列表
* @author huxiuwu
* @date 2022/4/7
* @return pms.ocp.model.vo.ResponseVO
**/
@Override
public ResponseVO modelAcceptList() {
List<ModelAcceptListVo> list = modelAcceptMapper.modelAcceptList();
return ResponseVO.ok(list);
}
/**
* 模型验收详情
* @author huxiuwu
* @date 2022/4/8
* @param modelCode 模型编码
* @param requirementCode 需求编码
* @return pms.ocp.model.vo.ResponseVO
**/
@Override
public ResponseVO<ModelAcceptVo> modelAuditDetail(String modelCode, String requirementCode) {
ModelAcceptVo vo = modelAcceptMapper.modelAuditDetail(requirementCode);
//关联模型code
List<ModelCheckVo> relationModel = modelAcceptMapper.relationModels(modelCode);
vo.setRelationModels(relationModel);
return ResponseVO.ok(vo);
}
/**
* 模型信息对比
* @author huxiuwu
* @date 2022/4/11
* @param requirementCode 需求编码
* @param modelCode 模型编码
* @param tableName 表名称
* @return ResponseVO<java.util.List<com.pms.ocp.model.entity.ModelPropInfo>>
**/
@Override
public ResponseVO<List<ModelPropInfo>> modelDetailCompare(String requirementCode,String modelCode,String tableName) {
//查询中台库数据
ModelPropInfo modelPropInfo = middleGroundModelService.selectMiddleGroundModeByName(tableName);
//查询自己的属性
List<PropInfo> propList = modelAcceptMapper.selectPropList(modelCode);
//比较并封装
List<ModelPropInfo> result = compareData(modelPropInfo ,propList,tableName);
return ResponseVO.ok(result);
}
/**
* @author huxiuwu
* @date 2022/4/11
* @param model 模型数据
* @return ResponseVO<java.util.List<com.pms.ocp.model.entity.ModelPropInfo>>
**/
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
@Override
public ResponseVO<List<ModelPropInfo>> modelAcceptPass(Model model) {
//新增至模型基础表
int insert = modelMapper.insert(model);
//删除模型版本表,属性版本表,需求表,审核表
boolean modelVersion = modelAcceptMapper.deleteModelVersion(model);
boolean propVersion = modelAcceptMapper.deletePropVersion(model);
boolean requireVersion = modelAcceptMapper.deleteRequirementVersion(model);
boolean acceptVersion = modelAcceptMapper.deleteAcceptVersion(model);
boolean modelRelationProp = modelAcceptMapper.deleteModelRelationProp(model);
if ((modelVersion && modelRelationProp && propVersion && requireVersion && acceptVersion && insert!=0 )==false ){
throw new Exception();
}
return ResponseVO.ok();
}
/**
* 比较是否相似
* @author huxiuwu
* @date 2022/4/11
* @param modelPropInfo
* @param propList
* @param tableName
* @return List<com.pms.ocp.model.entity.ModelPropInfo>
**/
private List<ModelPropInfo> compareData(ModelPropInfo modelPropInfo, List<PropInfo> propList, String tableName) {
List<ModelPropInfo> list = new LinkedList<>();
ModelPropInfo owner = new ModelPropInfo();
List<PropInfo> middleGroundList = modelPropInfo.getPropList();
owner.setModelTable(tableName);
if (CollectionUtil.isEmpty(middleGroundList)||CollectionUtil.isEmpty(propList)){
owner.setPropList(propList);
list.add(owner);
list.add(modelPropInfo);
return list;
}
List<PropInfo> ownerList = propList.stream().map(m -> {
middleGroundList.stream().filter(m2-> Objects.equals(m.getPropName(),m2.getPropName())).forEach(m2->
m.setSame(true)
);
return m;
}).collect(Collectors.toList());
owner.setPropList(ownerList);
list.add(owner);
list.add(modelPropInfo);
return list;
}
}
package com.pms.ocp.service.impl;
import com.pms.ocp.service.ModelCheckRuleService;
import org.springframework.stereotype.Service;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/11 17:17
*/
@Service
public class ModelCheckRuleServiceImpl implements ModelCheckRuleService {
}
package com.pms.ocp.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pms.ocp.common.constants.CodeEnum;
import com.pms.ocp.common.constants.Constant;
import com.pms.ocp.mapper.ModelCheckMapper;
import com.pms.ocp.model.dto.ModelAuditDto;
import com.pms.ocp.model.dto.OcpModelRequirementAcceptDto;
import com.pms.ocp.model.entity.ModelPropInfo;
import com.pms.ocp.model.vo.ModelCheckVo;
import com.pms.ocp.model.vo.ResponseVO;
import com.pms.ocp.service.ModelCheckService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author huxiuwu
* @version 1.0
* @date 2022/4/6 10:12
*/
@Slf4j
@Service
public class ModelCheckServiceImpl implements ModelCheckService {
@Resource
private ModelCheckMapper modelCheckMapper;
/**
* 模型审核列表
* @author huxiuwu
* @date 2022/4/6
* @param currentPage 当前页
* @param pageSize 每页数量
* @param searchCondition
* @return ResponseVO<java.util.List<com.pms.ocp.model.vo.ModelCheckVo>>
**/
@Override
public ResponseVO<PageInfo<ModelCheckVo>> modelAuditList(Integer currentPage, Integer pageSize, String searchCondition) {
PageHelper.startPage(currentPage,pageSize);
List<ModelCheckVo> modelCheckVoList = modelCheckMapper.modelAuditList(searchCondition);
//查询组织机构
List<ModelCheckVo> companyList = modelCheckMapper.selectCompanyList();
//将组织机构表合并到审核list中
List<ModelCheckVo> result = pageList(modelCheckVoList,companyList);
PageInfo<ModelCheckVo> pageInfo = new PageInfo<>(result);
return ResponseVO.ok(pageInfo);
}
/**
* 修改审核状态
* @author huxiuwu
* @date 2022/4/6
* @param ocp
* @return pms.ocp.model.vo.ResponseVO
**/
@Transactional(rollbackFor = Exception.class)
@Override
public ResponseVO updateAuditType(ModelAuditDto ocp) {
//修改状态
boolean isUpdateSucceed = modelCheckMapper.updateAuditState(ocp);
boolean flag = isUpdateSucceed;
if (ocp.getAuditState()== Constant.Number.ONE){
OcpModelRequirementAcceptDto dto = pageOcpDto(ocp);
//审核通过,新增至验收表
boolean isInsertSucceed = modelCheckMapper.saveAccept(dto);
flag = (isInsertSucceed && isUpdateSucceed) == true;
}else{
//其他状态删除该需求编码避免数据重复
modelCheckMapper.deleteByRequirementCode(ocp);
}
if (!flag){
ResponseVO.error(CodeEnum.DELETE_FAIL);
}
return ResponseVO.ok();
}
/**
* 模型关系表
* @author huxiuwu
* @date 2022/4/7
* @param modelCode
* @return pms.ocp.model.vo.ResponseVO
**/
@Override
public ResponseVO<List<ModelPropInfo>> modelRelation(String modelCode) {
//查询模型以及自己所拥有字段
List<ModelPropInfo> modelPropInfoList = modelCheckMapper.selectModelOwnerProp();
//转换为map
Map<String, ModelPropInfo> modelMap = modelPropInfoList.stream().collect(Collectors.toMap(ModelPropInfo::getModelCode, o -> o));
//查询中间表获取关联模型code列表
List<String> modelCodeList = modelCheckMapper.selectModelCodeList(modelCode);
//取出map中值塞入实体类
List<ModelPropInfo> list = pageModelRelationVo(modelCodeList,modelMap,modelCode);
return ResponseVO.ok(list);
}
/**
* 封装模型关联vo
* @author huxiuwu
* @date 2022/4/7
* @param modelCodeList
* @param modelMap
* @param modelCode
* @return pms.ocp.model.vo.ModelPropRelationVo
**/
private List<ModelPropInfo> pageModelRelationVo(List<String> modelCodeList, Map<String, ModelPropInfo> modelMap, String modelCode) {
List<ModelPropInfo> list = new LinkedList<>();
list.add(modelMap.get(modelCode));
modelCodeList.forEach(v->
list.add(modelMap.get(v))
);
return list;
}
/**
* 封装审核通过新增验收表数据
* @author huxiuwu
* @date 2022/4/6
* @param ocp
* @return pms.ocp.model.dto.OcpModelRequirementAcceptDto
**/
private OcpModelRequirementAcceptDto pageOcpDto(ModelAuditDto ocp) {
OcpModelRequirementAcceptDto dto = new OcpModelRequirementAcceptDto();
dto.setObjId(UUID.randomUUID().toString());
dto.setAcceptCompanyCode("");
dto.setAcceptDepartment("");
dto.setAcceptUserName("");
dto.setIsDelete(0);
dto.setAcceptCtime(new Date());
dto.setAcceptMtime(new Date());
dto.setAcceptStats(0);
dto.setRequirementCode(ocp.getRequirementCode());
dto.setAcceptUserName("");
dto.setAcceptUserId("");
return dto;
}
/**
*
* @author huxiuwu
* @date 2022/4/6
* @param modelCheckVoList
* @param companyList
* @return List<com.pms.ocp.model.vo.ModelCheckVo>
**/
private List<ModelCheckVo> pageList(List<ModelCheckVo> modelCheckVoList, List<ModelCheckVo> companyList) {
List<ModelCheckVo> list = modelCheckVoList.stream().map(m -> {
companyList.stream().filter(m2-> Objects.equals(m.getProposerCompanyCode(),m2.getProposerCompanyCode())).forEach(m2-> {
m.setProposerCompanyName(m2.getProposerCompanyName());
});
return m;
}).collect(Collectors.toList());
return list;
}
}
......@@ -68,21 +68,31 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
* @date 2022/3/9 <PageInfo<OcpModelGroupVO>>
**/
@Override
public ResponseVO subclassDetailsList(int currentPage,int pageSize,String parentGroupCode,String subclassGroupName) {
public ResponseVO subclassDetailsList(int currentPage, int pageSize, String parentGroupCode, String subclassGroupName, boolean isTop) {
//查询所有
List<OcpModelGroupVO> ocpModelGroupVOList = this.selectByCondition(null,null);
List<OcpModelGroupVO> dimConditionList = this.selectByCondition(null,subclassGroupName);
if (isTop){
PageUtil<OcpModelGroupVO> pageUtil = getOcpModelGroupVOPageUtil(currentPage, pageSize, dimConditionList);
return ResponseVO.ok(pageUtil);
}
//将查询到所有数据的list转换为key为分类code,value为本身的map
Map<String, OcpModelGroupVO> groupByCode = ocpModelGroupVOList.stream().collect(Collectors.toMap(OcpModelGroupVO::getModelGroupCode, Function.identity(), (key1, key2) -> key2));
//根据key获取前端传入code的对象
OcpModelGroupVO ocpModelGroupVO = groupByCode.get(parentGroupCode);
//模糊查询
List<OcpModelGroupVO> dimConditionList = this.selectByCondition(null,subclassGroupName);
//递归获取模糊查询后属于parentGroupCode子集
List<OcpModelGroupVO> childrenList = findChildren(dimConditionList, ocpModelGroupVO, new LinkedList<>());
PageUtil<OcpModelGroupVO> pageUtil = getOcpModelGroupVOPageUtil(currentPage, pageSize, childrenList);
return ResponseVO.ok(pageUtil);
}
private PageUtil<OcpModelGroupVO> getOcpModelGroupVOPageUtil(int currentPage, int pageSize, List<OcpModelGroupVO> childrenList) {
List<OcpModelGroupVO> sortList = childrenList.stream().sorted(Comparator.comparing(OcpModelGroupVO::getGroupCtime).reversed()).collect(Collectors.toList());
PageUtil<OcpModelGroupVO> pageUtil = new PageUtil<>();
pageUtil.startPage(currentPage, pageSize, sortList);
return ResponseVO.ok(pageUtil);
return pageUtil;
}
/**
......@@ -207,7 +217,6 @@ public class ModelClassifyServiceImpl implements ModelClassifyService {
}
//设置上级父类名称
node.setModelGroupPName(parent.getModelGroupName());
//说明他有父类其下子类都需要加一级
parent.getChildrenList().add(node);
continue;
}
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pms.ocp.mapper.MiddleGroundModelMapper">
<resultMap id="modelBelongProp" type="com.pms.ocp.model.entity.ModelPropInfo">
<result property="modelTable" column="table_name"/>
<collection property="propList" javaType="list" ofType="com.pms.ocp.model.entity.PropInfo">
<result property="propName" column="column_name"/>
<result property="propType" column="udt_name"/>
<result property="propLength" column="character_maximum_length"/>
</collection>
</resultMap>
<select id="selectModels" resultType="string" parameterType="string">
select
schemaname
from
pg_tables
where
tablename = #{modelName}
</select>
<select id="selectMiddleGroundModeByName" resultMap="modelBelongProp">
select table_name,
column_name,
udt_name,
character_maximum_length
from
information_schema.columns
where
table_schema = #{schemaName}
and table_name = #{modelName}
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pms.ocp.mapper.ModelAcceptMapper">
<select id="modelAcceptList" resultType="com.pms.ocp.model.vo.ModelAcceptListVo">
select
omv.model_name as modelName,
omv.model_code as modelCode,
omv.model_table as tableName,
omv.requirement_code as requirementCode
from
ocp_model_requirement_accept as omra
left join
ocp_model_version omv
on
omv.requirement_code = omra.requirement_code
</select>
<select id="modelAuditDetail" parameterType="string" resultType="com.pms.ocp.model.vo.ModelAcceptVo">
select
omv.model_name as modelName,
omr.user_name as submitUser,
omr.ctime as submitTime,
oo.org_name as submitCompanyName,
omv.model_zone as belongResource,
omr.requirement_desc as requirementDesc,
omra.approval_stats as auditState,
omra.approval_comment as auditOpinion,
omra.approval_user_name as auditUserName,
omra.requirement_code as requirementCode,
omra.approval_ctime as auditTime,
omg.model_group_name as modelGroupName
from
ocp_model_version as omv
left join
ocp_model_group as omg
on
omg.model_group_code = omv.model_group_code
left join
ocp_model_requirement omr
on
omv.requirement_code = omr.requirement_code
left join
ocp_organization as oo
on
oo.org_code = omr.company_code
left join
ocp_model_requirement_approval as omra
on
omra.requirement_code = omr.requirement_code
where
omr.requirement_code = #{requirementCode}
</select>
<select id="selectModelList" resultType="com.pms.ocp.model.vo.ModelCheckVo">
select
model_code ,
model_name
from
ocp_model_version
</select>
<select id="relationModels" resultType="com.pms.ocp.model.vo.ModelCheckVo" parameterType="string">
select
omv.model_name,
omrv.model_code,
omv.model_table as tableName
from
ocp_model_rel_version as omrv
left join
ocp_model_version as omv
on
omrv.model_code = omv.model_code
where
omrv.relation_mode_code = #{modelCode}
</select>
<select id="selectPropList" resultType="com.pms.ocp.model.entity.PropInfo" parameterType="string">
select
column_name as propName,
data_type as propType,
data_length as propLength
from
ocp_model_prop_version
where
model_code = #{modelCode}
</select>
<delete id="deleteModelVersion" parameterType="com.pms.ocp.model.entity.Model">
delete
from
ocp_model_version
where
requirement_code = #{requirementCode}
and model_code =#{modelCode}
</delete>
<delete id="deletePropVersion" parameterType="com.pms.ocp.model.entity.Model">
delete
from
ocp_model_prop_version
where
model_code =#{modelCode}
</delete>
<delete id="deleteRequirementVersion" parameterType="com.pms.ocp.model.entity.Model">
delete
from
ocp_model_requirement_approval
where
requirement_code = #{requirementCode}
</delete>
<delete id="deleteAcceptVersion" parameterType="com.pms.ocp.model.entity.Model">
delete
from
ocp_model_requirement
where
requirement_code = #{requirementCode}
</delete>
<delete id="deleteModelRelationProp" parameterType="com.pms.ocp.model.entity.Model">
delete
from
ocp_model_rel_version
where
relation_mode_code = #{modelCode}
</delete>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pms.ocp.mapper.ModelCheckMapper">
<resultMap id="modelBelongProp" type="com.pms.ocp.model.entity.ModelPropInfo">
<result property="modelName" column="model_name"/>
<result property="modelCode" column="model_code"/>
<result property="modelTable" column="model_table"/>
<collection property="propList" javaType="list" ofType="com.pms.ocp.model.entity.PropInfo">
<result property="propName" column="column_name"/>
<result property="propType" column="data_type"/>
<result property="propLength" column="data_length"/>
</collection>
</resultMap>
<select id="modelAuditList" parameterType="string" resultType="com.pms.ocp.model.vo.ModelCheckVo">
select
omv.model_name as modelName,
omv.model_code as modelCode,
omv.professional_kind as belongMajor,
omv.model_table as tableName,
omr.requirement_type as flowState,
omr.company_code as proposerCompanyCode,
omra.approval_stats as demandAuditState,
omra.approval_comment as auditOpinion,
omra.approval_user_name as auditName,
omra.requirement_code as requirementCode,
omra.approval_ctime as auditTime
from
ocp_model_version as omv
left join
ocp_model_requirement omr
on
omv.requirement_code = omr.requirement_code
left join
ocp_model_requirement_approval as omra
on
omra.requirement_code = omr.requirement_code
<if test="searchCondition != null and searchCondition != '' ">
where
model_name like concat('%',#{searchCondition}::text ,'%')
</if>
</select>
<select id="selectCompanyList" resultType="com.pms.ocp.model.vo.ModelCheckVo">
select
org_code as proposerCompanyCode,
org_name as proposerCompanyName
from
ocp_organization
</select>
<update id="updateAuditState">
update ocp_model_requirement_approval
<set>
<if test="auditState != null">
approval_stats = #{auditState},
</if>
</set>
where requirement_code = #{requirementCode}
</update>
<insert id="saveAccept" parameterType="com.pms.ocp.model.dto.OcpModelRequirementAcceptDto">
insert into ocp_model_requirement_accept(obj_id,requirement_code, api_code, accept_stats, accept_company_code, accept_department, accept_user_id, accept_user_name, accept_ctime, accept_mtime, is_delete)
values (#{objId},#{requirementCode}, #{apiCode}, #{acceptStats}, #{acceptCompanyCode}, #{acceptDepartment}, #{acceptUserId}, #{acceptUserName}, #{acceptCtime}, #{acceptMtime}, #{isDelete})
</insert>
<select id="selectModelOwnerProp" resultMap="modelBelongProp">
select
omv.model_code,
omv.model_name,
omv.model_table,
ompv.column_name,
ompv.data_length,
ompv.data_type
from
ocp_model_version as omv
left join
ocp_model_prop_version as ompv
on
omv.model_code = ompv.model_code
</select>
<select id="selectModelCodeList" parameterType="string" resultType="string">
select
model_code
from
ocp_model_rel_version
where
relation_mode_code = #{modelCode}
and
relation_mode_code != model_code
</select>
<delete id="deleteByRequirementCode">
delete
from
ocp_model_requirement_accept
where
requirement_code = #{requirementCode}
</delete>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment