package com.vci.ubcs.code.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO; import com.vci.ubcs.code.entity.CodeClassifyProcessTemp; import com.vci.ubcs.code.service.ICodeClassifyProcessTempService; import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject; import com.vci.ubcs.starter.web.pagemodel.DataGrid; import com.vci.ubcs.starter.web.util.VciBaseUtil; import com.vci.ubcs.starter.web.wrapper.VciQueryWrapperForDO; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import org.springblade.core.tool.api.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; /** * 分类使用的流程模板控制器 * * @author weidy * @date 2022-01-24 */ @RestController @RequestMapping("/codeClsProcessTempController") @AllArgsConstructor @Api(value = "编码库定义-流程模板", tags = "编码库定义-流程模板接口") public class CodeClassifyProcessTempController { /** * 分类使用的流程模板 服务 */ @Autowired private ICodeClassifyProcessTempService codeClassifyProcessTempService; /** * 分类使用的流程模板列表 * @param baseQueryObject 基础查询对象,包含查询条件,分页,排序等 * @return 分类使用的流程模板显示对象列表 */ @GetMapping("/gridCodeClassifyProcessTemp") public DataGrid gridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){ if(baseQueryObject == null){ baseQueryObject = new BaseQueryObject(); } return codeClassifyProcessTempService.gridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper()); } /** * 增加 分类使用的流程模板 * @param codeClassifyProcessTempDTO 分类使用的流程模板数据传输对象 * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象 */ @PostMapping( "/addSave") public R addSave(@RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO){ CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.addSave(codeClassifyProcessTempDTO); return R.data(codeClassifyProcessTempVO); } /** * 修改 分类使用的流程模板 * @param codeClassifyProcessTempDTO 分类使用的流程模板数据传输对象 * @return 执行结果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象 */ @PutMapping("/editSave") public R editSave(@RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO){ CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.editSave(codeClassifyProcessTempDTO); return R.data(codeClassifyProcessTempVO); } /** * 删除分类使用的流程模板 * @param codeClassifyProcessTempDTO 分类使用的流程模板数据传输对象,oid和ts需要传输 * @return 删除结果反馈::success:成功,fail:失败 */ @DeleteMapping( "/deleteData") public R delCodeClassifyProcessTemp(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) { return codeClassifyProcessTempService.deleteCodeClassifyProcessTemp(codeClassifyProcessTempDTO); } /** * 主键获取分类使用的流程模板 * @param oid 主键 * @return 分类使用的流程模板显示对象 */ @GetMapping("/getObjectByOid") public R getObjectByOid(String oid){ CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.getObjectByOid(oid); return R.data(codeClassifyProcessTempVO); } /** * 主键批量获取分类使用的流程模板 * @param oids 主键,多个以逗号分隔,但是受性能影响,建议一次查询不超过10000个 * @return 分类使用的流程模板显示对象 */ @GetMapping("/listDataByOids") public R> listCodeClassifyProcessTempByOids(String oids){ Collection voCollection = codeClassifyProcessTempService.listCodeClassifyProcessTempByOids(VciBaseUtil.str2List(oids)); return R.data(voCollection); } /** * 参照分类使用的流程模板列表 * @param baseQueryObject 基础查询对象,包含查询条件,分页,排序等 * @return 分类使用的流程模板显示对象列表,生效的内容 */ @GetMapping("/refDataGrid") public DataGrid refDataGridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){ if(baseQueryObject == null){ baseQueryObject = new BaseQueryObject(); } return codeClassifyProcessTempService.refDataGridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper()); } /** * 使用模板获取使用的流程模板 * @param codeTemplateOid 模板的主键 * @param processUse 流程的用途 * @return 流程模板的信息 */ @GetMapping("/listProcessTemplate") public R> listProcessTemplate(String codeTemplateOid,String processUse){ List processTempVOList = codeClassifyProcessTempService.listProcessTemplate(codeTemplateOid,processUse); return R.data(processTempVOList); } /** * 使用模板获取使用的流程模板 * @param codeTemplateOid 模板的主键 * @param processUse 流程的用途 * @return 流程模板的信息 */ @GetMapping("/listSameProcessTemplate") public R listSameProcessTemplate(String codeTemplateOid,String processUse){ VciBaseUtil.alertNotNull(codeTemplateOid,"所选择的数据模板主键"); /*Map conditionMap=new HashMap<>(); conditionMap.put("classifyTemplateOid", QueryOptionConstant.IN + VciBaseUtil.toInSql(codeTemplateOid)); conditionMap.put("codeprocessuse",processUse);*/ LambdaQueryWrapper LambdaQueryWrapper = Wrappers.query() .lambda().in(CodeClassifyProcessTemp::getCodeClassifyOid, VciBaseUtil.toInSql(codeTemplateOid)) .eq(CodeClassifyProcessTemp::getCodeProcessUse, processUse); List codeClassifyProcessTempVOS = codeClassifyProcessTempService.selectByWrapper(LambdaQueryWrapper); //根据模板将数据整合在一起,去校验 Map/**数据对象**/> templateProcessTempateVOMap = codeClassifyProcessTempVOS.stream().collect(Collectors.toMap(CodeClassifyProcessTempVO::getId, s->{ List l=new ArrayList<>(); l.add(s); return l; },(List s1,List s2)->{ s1.addAll(s2); return s1; })); if(templateProcessTempateVOMap.size()>1){ return R.fail("流程模板不统一,不允许发起流程"); }else { return R.data(codeClassifyProcessTempVOS.get(0)); } } }