xiejun
2023-08-14 f9249db0d544a8c378db0793bc03a95d6ff8673b
PDM集成swing界面相关功能开发
已修改4个文件
98 ■■■■■ 文件已修改
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410ActionListener.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410ActionListener.java
@@ -116,9 +116,21 @@
        Map<String,String> headerMap=new HashMap<>();
        headerMap.put("content-type","application/json");
        headerMap.put("Blade-Auth",this.owner.getTokenUserObject().getAccess_token());
        R r= HttpUtil.sendPost(url+"/addSaveCode",object.toString(),headerMap);
        //R r= HttpUtil.sendPost(url+"/addSaveCode",object.toString(),headerMap);
        String code="";
        //校验关键属性存在的数据直接返回编码
        R checkKeyAttrOnOrderR= HttpUtil.sendPost(url+"/checkKeyAttrOnOrderFordatas",object.toString(),headerMap);
        if(checkKeyAttrOnOrderR.isSuccess()){
            List<Map> list=(List)checkKeyAttrOnOrderR.getData();
            if(!CollectionUtils.isEmpty(list)) {
                code=list.get(0).get("id")!=null?list.get(0).get("id").toString():"";
                this.owner.setApplyCode(code);
                this.owner.getApplyTxt().requestFocusInWindow();
                this.owner.getApplyTxt().selectAll();
                this.owner.setAttrNameAndValMap(attrNameAndValMap);
                return;
            }
        }
        R r= HttpUtil.sendPost(url+"/addSaveCode",object.toString(),headerMap);
        if(r.isSuccess()){
            code=r.getData().toString();
            this.owner.setApplyCode(code);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java
@@ -226,5 +226,14 @@
    public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception {
        return R.data(mdmEngineService.addSaveCode(orderDTO));
    }
    /**
     * 申请编码保存
     * @param orderDTO 编码申请相关的信息,需要有属性和码段相关的信息
     * @return 执行结果
     */
    @PostMapping("/checkKeyAttrOnOrderFordatas")
    @VciBusinessLog(operateName = "申请单个编码")
    public R checkKeyAttrOnOrderFordatas(@RequestBody CodeOrderDTO orderDTO) throws Exception {
        return R.data(mdmEngineService.checkKeyAttrOnOrderFordatas(orderDTO));
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -446,4 +446,11 @@
     * @return
     */
    R processChangeStatus(FlowStatusDTO flowDTO);
}
    /**
     * 校验关键属性
     * @param orderDTO         编码申请的相关的信息
     */
    public List<Map>  checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) ;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -677,6 +677,68 @@
        }
    }
    /**
     * 校验关键属性
     *
     * @param classifyFullInfo 分类的全部信息
     * @param templateVO       模板的内容,必须包含模板属性
     * @param orderDTO         编码申请的相关的信息
     */
    public List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) {
        List<Map>dataList=new ArrayList<>();
        CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
        CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
        //先获取关键属性的规则,也利用继承的方式
        CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
        //注意的是keyRuleVO可能为空,表示不使用规则控制
        //获取所有的关键属性
        Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
        Map<String, String> conditionMap = new HashMap<>();
        boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
        //全部去空的优先级大于去空
        boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
        boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
        boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
        ketAttrMap.forEach((attrId, attrVO) -> {
            String value = getValueFromOrderDTO(orderDTO, attrId);
            if (value == null) {
                value = "";
            }
            wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
        });
        //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可
        if (!CollectionUtils.isEmpty(conditionMap)) {
            conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'");
//            final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
            R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId()));
//                String referTable = VciBaseUtil.getTableName(referVO.getReferType());
            if (!listR.isSuccess() || listR.getData().size() == 0) {
                throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
            }
            final String[] sql = {"select * from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "};
            conditionMap.forEach((key, value) -> {
                sql[0] += " and " + key + " = " + value;
            });
            if (StringUtils.isNotBlank(orderDTO.getOid())) {
                //修改的时候,需要排除自己
                sql[0] += " and oid != '" + orderDTO.getOid() + "'";
            } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
                sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
            }
            sql[0] += " and lastR = '1' and lastV = '1' ";
//            if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
            dataList=commonsMapper.selectBySql(sql[0]);
            if (!CollectionUtils.isEmpty(dataList)) {
//                String ruleInfoMsg = keyRuleVO == null ? "" : "查询规则:去除空格--{0},忽略大小写--{1},忽略全半角--{2},忽略全部空格--{3}";
//                String[] objs = new String[]{trim ? "是" : "否", ignoreCase ? "是" : "否", ignoreWidth ? "是" : "否", trimAll ? "是" : "否"};
//                throw new VciBaseException("根据您填写的关键属性的内容,结合关键属性查询规则,发现这个数据已经在系统中存在了。请修正!。" + ruleInfoMsg, objs);
                return dataList;
            }
        }
        return dataList;
    }
    /**
     * 封装关键属性的查询语句
     *