田源
2023-07-20 b0da1daebd1a50eea777e9524eb7bb485efd55ab
Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
已修改4个文件
已添加3个文件
227 ■■■■ 文件已修改
Source/UBCS/ubcs-ops/ubcs-flow/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventClient.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventFallback.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/FlowEventClient.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/pom.xml
@@ -82,6 +82,12 @@
            <artifactId>orai18n</artifactId>
            <version>${orai18n.version}</version>
        </dependency>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-code-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java
@@ -46,7 +46,7 @@
    /**
     * æŸ¥è¯¢æ¡ä»¶
     */
    private Map<String,Object> conditionMap;
    private Map<String,String> conditionMap;
    /**
     * åˆ†ç±»çš„主键
@@ -101,11 +101,11 @@
        this.order = order;
    }
    public Map<String, Object> getConditionMap() {
    public Map<String, String> getConditionMap() {
        return conditionMap;
    }
    public void setConditionMap(Map<String, Object> conditionMap) {
    public void setConditionMap(Map<String, String> conditionMap) {
        this.conditionMap = conditionMap;
    }
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
 * å·¥ä½œæµäº‹ä»¶è°ƒç”¨ Feign接口类
 *
 * @author wang1
 * @since 2023-05-05
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_CODE,
    fallback = IMdmEngineFallback.class
)
public interface IFlowEventClient {
    String API_PREFIX = "/flowEventClient";
    String FLOW_START = API_PREFIX + "/flowStart";
    String FLOW_TASK_COMPLATE = API_PREFIX + "/flowTaskComplate";
    String FLOW_END = API_PREFIX + "/flowEnd";
    /**
     * æµç¨‹å¯åŠ¨åŽè°ƒç”¨
     *
     * @param var æµç¨‹å¸¸é‡
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    @PostMapping(FLOW_START)
    R<Map> flowStart(@RequestParam("var") Map var);
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
 * Feign失败配置
 *
 * @author wang1
 */
@Component
public class IFlowEventFallback implements IFlowEventClient {
    @Override
    @PostMapping(FLOW_START)
    public R<Map> flowStart(Map var){
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/FlowEventClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.service.MdmEngineService;
import com.vci.ubcs.starter.revision.model.BaseModel;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import java.util.Map;
import static com.vci.ubcs.code.feign.IMdmEngineClient.SELECT_BY_TYPE_OID;
/**
 * å·¥ä½œæµäº‹ä»¶è°ƒç”¨ Feign实现类
 *
 * @author wang1
 * @since 2023-05-05
 */
@ApiIgnore()
@RestController
@AllArgsConstructor
public class FlowEventClient implements IFlowEventClient {
    /**
     * æµç¨‹å¯åŠ¨åŽè°ƒç”¨
     *
     * @param var æµç¨‹å¸¸é‡
     * @return æŸ¥è¯¢å‡ºçš„æ•°æ®
     */
    @PostMapping(FLOW_START)
    public R<Map> flowStart(@RequestParam("var") Map var){
        System.out.println(var.toString());
        return R.success("调用成功");
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -34,7 +34,6 @@
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.util.UBCSSqlKeyword;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
@@ -1474,7 +1473,7 @@
        CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(exportAttrDTO.getCodeClassifyOid());
        //先查询数据
        String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId();
        Map<String, Object> conditionMap = exportAttrDTO.getConditionMap();
        Map<String, String> conditionMap = exportAttrDTO.getConditionMap();
        if(conditionMap == null){
            conditionMap = new HashMap<>();
        }
@@ -1490,7 +1489,15 @@
        conditionMap.put("codeclsfpath","*" + exportAttrDTO.getCodeClassifyOid() + "*");
        conditionMap.put("lastr", "1");
        conditionMap.put("lastv", "1");
        UBCSSqlKeyword.buildSqlwhere(conditionMap);
        // æŸ¥è¯¢å‡ºè¡¨å
        String countSql = "select count(*) from " + VciBaseUtil.getTableName(btmTypeId) +" where 1=1" +
            " and lastr = '1'" +
            " and lastv='1'" +
            " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
        //先查询总数
        int total = 0;
        if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0
@@ -1504,11 +1511,11 @@
                thisPage.setOrder(exportAttrDTO.getOrder());
                thisPage.addDefaultDesc("createTime");
                total += boService.queryCount(btmTypeId, conditionMap);
                total += commonsMapper.queryCountBySql(countSql);
            }
        }else{
            total=boService.queryCount(btmTypeId, conditionMap);
            total = commonsMapper.queryCountBySql(countSql);
        }
        List<String> selectFieldList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(exportAttrDTO.getAttrIdIndexMap())){
@@ -1581,9 +1588,6 @@
        LocalFileUtil.deleteTempFile(file,true);
        return zipFileName;
    }
    private
    /**
     * æŸ¥è¯¢æ•°æ®å¹¶å¯¼å‡ºåˆ°excel
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -86,10 +86,7 @@
    @Override
    @Transactional(rollbackFor = VciBaseException.class)
    public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception {
//        BatchCBO batchCBO = new BatchCBO();
//        WebUtil.setPersistence(false);
        dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
//        batchCBO.getCreateCbos().addAll(dataCBOList);
        List<String> codeList = new ArrayList<>();
        /*****
@@ -179,18 +176,13 @@
            List<CodeSerialValue> editSerialValueList = new ArrayList<>();
            maxSerialMap.forEach((serialUnit,secOidMaxMap)->{
                secOidMaxMap.forEach((secOid,maxSerial)->{
//                    Map<String, String> conditionMap = new HashMap<>();
//                    conditionMap.put("codeRuleOid", ruleVO.getOid());
//                    conditionMap.put("serialUnit", serialUnit);
//                    //这个字段是为了解决多个流水的问题
//                    conditionMap.put("codeSecOid", secOid);
                    QueryWrapper<CodeSerialValue> queryWrapper = new QueryWrapper<>();
                    queryWrapper.eq("codeRuleOid", ruleVO.getOid());
                    queryWrapper.eq("serialUnit", serialUnit);
                    //这个字段是为了解决多个流水的问题
                    queryWrapper.eq("codeSecOid", secOid);
                    List<CodeSerialValue> serialValueDOS = serialValueMapper.selectList(queryWrapper);
//                    .selectByCondition(conditionMap, new PageHelper(-1));
                    if (!CollectionUtils.isEmpty(serialValueDOS)) {
                        CodeSerialValue serialValueDO = serialValueDOS.get(0);
                        if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<maxSerial){
@@ -209,19 +201,14 @@
                });
            });
            if(!CollectionUtils.isEmpty(addSerialValueList)){
//                batchCBO.copyFromOther(serialValueMapper.batchInsert(addSerialValueList));
                for (CodeSerialValue codeSerialValue : addSerialValueList) {
                    serialValueMapper.insert(codeSerialValue);
                }
//                serialValueMapper.ba
            }
            if(!CollectionUtils.isEmpty(editSerialValueList)){
                for (CodeSerialValue codeSerialValue : editSerialValueList) {
                    serialValueMapper.updateById(codeSerialValue);
                }
//                batchCBO.copyFromOther(serialValueMapper.batchUpdate(editSerialValueList));
            }
            //处理allCode
            if(!CollectionUtils.isEmpty(allCodeDOList)){
@@ -231,9 +218,6 @@
                List<CodeAllCode> editCodeDOs = new ArrayList<>();
                ruleGroup.forEach((ruleOid,allCodeDOS)->{
                    VciBaseUtil.switchCollectionForOracleIn(allCodeDOS).stream().forEach(codeDOs->{
//                        Map<String,String> conditionMap = new HashMap<>();
//                        conditionMap.put("coderuleoid",ruleOid);
//                        conditionMap.put("id",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDOs.stream().map(s->s.getId()).collect(Collectors.toList()).toArray(new String[0])) + ")");
                        QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>();
                        allCodeWrapper.eq("coderuleoid",ruleOid);
                        allCodeWrapper.in("id", QueryOptionConstant.IN + "(" +
@@ -264,21 +248,25 @@
                    addCodeDOs = allCodeDOList;
                }
                if(!CollectionUtils.isEmpty(editCodeDOs)){
//                    batchCBO.copyFromOther(allCodeMapper.batchUpdate(editCodeDOs));
                    codeAllCodeService.updateBatchById(editCodeDOs);
                }
                if(!CollectionUtils.isEmpty(addCodeDOs)){
                    //batchCBO.copyFromOther(allCodeMapper.batchInsert(addCodeDOs));
                    Map<String, String> statusMap = addCodeDOs.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
                    addCodeDOs.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
                        s.setLcStatus(statusMap.get(s.getOid()));
                    });
                    //通过ID来进行去重
                    List<CodeAllCode> distinctCodeAllCOdes = addCodeDOs.stream().collect(Collectors
                        .collectingAndThen(
                            Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))),
                            ArrayList::new));
                    if( distinctCodeAllCOdes.size() != addCodeDOs.size() ){
                        throw new VciBaseException("编码数据重复,无法保存,请注意!");
                    }
                    codeAllCodeService.saveBatch(addCodeDOs);
                }
                mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
            }
//            WebUtil.setPersistence(true);
//            boService.persistenceBatch(batchCBO);
            return codeList;
        }else {
            List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
@@ -347,7 +335,14 @@
            });
            //通过ID来进行去重
            List<CodeAllCode> distinctCodeAllCOdes = allCodeDOList.stream().collect(Collectors
                .collectingAndThen(
                    Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))),
                    ArrayList::new));
            if( distinctCodeAllCOdes.size() != allCodeDOList.size() ){
                throw new VciBaseException("编码数据重复,无法保存,请注意!");
            }
            codeAllCodeService.saveBatch(allCodeDOList);
//            iCodeWupinService.saveBatch(dataCBOList);
            mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);