Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,259 @@
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.rmi.ServerException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * ç æ®µåŸºç¡€ä¿¡æ¯æŽ§åˆ¶å™¨
 *
 * @author ludc
 * @date 2022-01-24
 */
@RestController
@RequestMapping("/codeBasicSecController")
@Api(value = "码段基础信息控制器", tags = "码段基础信息控制器")
public class CodeBasicSecController {
   /**
    * ç æ®µåŸºç¡€ä¿¡æ¯ æœåŠ¡
    */
   @Autowired
   private ICodeBasicSecService codeBasicSecService;
   /**
    * ç æ®µåŸºç¡€ä¿¡æ¯åˆ—表
    * @param bladeQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
    * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
    */
   @GetMapping("/gridCodeBasicSec")
   @ApiOperationSupport(order = 2)
   @ApiOperation(value = "分页 ç æ®µåŸºç¡€ä¿¡æ¯åˆ—表", notes = "传入codeRuleVO")
   public R<IPage<CodeBasicSecVO>> gridCodeBasicSec(BladeQueryObject bladeQueryObject) throws Exception{
      IPage<CodeBasicSecVO> codeRuleVOIPage = codeBasicSecService.gridCodeBasicSec(bladeQueryObject.getQuery().setAscs("ordernum"),bladeQueryObject.getConditionMap());
      return R.data(codeRuleVOIPage);
   }
   /**
    * å¢žåŠ  ç æ®µåŸºç¡€ä¿¡æ¯
    * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
    * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
    */
   @PostMapping( "/addSave")
   @ApiOperationSupport(order = 3)
   @ApiOperation(value = "增加 ç æ®µåŸºç¡€ä¿¡æ¯", notes = "codeBasicSecDTO")
   public R addSave(@Valid @RequestBody CodeBasicSecDTO codeBasicSecDTO){
      boolean resBoolean;
      try {
         resBoolean = codeBasicSecService.addSave(codeBasicSecDTO);
      } catch (VciBaseException e) {
         return R.fail(e.getCode());
      }
      return R.status(resBoolean);
   }
   /** ä¿®æ”¹ ç æ®µåŸºç¡€ä¿¡æ¯
    * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
    * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
    */
   @PutMapping("/editSave")
   @ApiOperationSupport(order = 4)
   @ApiOperation(value = "修改 ç æ®µåŸºç¡€ä¿¡æ¯", notes = "codeBasicSecDTO")
   public R editSave(@RequestBody CodeBasicSecDTO codeBasicSecDTO) throws ServerException{
      boolean resBoolean;
      try {
         resBoolean = codeBasicSecService.editSave(codeBasicSecDTO);
      } catch (VciBaseException e) {
         return R.fail(e.getCode());
      }
      return R.status(resBoolean);
   }
   /**
    * åˆ é™¤ç æ®µåŸºç¡€ä¿¡æ¯
    * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象,oid和ts需要传输
    * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
    */
   @DeleteMapping( "/deleteData")
   @ApiOperationSupport(order = 5)
   @ApiOperation(value = "删除码段基础信息", notes = "codeBasicSecDTO")
   public R delCodeBasicSec(@Valid @RequestBody CodeBasicSecDTO codeBasicSecDTO) {
      return codeBasicSecService.deleteCodeBasicSec(codeBasicSecDTO);
   }
   /**
    * ä¸»é”®èŽ·å–ç æ®µåŸºç¡€ä¿¡æ¯
    * @param oid ä¸»é”®
    * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡
    */
   @GetMapping("/getObjectByOid")
   @ApiOperationSupport(order = 6)
   @ApiOperation(value = "删除码段基础信息", notes = "codeBasicSecDTO")
   public R<CodeBasicSecVO> getObjectByOid(String oid){
      CodeBasicSecVO codeBasicSecVO = codeBasicSecService.getObjectByOid(oid);
      return R.data(codeBasicSecVO);
   }
   /**
    * ä¸»é”®æ‰¹é‡èŽ·å–ç æ®µåŸºç¡€ä¿¡æ¯
    * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
    * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡
    */
   @GetMapping("/listDataByOids")
   @ApiOperationSupport(order = 7)
   @ApiOperation(value = "主键批量获取码段基础信息", notes = "oids")
   public R<Collection<CodeBasicSecVO>> listCodeBasicSecByOids(String oids){
      Collection<CodeBasicSecVO> voCollection =  codeBasicSecService.listCodeBasicSecByOids(VciBaseUtil.str2List(oids));
      return R.data(voCollection);
   }
   /**
    * å‚照码段基础信息列表
    * @param bladeQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
    * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
    */
   @GetMapping("/refDataGrid")
   @ApiOperationSupport(order = 8)
   @ApiOperation(value = "参照码段基础信息列表", notes = "codeBasicSecVO")
   public R<IPage<CodeBasicSecVO>> refDataGridCodeBasicSec(BladeQueryObject bladeQueryObject){
      return R.data(codeBasicSecService.refDataGridCodeBasicSec(bladeQueryObject.getQuery(), bladeQueryObject.getConditionMap()));
   }
   /**
    * å‚数分类码段基础信息列表
    * @param bladeQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等,必须要有编码规则的主键 pkCodeRule
    * @return ç æ®µçš„信息
    */
   @GetMapping("/refDataGridClassifySec")
   @ApiOperationSupport(order = 9)
   @ApiOperation(value = "参数分类码段基础信息列表", notes = "codeBasicSecVO")
   public R<IPage<CodeBasicSecVO>> refDataGridClassifySec(BladeQueryObject bladeQueryObject){
      return R.data(codeBasicSecService.refDataGridClassifySec(bladeQueryObject.getQuery(), bladeQueryObject.getConditionMap()));
   }
   /**
    * å…‹éš†ç æ®µä¿¡æ¯
    * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象,oidArr:选择源码段主键的集合,pkCodeRule:目标编码规则的主键
    * @return å…‹éš†ç»“果反馈::success:成功,fail:失败
    */
   @PostMapping("/clone")
   @ApiOperationSupport(order = 10)
   @ApiOperation(value = "克隆码段信息", notes = "codeBasicSecDTO")
   public R cloneCodeBasicSec(@RequestBody CodeBasicSecDTO codeBasicSecDTO) throws ServerException {
      VciBaseUtil.alertNotNull(codeBasicSecDTO.getOidArr(),"选择码段主键");
      List<String> oidArr = VciBaseUtil.str2List(codeBasicSecDTO.getOidArr());
      if (CollectionUtils.isEmpty(oidArr)){
         return R.fail("选择码段主键不能为空");
      }
      return codeBasicSecService.cloneCodeBasicSec(oidArr,codeBasicSecDTO.getPkCodeRule());
   }
   /**
    * æŸ¥è¯¢ç›®æ ‡åˆ†ç±»ç æ®µæ‰€åœ¨çš„æ ‘结构
    * @param oid ç›®æ ‡åˆ†ç±»ç æ®µä¸»é”®
    * @return åˆ†ç±»ç æ®µæ ‘结构
    */
    /*@GetMapping("/treeCodeClassifySec")
   @ApiOperationSupport(order = 11)
   @ApiOperation(value = "查询目标分类码段所在的树结构", notes = "oid")
    public List<Tree> gridCodeClassifySecTree (String oid){
        VciBaseUtil.alertNotNull(oid,"分类码段主键");
        return codeBasicSecService.gridCodeClassifySecTree(oid);
    }*/
   /**
    * ä¸Šç§»
    * @param oid ä¸»é”®
    * @return æ‰§è¡Œç»“æžœ
    */
   @PostMapping("/upOrderNum")
   @ApiOperationSupport(order = 11)
   @ApiOperation(value = "上移", notes = "oid")
   public R upOrderNum(@Valid @RequestParam String oid){
      return R.status(codeBasicSecService.upOrderNum(oid));
   }
   /**
    * ä¸‹ç§»
    * @param oid ä¸»é”®
    * @return æ‰§è¡Œç»“æžœ
    */
   @PostMapping("/downOrderNum")
   @ApiOperationSupport(order = 12)
   @ApiOperation(value = "下移", notes = "oid")
   public R downOrderNum(@Valid @RequestParam String oid){
      return R.status(codeBasicSecService.downOrderNum(oid));
   }
   /**
    * æŸ¥è¯¢ç¼–码规则的所有流水依赖的码段
    * @param ruleOid ç¼–码规则主键
    * @return
    */
   @GetMapping("/getCodeRuleAndBasicSecByRuleOid")
   @ApiOperationSupport(order = 13)
   @ApiOperation(value = "查询编码规则的所有流水依赖的码段", notes = "传入oid")
   public R<CodeRuleVO> getCodeRuleAndBasicSecByRuleOid(String ruleOid){
      return R.data(codeBasicSecService.getSerialNumberDepend(ruleOid));
   }
   /**
    * è®¾ç½®æœ€å¤§æµæ°´å·
    * @param codeOrderDTO ç¼–码申请传输对象
    * @return
    */
   @PostMapping("/setMaxSerialNumberForCodeRule")
   @ApiOperationSupport(order = 14)
   @ApiOperation(value = "设置最大流水号", notes = "codeOrderDTO")
   public R setMaxSerialNumberForCodeRule(@RequestBody CodeOrderDTO codeOrderDTO){
      return R.success(codeBasicSecService.setMaxSerialNumberForCodeRule(codeOrderDTO));
   }
   /***
    *  æ ¹æ®æµæ°´ä¾èµ–获取最大流水号
    * @param secMap
    * @return
    */
   @GetMapping("/getMaxSerialNumberForCodeRule")
   @ApiOperationSupport(order = 15)
   @ApiOperation(value = "查询编码规则的所有流水依赖的最大流水", notes = "传入oid")
   public R getMaxSerialNumberForCodeRule(@RequestParam Map<String,String> secMap){
      if (secMap.isEmpty() && Func.isBlank(secMap.get("codeRuleOid"))) {
         throw new ServiceException("最大流水号的流水依赖不能为空!");
      }
      CodeOrderDTO codeOrderDTO = new CodeOrderDTO();
      codeOrderDTO.setCodeRuleOid(secMap.get("codeRuleOid"));
      secMap.remove("codeRuleOid");
      List<CodeOrderSecDTO> secDTOList = new ArrayList<>();
      secMap.entrySet().stream().forEach(item->{
         secDTOList.add(new CodeOrderSecDTO(item.getKey(),item.getValue()));
      });
      codeOrderDTO.setSecDTOList(secDTOList);
      return R.data(codeBasicSecService.getMaxSerialNumberForCodeRule(codeOrderDTO));
   }
}