ludc
2023-05-18 ceb6a4d82d4f67c95d8f4dd457ec7a1bfdba0c4c
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyProcessTempController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,171 @@
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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 javax.validation.Valid;
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 R<IPage<CodeClassifyProcessTempVO>> gridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return R.data(codeClassifyProcessTempService.gridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper()));
    }
    /**
     * å¢žåŠ  åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    public R<CodeClassifyProcessTempVO> addSave(@RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO){
         CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.addSave(codeClassifyProcessTempDTO);
         return R.data(codeClassifyProcessTempVO);
    }
    /**
     * ä¿®æ”¹ åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    public R<CodeClassifyProcessTempVO> 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(@Valid @RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) {
        return codeClassifyProcessTempService.deleteCodeClassifyProcessTemp(codeClassifyProcessTempDTO);
    }
    /**
    * ä¸»é”®èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
    * @param oid ä¸»é”®
    * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
    */
    @GetMapping("/getObjectByOid")
    public R<CodeClassifyProcessTempVO> getObjectByOid(String oid){
        CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.getObjectByOid(oid);
        return R.data(codeClassifyProcessTempVO);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
     */
    @GetMapping("/listDataByOids")
    public R<Collection<CodeClassifyProcessTempVO>> listCodeClassifyProcessTempByOids(String oids){
        Collection<CodeClassifyProcessTempVO> voCollection =  codeClassifyProcessTempService.listCodeClassifyProcessTempByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
    /**
     * å‚照分类使用的流程模板列表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     */
    @GetMapping("/refDataGrid")
    public R<IPage<CodeClassifyProcessTempVO>> refDataGridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return R.data(codeClassifyProcessTempService.refDataGridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper()));
    }
    /**
     * ä½¿ç”¨æ¨¡æ¿èŽ·å–ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeTemplateOid æ¨¡æ¿çš„主键
     * @param processUse æµç¨‹çš„用途
     * @return æµç¨‹æ¨¡æ¿çš„信息
     */
    @GetMapping("/listProcessTemplate")
    public R<List<CodeClassifyProcessTempVO>> listProcessTemplate(String codeTemplateOid,String processUse){
        List<CodeClassifyProcessTempVO> processTempVOList = codeClassifyProcessTempService.listProcessTemplate(codeTemplateOid,processUse);
        return R.data(processTempVOList);
    }
    /**
     * ä½¿ç”¨æ¨¡æ¿èŽ·å–ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeTemplateOid æ¨¡æ¿çš„主键
     * @param processUse æµç¨‹çš„用途
     * @return æµç¨‹æ¨¡æ¿çš„信息
     */
    @GetMapping("/listSameProcessTemplate")
    public R<CodeClassifyProcessTempVO> listSameProcessTemplate(String codeTemplateOid,String processUse){
        VciBaseUtil.alertNotNull(codeTemplateOid,"所选择的数据模板主键");
      String s3 = VciBaseUtil.toInSql(codeTemplateOid);
        /*Map<String,String> conditionMap=new HashMap<>();
        conditionMap.put("classifyTemplateOid", QueryOptionConstant.IN  + VciBaseUtil.toInSql(codeTemplateOid));
        conditionMap.put("codeprocessuse",processUse);*/
      LambdaQueryWrapper<CodeClassifyProcessTemp> LambdaQueryWrapper = Wrappers.<CodeClassifyProcessTemp>query()
         .lambda().in(CodeClassifyProcessTemp::getClassifyTemplateOid, codeTemplateOid.split(","))
         .eq(CodeClassifyProcessTemp::getCodeProcessUse, processUse);
      List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS = codeClassifyProcessTempService.selectByWrapper(LambdaQueryWrapper);
        //根据模板将数据整合在一起,去校验
        Map<String/**模板oid**/, List<CodeClassifyProcessTempVO>/**数据对象**/>  templateProcessTempateVOMap =
         codeClassifyProcessTempVOS.stream().collect(Collectors.toMap(CodeClassifyProcessTempVO::getId, s->{
            List<CodeClassifyProcessTempVO> l=new ArrayList<>();
            l.add(s);
            return l;
        },(List<CodeClassifyProcessTempVO> s1,List<CodeClassifyProcessTempVO> s2)->{
            s1.addAll(s2);
            return s1;
        }));
        if(templateProcessTempateVOMap.size()>1){
            return R.fail("流程模板不统一,不允许发起流程");
        }else {
            return R.data(codeClassifyProcessTempVOS.get(0));
        }
    }
}