| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | start += VciBaseUtil.getInt(secLengths[j]); |
| | | } |
| | | thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i])); |
| | | // } |
| | | // } |
| | | if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){ |
| | | serialUnitList.add(thisSecValue); |
| | | } |
| | |
| | | //要看是不是补位的 |
| | | CodeBasicSecVO secVO = secVOMap.get(secOid); |
| | | Double serialDb = null; |
| | | // 截取掉前后缀之后的码段 |
| | | String subSecValue = killPriffixSuffix(secValue, secVO.getPrefixCode(), secVO.getSuffixCode()); |
| | | if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){ |
| | | //不补码 |
| | | //把所有不是数字的去掉,因为可能会是老数据,新规则 |
| | | serialDb = VciBaseUtil.getDouble(killUnNumberChar(secValue)); |
| | | serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue)); |
| | | }else { |
| | | //左右填充的,我们需要 |
| | | serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(secValue,secVO.getCodeFillSeparator(), |
| | | serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(subSecValue,secVO.getCodeFillSeparator(), |
| | | OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType())))); |
| | | } |
| | | Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>()); |
| | |
| | | codeAllCodeService.saveBatch(allCodeDOList); |
| | | // iCodeWupinService.saveBatch(dataCBOList); |
| | | mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList); |
| | | |
| | | // batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> { |
| | | // s.setLcStatus(statusMap.get(s.getOid())); |
| | | // try { |
| | |
| | | for (int j = 0; j < thisSecValueList.size(); j++) { |
| | | String secValue = thisSecValueList.get(j); |
| | | if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) { |
| | | thisSecValueList.set(j, value); |
| | | // TODO: 属性码段生成码值后,拼接前后缀 |
| | | thisSecValueList.set(j, joinPreffixAndSuffix(attrSevVO,value)); |
| | | } |
| | | } |
| | | if (attrSevIsSerialDepend) { |
| | |
| | | for (int j = 0; j < serialUnitList.size(); j++) { |
| | | String secValue = serialUnitList.get(j); |
| | | if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) { |
| | | serialUnitList.set(j, value); |
| | | serialUnitList.set(j, joinPreffixAndSuffix(attrSevVO,value)); |
| | | } |
| | | } |
| | | } |
| | |
| | | for (int z = 0; z < thisSecValueList.size(); z++) { |
| | | String secValue = thisSecValueList.get(z); |
| | | if (secValue.equalsIgnoreCase("${" + secVO.getOid() + "}")) { |
| | | thisSecValueList.set(z, serialString); |
| | | // TODO: 流水生成码值后拼接前后缀 |
| | | thisSecValueList.set(z, joinPreffixAndSuffix(secVO, serialString)); |
| | | } |
| | | } |
| | | Map<String, Double> unitSerialMap = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()); |
| | |
| | | String secValue = secValueMap.getOrDefault(secVO.getOid(), ""); |
| | | switch (secType) { |
| | | case CODE_FIXED_SEC: |
| | | secValue = joinPreffixAndSuffix(secVO, secValue); |
| | | //固定码段的,直接用码值,不论码值的长度是多少,因为可变长度和固定长度是控制在码段管理里面的码值定义的 |
| | | break; |
| | | case CODE_DATE_SEC: |
| | | //时间码段,需要将当前时间依据时间格式进行转换. |
| | | //时间码段不涉及到是否补位 |
| | | secValue = VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr()); |
| | | secValue =joinPreffixAndSuffix(secVO, VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr())); |
| | | break; |
| | | case CODE_CLASSIFY_SEC: |
| | | //分类码段的,也是从前端选择了码值即可,不论码值的长度是多少 |
| | | CodeClassifyValue codeClassifyValueDO= codeClassifyValueMapper.selectById(secValue); |
| | | if(codeClassifyValueDO!=null) { |
| | | secValue = codeClassifyValueDO.getId(); |
| | | secValue = joinPreffixAndSuffix(secVO, codeClassifyValueDO.getId()); |
| | | } |
| | | break; |
| | | case CODE_LEVEL_SEC: |
| | |
| | | secValue = secValue.substring(secValue.length() - secVO.getValueCutLength()); |
| | | } |
| | | } |
| | | secValue = joinPreffixAndSuffix(secVO,secValue); |
| | | break; |
| | | case CODE_REFER_SEC: |
| | | //引用的在页面上已经选择了,所以直接使用前端上传递的值 |
| | | //引用就是参照,可能是其他的分类(业务类型)下的数据,所以只在页面上选择 |
| | | secValue = joinPreffixAndSuffix(secVO,secValue); |
| | | break; |
| | | case CODE_ATTR_SEC: |
| | | //属性与引用的区别是,属性是当前数据里的属性,而引用可能是引用其他的分类的(业务类型) |
| | |
| | | } |
| | | OsCodeFillTypeEnum fillTypeEnum = OsCodeFillTypeEnum.forValue(secVO.getCodeFillType()); |
| | | secValue = fillString(VciBaseUtil.getInt(secVO.getCodeSecLength()), fillTypeEnum, secValue, secVO.getCodeFillSeparator()); |
| | | secValue = joinPreffixAndSuffix(secVO,secValue); |
| | | break; |
| | | case CODE_SERIAL_SEC: |
| | | //流水码段 |
| | |
| | | serialUnitList.add(secValue); |
| | | } |
| | | secValueList.add(secValue); |
| | | } |
| | | |
| | | /** |
| | | * 拼接前后缀 |
| | | * @param secVO |
| | | * @param secValue |
| | | * @return |
| | | */ |
| | | private String joinPreffixAndSuffix(CodeBasicSecVO secVO, String secValue){ |
| | | StringBuilder joinSecValue = new StringBuilder(); |
| | | // 拼接前缀 |
| | | if (Func.isNotEmpty(secVO.getPrefixCode())) { |
| | | joinSecValue = joinSecValue.append(secVO.getPrefixCode()); |
| | | } |
| | | // 在中间拼接值 |
| | | joinSecValue.append(secValue); |
| | | // 拼接后缀 |
| | | if(Func.isNotEmpty(secVO.getSuffixCode())){ |
| | | joinSecValue = joinSecValue.append(secVO.getSuffixCode()); |
| | | } |
| | | return joinSecValue.toString(); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 去掉前后缀 |
| | | * @param secValue 字符 |
| | | * @param priffix 前缀 |
| | | * @param suffix 后缀 |
| | | * @return 替换后的值 |
| | | */ |
| | | private String killPriffixSuffix(String secValue, String priffix,String suffix){ |
| | | if (priffix != null && secValue.startsWith(priffix)) { |
| | | secValue = secValue.substring(priffix.length()); |
| | | } |
| | | if (suffix != null && secValue.endsWith(suffix)) { |
| | | secValue = secValue.substring(0, secValue.length() - suffix.length()); |
| | | } |
| | | return secValue; |
| | | } |
| | | |
| | | /** |
| | | * 去除补位字符 |
| | | * @param s 字符 |
| | | * @param fillString 补位字符 |