xiejun
2023-07-10 c23e793aab1bee979cd9422949f3c648f35b074a
关于集成接口管理模块的开发
已修改11个文件
已添加8个文件
1229 ■■■■■ 文件已修改
Source/UBCS/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemConfigDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingData.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSysIntHeader.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingDataMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingDataService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingDataServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java 561 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/HttpUtils.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/WsErpClientUtil.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingDataWrapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingDataMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/pom.xml
@@ -21,7 +21,7 @@
        <spring.cloud.version>2021.0.3</spring.cloud.version>
        <spring.platform.version>Cairo-SR8</spring.platform.version>
        <maven.plugin.version>3.8.1</maven.plugin.version>
        <axis2.version>1.7.5</axis2.version>
        <!-- æŽ¨èä½¿ç”¨Harbor -->
        <docker.registry.url>192.168.0.157</docker.registry.url>
        <docker.registry.host>http://${docker.registry.url}:2375</docker.registry.host>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingSystemConfigDTO.java
@@ -186,7 +186,7 @@
    private String classPath;
    /**
     * æ•°æ®æµå‘方式
     * æ•°æ®æµå‘方式1:接受2:分发
     */
    private String dataFlowType;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.constant.CodeTableNameConstant;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/***
 * å¾…集成数据
 */
@Data
@TableName(CodeTableNameConstant.PL_CODE_DOCKINGPADATA)
@ApiModel(value = "DockingData", description = "待集成数据")
@EqualsAndHashCode(callSuper = true)
public class DockingData extends BaseModel {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 5020487634341415429L;
    /**
     * å›¾å·
     */
    @ApiModelProperty(value = "图号")
    private String uniqueCode;
    /**
     * ç³»ç»ŸæŽ¥å£oid
     */
    @ApiModelProperty(value = "分类主键")
    private String classifyOid;
    /**
     * ä¸šåŠ¡ç±»åž‹ä¸»é”®
     */
    @ApiModelProperty(value = "业务类型主键")
    private String btmOid;
    /**
     * ä¸šåŠ¡ç±»åž‹ç¼–å·
     */
    @ApiModelProperty(value = "业务类型编号")
    private String btmId;
    /**
     * å‘送类型
     */
    @ApiModelProperty(value = "发送类型")
    private String sendType;
    /**
     * ä»»åŠ¡æ˜¯å¦ç”Ÿæˆ
     */
    @ApiModelProperty(value = "任务是否生成")
    private String sendFlag;
    /**
     * åˆ†ç±»ç¼–号
     */
    @ApiModelProperty(value = "分类编号")
    private String classifyId;
    /**
     * ç³»ç»Ÿid
     */
    @ApiModelProperty(value = "分类名称")
    private String classifyName;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSysIntHeader.java
@@ -14,7 +14,7 @@
 * æŽ¥å£å¤´åè®®
 */
@Data
@TableName(CodeTableNameConstant.PL_CODE_SYSINTPAREMTER)
@TableName(CodeTableNameConstant.PL_CODE_SYSINTHEADER)
@ApiModel(value = "DockingSysIntHeader", description = "集成接口-接口头协议对象")
@EqualsAndHashCode(callSuper = true)
public class DockingSysIntHeader extends BaseModel {
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java
@@ -284,9 +284,9 @@
    /***
     * æŽ¨é€ç±»åž‹ 1:数据推送/2分类推送,默认数据推送
     *  æŽ¨é€ç±»åž‹ 1:数据推送,2分类推送,默认数据推送,3:编码申请,4:编码更改(更改、状态,回收),5:分类查询,6:含规则信息的分类查询,7:数据查询
     */
    @ApiModelProperty(value = "推送类型 1:数据推送/2分类推送,默认数据推送")
    @ApiModelProperty(value = "推送类型 1:数据推送,2分类推送,默认数据推送,3:编码申请,4:编码更改(更改、状态,回收),5:分类查询,6:含规则信息的分类查询,7:数据查询")
    private String pushType;
    /***
     * æŽ¨é€ç±»åž‹æ˜¾ç¤ºå€¼
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingTask.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.constant.CodeTableNameConstant;
import com.vci.ubcs.starter.revision.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -12,7 +13,7 @@
 * å®šæ—¶åˆ†å‘任务对象
 */
@Data
@TableName("PL_CODE_DOCKINGTASK")
@TableName(CodeTableNameConstant.PL_CODE_DOCKINGTASK)
@ApiModel(value = "DockingTask", description = "定时分发任务对象")
@EqualsAndHashCode
public class DockingTask extends BaseModel {
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java
@@ -118,14 +118,29 @@
    public static final String PL_CODE_SYSINTBASE = "PL_CODE_SYSINTBASE";
    /**
     * é›†æˆæŽ¥å£-集成接口管理对象
     * é›†æˆæŽ¥å£-集成接口配置对象
     */
    public static final String PL_CODE_SYSINTINFO = "PL_CODE_SYSINTINFO";
    /**
     * é›†æˆæŽ¥å£-集成接口管理对象
     * é›†æˆæŽ¥å£-集成参数管理对象
     * platformbtm_sysintparemter
     */
    public static final String PL_CODE_SYSINTPAREMTER = "PL_CODE_SYSINTPAREMTER";
    /**
     * æŽ¥å£å¤´åè®®
     */
    public static final String PL_CODE_SYSINTHEADER = "PL_CODE_SYSINTHEADER";
    /***
     * å¾…集成数据
     */
    public static final String PL_CODE_DOCKINGPADATA = "PL_CODE_DOCKINGPADATA";
    /***
     * å®šæ—¶åˆ†å‘任务对象
     */
    public static final String PL_CODE_DOCKINGTASK = "PL_CODE_DOCKINGTASK";
}
Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -97,6 +97,48 @@
            <artifactId>DmJdbcDriver18</artifactId>
            <optional>true</optional>
        </dependency>-->
        <!--axis2 begin -->
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-adb</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>${axis2.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>commons-io</artifactId>
                    <groupId>commons-io</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>geronimo-activation_1.1_spec</artifactId>
                    <groupId>org.apache.geronimo.specs</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--axis2 end -->
    </dependencies>
    <build>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
@@ -4,19 +4,19 @@
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
import com.vci.ubcs.code.dto.DockingSystemDTO;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
import com.vci.ubcs.code.entity.DockingData;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.service.IDockingDataService;
import com.vci.ubcs.code.service.IDockingSystemConfigService;
import com.vci.ubcs.code.service.IDockingSystemService;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.vo.pagemodel.DockingDataVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemConfigVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemConfigWrapper;
import com.vci.ubcs.code.wrapper.DockingDataWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@@ -40,12 +40,17 @@
     * é›†æˆç³»ç»Ÿç®¡ç†æœåŠ¡
     */
    private  final IDockingSystemService dockingSystemService;
    /***
     * é›†æˆæŽ¥å£é…ç½®æœåŠ¡
     */
    private  final IDockingSystemConfigService dockingSystemConfigService;
    /***
     * å¾…集成数据服务
     */
    private final IDockingDataService dockingDataService;
    /**系统集成的系统信息列表
@@ -89,8 +94,8 @@
     * @param oids ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteDataById")
    public R deleteDataById( String oids) {
    @DeleteMapping( "/deleteSystemsById")
    public R deleteSystemsById( String oids) {
        try {
            return R.status(dockingSystemService.deleteDataById(oids));
        }catch (VciBaseException e){
@@ -100,15 +105,15 @@
    }
    /**
     * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯åˆ—表
     * @param DockingSystemConfig åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @param dockingSystemConfig åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridSystemConfig")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "DockingSystemConfig")
    public R<IPage<DockingSystemConfigVO>> gridSystemConfig(DockingSystemConfig DockingSystemConfig, Query query){
        IPage<DockingSystemConfig> pages = dockingSystemConfigService.page(Condition.getPage(query), Condition.getQueryWrapper(DockingSystemConfig));
        return R.data(DockingSystemConfigWrapper.build().pageVO(pages));
    @ApiOperation(value = "分页", notes = "dockingSystemConfig")
    public R<IPage<DockingSystemConfigVO>> gridSystemConfig(DockingSystemConfig dockingSystemConfig, Query query){
        IPage<DockingSystemConfigVO>  pages=dockingSystemConfigService.page(dockingSystemConfig,query);
        return R.data(pages);
    }
    /**
@@ -125,4 +130,65 @@
            return R.fail("保存失败!");
        }
    }
    /**
     * å¢žåŠ  ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/editSystemConfig")
    public R editSystemConfig(@RequestBody DockingSystemConfigDTO dockingSystemConfigDTO){
        try {
            boolean res =  dockingSystemConfigService.editSave(dockingSystemConfigDTO);
            return R.success("保存成功!");
        }catch (Throwable e){
            return R.fail("保存失败!");
        }
    }
    /**
     * åˆ é™¤ç³»ç»Ÿé›†æˆç³»ç»Ÿé…ç½®ä¿¡æ¯
     * @param oids ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteSystemConfigsById")
    public R deleteSystemConfigsById( String oids) {
        try {
            return R.status(dockingSystemConfigService.deleteDataById(oids));
        }catch (VciBaseException e){
            R.fail(e.getMessage());
        }
        return R.success("操作成功");
    }
    /***
     * æŽ¥å£ä¿¡æ¯æ˜¯å¦å¯ç”¨/停用
     * @param sysInfoStatusDTO
     * @return
     */
    @PostMapping("/updateStatus")
    public R updateStatus(@RequestBody UpdateSysInfoStatusDTO sysInfoStatusDTO){
        return dockingSystemConfigService.updateStatus(sysInfoStatusDTO);
    }
    /***
     * æ‰‹åŠ¨æŽ¨é€åˆ†ç±»/数据
     * @param dockingSystemConfigDTO
     * @return
     */
    @PostMapping("/pushData")
    public R pushData(@RequestBody DockingSystemConfigDTO dockingSystemConfigDTO){
        return dockingSystemConfigService.pushData(dockingSystemConfigDTO);
    }
    /**
     * å¾…集成数据
     * @param dockingData åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridDockingData")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "DockingDataVO")
    public R<IPage<DockingDataVO>> gridDockingData(DockingData dockingData, Query query){
        IPage<DockingData> pages = dockingDataService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingData));
        return R.data(DockingDataWrapper.build().pageVO(pages));
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/SysIntegrationDataFlowTypeEnum.java
@@ -15,9 +15,9 @@
     */
    PUSH("push","推送"),
    /**
     * é€šçŸ¥å’ŒæŸ¥è¯¢
     * æŽ¥å—
     */
    NOTICE_AND_QUERY("noticeAndQuery","通知和查询");
    ACCEPT("accept","接收");
    /**
     * æžšä¸¾çš„值
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingDataMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.entity.DockingData;
public interface DockingDataMapper extends BaseMapper<DockingData> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingDataService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.DockingData;
/***
 * @author xj
 * @date 2023-07-10
 */
public interface IDockingDataService extends IService<DockingData> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingSystemConfigService.java
@@ -1,9 +1,15 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemConfigVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-接口配置服务
@@ -12,19 +18,41 @@
 */
public interface IDockingSystemConfigService extends IService<DockingSystemConfig> {
    /**
     * ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯åˆ—表
     * @param dockingSystemConfig åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç³»ç»Ÿé›†æˆåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    IPage<DockingSystemConfigVO> page(DockingSystemConfig dockingSystemConfig, Query query);
    /**
     * å¢žåŠ  ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    public boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO);
     boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO);
    /**
     * ä¿®æ”¹ ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    DockingSystemVO editSave(DockingSystemConfigDTO dockingSystemConfigDTO);
    boolean editSave(DockingSystemConfigDTO dockingSystemConfigDTO);
    /***
     * æ›´æ–°æŽ¥å£é…ç½®ä¿¡æ¯çŠ¶æ€
     * @param sysInfoStatusDTO
     * @return
     */
    public R updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO);
    /***
     * æ‰‹åŠ¨åŒæ­¥æŽ¥å£ï¼Œåªæœ‰æŽ¨é€çš„æ‰ä¼š
     * @param dockingSystemConfig
     * @return
     * @throws VciBaseException
     */
    R pushData(DockingSystemConfigDTO dockingSystemConfigDTO) throws VciBaseException;
    boolean deleteDataById(String oids);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingDataServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.DockingData;
import com.vci.ubcs.code.mapper.DockingDataMapper;
import com.vci.ubcs.code.service.IDockingDataService;
import org.springframework.stereotype.Service;
/***
 * @author xj
 * @date 2023-07-10
 */
@Service
public class DockingDataServiceImpl extends ServiceImpl<DockingDataMapper, DockingData> implements IDockingDataService {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -1,36 +1,62 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.DockingSysIntHeaderDTO;
import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
import com.vci.ubcs.code.dto.DockingSysIntParamDTO;
import com.vci.ubcs.code.entity.DockingSysIntHeader;
import com.vci.ubcs.code.entity.DockingSysIntParam;
import com.vci.ubcs.code.entity.DockingSystem;
import com.vci.ubcs.code.entity.DockingSystemConfig;
import com.vci.ubcs.code.enumpack.SysIntegrationRequestTypeEnum;
import com.vci.ubcs.code.mapper.DockingSysIntHeaderMapper;
import com.vci.ubcs.code.mapper.DockingSysIntParamMapper;
import com.vci.ubcs.code.mapper.DockingSystemConfigMapper;
import com.vci.ubcs.code.mapper.DockingSystemMapper;
import com.vci.ubcs.code.service.IDockingSysIntHeaderService;
import com.vci.ubcs.code.service.IDockingSysIntParamService;
import com.vci.ubcs.code.service.IDockingSystemConfigService;
import com.vci.ubcs.code.vo.pagemodel.DockingSysIntHeaderVO;
import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
import com.vci.ubcs.code.dto.datapush.classify.JsonRootDataDTO;
import com.vci.ubcs.code.dto.datapush.classify.NodeClassifyDTO;
import com.vci.ubcs.code.dto.datapush.classify.NodeDataDTO;
import com.vci.ubcs.code.dto.datapush.classify.NodeLibraryDTO;
import com.vci.ubcs.code.dto.datapush.result.ResultJsonDTO;
import com.vci.ubcs.code.dto.datapush.result.ResultNodeDataDTO;
import com.vci.ubcs.code.dto.datapush.result.ResultNodeObjectDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.mapper.*;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.util.HttpUtils;
import com.vci.ubcs.code.util.WsErpClientUtil;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.wrapper.DockingSysIntHeaderWrapper;
import com.vci.ubcs.code.wrapper.DockingSysIntParamWrapper;
import com.vci.ubcs.code.wrapper.DockingSystemConfigWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmDuckingConstant.*;
import static com.vci.ubcs.starter.util.MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD;
/***
 * ç³»ç»ŸæŽ¥å£ç®¡ç†-接口配置服务
@@ -41,6 +67,8 @@
@Service
public class DockingSystemConfigServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDockingSystemConfigService{
    @Value("${dataSyncPush.dataParamName:xmlData}")
    public String DATA_PARAM_NAME;
    /***
     * é›†æˆç³»ç»Ÿç®¡ç†æœåŠ¡
     */
@@ -53,8 +81,6 @@
    @Autowired(required = false)
    private IDockingSysIntParamService dockingSysIntParamService;
    /***
     * é›†æˆæŽ¥å£-集成接口管理参数服务
     */
@@ -62,17 +88,71 @@
    private IDockingSysIntHeaderService dockingSysIntHeaderService;
    /***
     * é›†æˆæŽ¥å£-集成系统服务
     */
    @Autowired(required = false)
    private DockingSystemMapper dockingSystemMapper;
    /***
     * ä»»åŠ¡ç”ŸæˆæœåŠ¡
     */
    @Autowired(required = false)
    private IDockingTaskService dockingTaskService;
    /**
     * ä¸»æ•°æ®å¼•擎的服务
     */
    @Resource
    private MdmEngineService engineService;
    /**
     * ä¸»é¢˜åº“分类的服务
     */
    @Resource
    private ICodeClassifyService classifyService;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Autowired
    private RevisionModelUtil revisionModelUtil;
    /**
     * é€šç”¨æŸ¥è¯¢
     */
    @Resource
    private CommonsMapper commonsMapper;
    /**
     * æ—¥å¿—文件服务
     */
    @Resource
    private IDockingLogeService dockingLogeService;
    @Override
    public IPage<DockingSystemConfigVO> page(DockingSystemConfig DockingSystemConfig, Query query) {
        IPage<DockingSystemConfig> pages = page(Condition.getPage(query), Condition.getQueryWrapper(DockingSystemConfig));
        List<DockingSystemConfig>  dockingSystemConfigList= pages.getRecords();
        dockingSystemConfigList.stream().forEach(dockingSystemConfig -> {
            dockingSystemConfig.setDataFlowTypeText(SysIntegrationDataFlowTypeEnum.getTextByValue(dockingSystemConfig.getDataFlowType()));
            dockingSystemConfig.setAuthorityTypeText(SysIntegrationAuthorityTypeEnum.getTextByValue(dockingSystemConfig.getAuthorityType()));
            dockingSystemConfig.setParamTypeText(SysIntegrationParamAndReturnTypeEnum.getTextByValue(dockingSystemConfig.getParamType()));
            dockingSystemConfig.setReturnTypeText(SysIntegrationParamAndReturnTypeEnum.getTextByValue(dockingSystemConfig.getReturnType()));
            dockingSystemConfig.setInterfaceTypeText(SysIntegrationRequestTypeEnum.getValueByText(dockingSystemConfig.getInterfaceType()));
            dockingSystemConfig.setPushTypeText(sysIntegrationPushTypeEnum.getTextByValue(dockingSystemConfig.getPushType()));
            dockingSystemConfig.setRequestMethodText(SysIntegrationRequestMethodEnum.getTextByValue(dockingSystemConfig.getRequestMethod()));
            //dockingSystemConfig.setSysBaseName("");
        //    dockingSystemConfig.setSourceSysName("");
            //dockingSystemConfig.setTargetSysName("");
        });
        return  DockingSystemConfigWrapper.build().pageVO(pages);
    }
    /**
     * å¢žåŠ ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
@@ -127,9 +207,154 @@
    }
    /**
     * ä¿®æ”¹ ç³»ç»Ÿé›†æˆçš„æŽ¥å£ç®¡ç†ä¿¡æ¯
     * @param dockingSystemConfigDTO ç³»ç»Ÿé›†æˆçš„系统信息数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public DockingSystemVO editSave(DockingSystemConfigDTO dockingSystemDTO) {
        return null;
    public boolean editSave(DockingSystemConfigDTO dockingSystemConfigDTO) {
        VciBaseUtil.alertNotNull(dockingSystemConfigDTO,"数据对象",dockingSystemConfigDTO.getOid(),"系统集成基础信息主键");
        String sourcesystemoid = dockingSystemConfigDTO.getSourceSystemOid();//.getSourcesystemoid();
        DockingSystem dockingSystem = dockingSystemMapper.selectById(sourcesystemoid);
        dockingSystemConfigDTO.setSysBaseOid(sourcesystemoid);
        dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId());
        dockingSystemConfigDTO.setBtmname(dockingSystem.getName());
        //将DTO转换为DO
        DockingSystemConfig dockingSystemConfig = dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(dockingSystemConfigDTO,dockingSystemConfig);
        String sysInfoOid=dockingSystemConfigDTO.getOid();
        List<DockingSysIntParamDTO> dockingSysIntParamDTOS=  dockingSystemConfigDTO.getSysIntParamDTOS();
        List<DockingSysIntParam> dockingSysIntParamList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingSysIntParamDTOS)) {
            dockingSysIntParamDTOS.stream().forEach(dockingSysIntParamDTO -> {
                DockingSysIntParam dockingSysIntParam = new DockingSysIntParam();
                BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSysIntParamDTO, dockingSysIntParam);
                dockingSysIntParamList.add(dockingSysIntParam);
            });
        }
        List<DockingSysIntHeaderDTO> dockingSysIntHeaderDTOS= dockingSystemConfigDTO.getSysIntHeaderDTOS();
        List<DockingSysIntHeader> dockingSysIntHeaderList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingSysIntHeaderDTOS)) {
            dockingSysIntHeaderDTOS.stream().forEach(dockingSysIntHeaderDTO -> {
                DockingSysIntHeader dockingSysIntHeader = new DockingSysIntHeader();
                BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSysIntHeaderDTO, dockingSysIntHeader);
                dockingSysIntHeaderList.add(dockingSysIntHeader);
            });
        }
        //批量处理保存header对象
        if(!CollectionUtils.isEmpty(dockingSysIntHeaderList)) {
            List<String> idList=new ArrayList<>();
            List<DockingSysIntHeader> headers_old =this.dockingSysIntHeaderService.list(Wrappers.<DockingSysIntHeader>query().lambda().eq(DockingSysIntHeader::getInfoOid,sysInfoOid));;
            for (DockingSysIntHeader sysIntHeader:headers_old){
                sysIntHeader.setUsedFlag(FLAG_FAIL);
                idList.add(sysIntHeader.getOid());
            }
            if(idList.size()!=0){
                boolean res=dockingSysIntHeaderService.removeBatchByIds(idList);
            }
            //再新增headers
            for(DockingSysIntHeader sysIntHeader:dockingSysIntHeaderList){
                sysIntHeader.setUsedFlag(FLAG_TRUE);
                sysIntHeader.setInfoOid(dockingSystemConfig.getOid());
            }
            boolean res= dockingSysIntHeaderService.saveBatch(dockingSysIntHeaderList);
        }
        //批量处理保存Param对象
        if(!CollectionUtils.isEmpty(dockingSysIntParamList)) {
            //先删除params_old
            List<String> idList=new ArrayList<>();
            List<DockingSysIntParam> params_old =this.dockingSysIntParamService.list(Wrappers.<DockingSysIntParam>query().lambda().eq(DockingSysIntParam::getInfoOid,sysInfoOid));
            for (DockingSysIntParam sysIntParamDO:params_old){
                sysIntParamDO.setUsedFlag(FLAG_FAIL);
                idList.add(sysIntParamDO.getOid());
            }
            if(idList.size()!=0){
                boolean res= dockingSysIntParamService.removeBatchByIds(idList);
            }
            //再新增params
            for(DockingSysIntParam sysIntParamDOi:dockingSysIntParamList){
                sysIntParamDOi.setUsedFlag(FLAG_TRUE);
                sysIntParamDOi.setInfoOid(dockingSystemConfig.getOid());
            }
            dockingSysIntParamService.saveBatch(dockingSysIntParamList);
        }
        this.dockingSystemConfigMapper.updateById(dockingSystemConfig);
        //return changeoDckingSystemEntityVOs(dockingSystemConfig,dockingSysIntHeaderList,dockingSysIntParamList);
        return true;
    }
    /***
     * æ›´æ–°æŽ¥å£é…ç½®ä¿¡æ¯çŠ¶æ€
     * @param sysInfoStatusDTO
     * @return
     */
    @Override
    public R updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO) {
        VciBaseUtil.alertNotNull(sysInfoStatusDTO.getOid(),"数据对象",sysInfoStatusDTO.getOid(),"系统集成基础信息主键");
        DockingSystemConfig dockingSystemConfig = this.dockingSystemConfigMapper.selectById(sysInfoStatusDTO.getOid());
        try {
            dockingSystemConfig.setTs(VciDateUtil.str2Date(sysInfoStatusDTO.getTs(), VciDateUtil.DateTimeFormat));
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(sysInfoStatusDTO.getUpdate().equals("disable")) {
            dockingSystemConfig.setUsedFlag("false");
        }else{
            dockingSystemConfig.setUsedFlag("true");
        }
        dockingSystemConfigMapper.updateById(dockingSystemConfig);
        return R.status(true);
    }
    /***
     * æ‰‹åŠ¨åŒæ­¥æŽ¥å£ï¼Œåªæœ‰æŽ¨é€çš„æ‰ä¼š
     * @param dockingSystemConfigDTO
     * @return
     * @throws VciBaseException
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public R pushData(DockingSystemConfigDTO dockingSystemConfigDTO) throws VciBaseException {
        VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getOid(),"数据对象",dockingSystemConfigDTO.getOid(),"系统集成配置信息主键");
        if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.ACCEPT.getValue())){
            throw new VciBaseException("你所选择集成配置信息不属于推送类型的接口配置!");
        }
        boolean issuccess=false;
        String type="数据推送";
        if(dockingSystemConfigDTO.getPushType().equalsIgnoreCase("1")){//推送数据
            pushDockingTasks(dockingSystemConfigDTO);
        }else if(dockingSystemConfigDTO.getPushType().equalsIgnoreCase("2")){//推送分类
            issuccess= pushClsfDatas(dockingSystemConfigDTO);
            type="分类推送";
        }
        return issuccess?R.success(type+"成功!"):R.fail(type+"失败!");
    }
    /**
     *
     * @param dockingSystemConfig
     * @param dockingSysIntHeaderList
     * @param dockingSysIntParamList
     * @return
     */
    private DockingSystemConfigVO changeoDckingSystemEntityVOs(DockingSystemConfig dockingSystemConfig , List<DockingSysIntHeader> dockingSysIntHeaderList , List<DockingSysIntParam> dockingSysIntParamList) {
        DockingSystemConfigVO vo = new DockingSystemConfigVO();
        if(dockingSystemConfig != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSystemConfig,vo);
            //如果有lcstatus的类的话
            if(!CollectionUtils.isEmpty(dockingSysIntParamList)) {
                List<DockingSysIntParamVO> dockingSysIntParamVOList = DockingSysIntParamWrapper.build().entityVOs(dockingSysIntParamList);
                vo.setSysIntParamVOs(dockingSysIntParamVOList);
            }
            if(!CollectionUtils.isEmpty(dockingSysIntHeaderList)){
                List<DockingSysIntHeaderVO> dockingSysIntHeaderVOList=    DockingSysIntHeaderWrapper.build().entityVOs(dockingSysIntHeaderList);
                vo.setSysIntHeaderVOs(dockingSysIntHeaderVOList);
            }
        }
        return vo;
    }
    @Override
@@ -153,4 +378,304 @@
            VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getClassPath(),"类路径");
        }
    }
    private  R pushDockingTasks(DockingSystemConfigDTO dockingSystemConfigDTO) {
        String msg="数据推送到定时任务成功!";
        try {
            DockingSystemConfig dockingSystemConfig =dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid());
            String codeClassifyOid = dockingSystemConfig.getClassifyOid();
            CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
            CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid);
            String btmTypeId = topClassifyVO.getBtmtypeid();
            if (StringUtils.isBlank(btmTypeId)) {
                return R.fail("这个分类所属顶层分类没有添加业务类型");
            }
            List<CodeClassifyVO> codeClassifyIdPathVOS = classifyService.listChildrenClassify(topClassifyVO.getOid(), true, "id", false);
            List<CodeClassifyVO> codeClassifynamePathVOS = classifyService.listChildrenClassify(topClassifyVO.getOid(), true, "name", false);
            Map<String/**分类oid**/, String/**分类代号链接符**/> clsfOidIdMap = codeClassifyIdPathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 1).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
            Map<String/**分类oid**/, String/**分类名称链接符**/> clsfOidNameMap = codeClassifynamePathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 2).toLowerCase(Locale.ROOT), (o1, o2) -> o2));
            PageHelper pageHelper = new PageHelper();
            pageHelper.setPage(1);
            pageHelper.setLimit(1000000);
            pageHelper.setStart(0);
            HashMap<String, String> conditionMap = new HashMap<>();
            if (!classifyService.checkHasChild(codeClassifyOid)) {
                conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
            } else {
                conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
                    + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
                    "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
            }
            conditionMap.put("islastr", "1");
            conditionMap.put("islastv", "1");
            List<String> lcstatusList = new ArrayList<>(Arrays.asList(new String[]{"TakeBack", "Released", "Disabled"}));
            conditionMap.put("lcstatus", QueryOptionConstant.IN + VciBaseUtil.toInSql(lcstatusList.toArray(new String[0])));
            CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(btmTypeId, templateVO, conditionMap, pageHelper);
            List<Map<String,String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
            List<DockingTask> dockingTaskDO_insert = new ArrayList<>();
            if (!CollectionUtils.isEmpty(maps)) {
                maps.stream().forEach(map -> {
                    String btmoid = map.get("oid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("oid".toUpperCase(Locale.ROOT)).toString();//数据oid
                    String sendtype = map.get("lcstatus".toUpperCase(Locale.ROOT)) == null ? "" : map.get("lcstatus".toUpperCase(Locale.ROOT)).toString();//数据推送类型
                    String id = map.get("id".toUpperCase(Locale.ROOT)) == null ? "" : map.get("id".toUpperCase(Locale.ROOT)).toString();//编码
                    String btmid = topClassifyVO.getBtmtypeid();//数据业务类型
                    String classifyoid = map.get("codeclsfid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("codeclsfid".toUpperCase(Locale.ROOT)).toString();//数据所在的分类id
                    String date2Str = VciDateUtil.date2Str(new Date(), VciDateUtil.DateTimeFormatStr);
                    DockingTask dockingTaskDO = new DockingTask();
                    dockingTaskDO.setOid(date2Str +"_"+id);
                    dockingTaskDO.setSendFlag(SEND_FLAG_FALSE);
                    dockingTaskDO.setId(id);//编码
                    dockingTaskDO.setUniqueCode("");
                    dockingTaskDO.setBtmOid(btmoid);//数据oid
                    dockingTaskDO.setBtmId(btmid);//数据业务类型id
                    if (clsfOidIdMap.containsKey(classifyoid)) {
                        String classifyid = clsfOidIdMap.get(classifyoid);
                        dockingTaskDO.setClassifyId(classifyid);//数据在分类id
                    }
                    dockingTaskDO.setClassifyOid(classifyoid);//数据所在分类oid
                    if (clsfOidNameMap.containsKey(classifyoid)) {
                        String classifyname = clsfOidNameMap.get(classifyoid);
                        dockingTaskDO.setClassifyName(classifyname);//数据所在分类名称
                    }
                    dockingTaskDO.setSendType(sendtype);//数据推送类型
                    //String dataoid=redisService.getUUIDEveryDay();
                    dockingTaskDO.setDataOid(date2Str +"_"+ btmoid);
                    //intinfo
                    dockingTaskDO.setSysInfoOid(dockingSystemConfigDTO.getOid());//intinfo的oid
                    dockingTaskDO.setSystemOid(dockingSystemConfigDTO.getSysBaseOid());//系统oid
                    dockingTaskDO.setSystemCode(dockingSystemConfigDTO.getSysBaseId());//系统编码
                    dockingTaskDO.setSystemName(dockingSystemConfigDTO.getSysBaseName());//系统name
                    dockingTaskDO_insert.add(dockingTaskDO);
                });
            }
            dockingTaskService.saveBatch(dockingTaskDO_insert);
        }catch (Throwable e){
            msg="数据推送到定时任务失败!";
            log.error("数据推送到定时任务失败!"+e);
            e.printStackTrace();
        }finally {
            log.info(msg);
            return R.success("数据推送到定时任务成功!");
        }
    }
    /***
     * åˆ†ç±»æŽ¨é€é›†æˆ
     * @param dockingSystemConfigDTO
     * @return
     */
    private  boolean pushClsfDatas(DockingSystemConfigDTO dockingSystemConfigDTO){
        DockingSystemConfig dockingSystemConfig= dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid());
        String classOid= dockingSystemConfig.getClassifyOid();
        List<CodeClassifyVO> listChildrenClassify=  classifyService.listChildrenClassify(classOid,true,"id",false);
        List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
        JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
        NodeDataDTO nodeDataDTO=new NodeDataDTO();
        //每个task一个事务,开启
        boolean isSuccess=false;
        try {
            String sendString = "";
            if (!CollectionUtils.isEmpty(listChildrenClassify)) {
                listChildrenClassify.stream().forEach(codeClassifyVO -> {
                    NodeClassifyDTO nodeClassifyDTO = new NodeClassifyDTO();
                    nodeClassifyDTO.setClassCode(codeClassifyVO.getId());//分类代号
                    nodeClassifyDTO.setDescription(codeClassifyVO.getDescription());//分类描述
                    nodeClassifyDTO.setFullPathName(codeClassifyVO.getPath());//全路径
                    nodeClassifyDTO.setLcStatus(codeClassifyVO.getLcStatus());//状态
                    nodeClassifyDTO.setPid(codeClassifyVO.getId());//父id节点
                    nodeClassifyDTO.setId(codeClassifyVO.getOid());//分类oid
                    nodeClassifyDTO.setName(codeClassifyVO.getName());//分类名称
                    nodeClassifyDTOList.add(nodeClassifyDTO);
                });
                NodeLibraryDTO nodeLibraryDTO = new NodeLibraryDTO();
                nodeLibraryDTO.setClassify(nodeClassifyDTOList);
                CodeClassifyVO rootClassify = classifyService.getTopClassifyVO(classOid);
                nodeLibraryDTO.setId(rootClassify.getOid());
                nodeLibraryDTO.setName(rootClassify.getName());
                nodeDataDTO.setLibrary(nodeLibraryDTO);
                jsonRootDataDTO.setData(nodeDataDTO);
                String paramType = dockingSystemConfigDTO.getParamType();//xml/json
                if (paramType.equals(DATATYPE_JSON)) {
                    Object object = JSONObject.toJSON(jsonRootDataDTO);
                    sendString = object.toString();
                } else {
                    //组织返回接口信息
                    XStream xStream = new XStream(new DomDriver());
                    xStream.processAnnotations(NodeDataDTO.class);
                    xStream.autodetectAnnotations(true);
                    sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
                }
                //调用接口
                callInterface(sendString, dockingSystemConfigDTO);
                isSuccess=true;
            }
        }catch (Throwable e){
            e.printStackTrace();
            isSuccess=false;
        }finally {
            return true;
        }
    }
    /***
     * è°ƒç”¨æŽ¥å£
     * @param dockingSystemConfigDTO
     * @throws Throwable
     */
    private void callInterface(String  sendString , DockingSystemConfigDTO dockingSystemConfigDTO) throws  Throwable{
        String paramString = "";
        String backString = "";
        String msg="";
        String url = dockingSystemConfigDTO.getRequestUrl();//url
        List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
        try {
            String type = dockingSystemConfigDTO.getInterfaceType().toLowerCase(Locale.ROOT);//get/post/webserver/corba
            String paramType = dockingSystemConfigDTO.getParamType();//xml/json
            String returnType = dockingSystemConfigDTO.getReturnType();//xml/json
            String requestmethod= dockingSystemConfigDTO.getRequestMethod();
            String interfaceFunction = dockingSystemConfigDTO.getInterfaceFunction();//主要是webservice的方法名
            String namespace = dockingSystemConfigDTO.getNamespace();//namespace
            String soapaction = dockingSystemConfigDTO.getSoapAction();//soapaction
            String targName = dockingSystemConfigDTO.getTargetName();//targName
            String cxfaxis = dockingSystemConfigDTO.getCxfAxis();//webservice是cxf/axis
            //查询param
            List<DockingSysIntParamDTO> sysIntParamVOList = dockingSystemConfigDTO.getSysIntParamDTOS();
            //查询header
            List<DockingSysIntHeaderDTO> sysIntHeaderVOList =dockingSystemConfigDTO.getSysIntHeaderDTOS();
            if(type.equals(URLTYPE_HTTP)) {
                if (requestmethod.equals(URLTYPE_GET)) {//GET请求
                    String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
                    //拼接param
                    for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) {
                        sendurl = sendurl + "&" + sysIntParamVO.getParamkey() + "=" + sysIntParamVO.getParamvalue();
                    }
                    paramString = sendurl;
                    backString = HttpUtils.get(sendurl);
                } else if (requestmethod.equals(URLTYPE_POST)) {//POST请求
                    MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                    if(!CollectionUtils.isEmpty(sysIntParamVOList)) {
                        for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) {
                            params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
                        }
                    }
                    params.add(DATA_PARAM_NAME,sendString);
                    paramString = params.toString();
                    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                    if(!CollectionUtils.isEmpty(sysIntHeaderVOList)) {
                        for (DockingSysIntHeaderDTO sysIntHeaderVO : sysIntHeaderVOList) {
                            headers.add(sysIntHeaderVO.getHeaderKey(), sysIntHeaderVO.getHeaderValue());
                        }
                    }
                    backString = HttpUtils.post(url, params, headers);
                }
                if(backString.startsWith("\"")){
                    backString=backString.substring(backString.indexOf("\"")+1);
                }
                if(backString.endsWith("\"")){
                    backString=backString.substring(0,backString.lastIndexOf("\""));
                }
                if(backString.contains("\n")){
                    String res="\n";
                    backString=  backString.replaceAll(res,"");
                }
                if(backString.contains("\\")){
                    String res="\\\\\"";
                    backString=  backString.replaceAll(res,"\"").trim();
                }
            }else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver请求
                MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) {
                    params.add(sysIntParamVO.getParamkey(), sysIntParamVO.getParamvalue());
                }
                paramString = sendString;
                MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                for (DockingSysIntHeaderDTO sysIntHeaderVO : sysIntHeaderVOList) {
                    headers.add(sysIntHeaderVO.getHeaderKey(), sysIntHeaderVO.getHeaderValue());
                }
                backString = WsErpClientUtil.sendMsg(url, namespace, soapaction, interfaceFunction, targName, sendString, 10000);
            } else {//corba接口
                //paramString=sendString;
                //  backString = jacorbClient.getBOFactoryService().sendCode(sendString);
            }
            ResultJsonDTO resultJsonDTO = new ResultJsonDTO();
            if(returnType.equals(DATATYPE_JSON)){
                resultJsonDTO =JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class);
            }else {
                //组织返回接口信息
                XStream xStream = new XStream(new DomDriver());
                xStream.processAnnotations(ResultNodeDataDTO.class);
                xStream.autodetectAnnotations(true);
                ResultNodeDataDTO resultNodeDataDTO = (ResultNodeDataDTO) xStream.fromXML(backString);
                resultJsonDTO.setData(resultNodeDataDTO);
            }
            ResultNodeDataDTO resultNodeDataDTO=resultJsonDTO.getData();
            resultNodeObjectDTOS=resultNodeDataDTO.getObject();
        }catch (Throwable e){
            msg="调用接口失败:"+e;
            e.printStackTrace();
            //   throw  new Throwable("调用接口失败:"+e);
            ResultNodeObjectDTO   resultNodeObjectDTO=new ResultNodeObjectDTO();
            resultNodeObjectDTO.setErroid("1");
            resultNodeObjectDTO.setMsg(msg);
            resultNodeObjectDTO.setCode(dockingSystemConfigDTO.getClassifyId());
            resultNodeObjectDTO.setOid(dockingSystemConfigDTO.getClassifyOid());
            resultNodeObjectDTOS.add(resultNodeObjectDTO);
        }finally {
            boolean isSend = false;
            List<DockingLog> dockingLogList=new ArrayList<>();
            for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){
                String erroid = resultNodeObjectDTO.getErroid();
                msg = resultNodeObjectDTO.getMsg();
                if("0".equals(erroid)){
                    isSend = true;
                }else if("1".equals(erroid)){
                    isSend=false;
                }else{
                    isSend=false;
                }
                DockingLog dockingLog = new DockingLog();
                String oid=VciBaseUtil.getPk();
                dockingLog.setOid(oid);
                dockingLog.setSystemCode(dockingSystemConfigDTO.getSysBaseId());
                dockingLog.setSystemName(dockingSystemConfigDTO.getSysBaseName());
                dockingLog.setSystemOid(dockingSystemConfigDTO.getSysBaseOid());
                dockingLog.setClassifyOid(dockingSystemConfigDTO.getClassifyOid());
                dockingLog.setClassifyId(dockingSystemConfigDTO.getClassifyId());
                dockingLog.setClassifyName(dockingSystemConfigDTO.getClassifyName());
                dockingLog.setId(dockingSystemConfigDTO.getId());
                dockingLog.setUniqueCode("");
                dockingLog.setInterfaceStatus(isSend?"true":"false");
                dockingLog.setParamString(paramString);
                dockingLog.setType(DATA_LOGE_OUT);
                dockingLog.setReturnString(backString);
                dockingLog.setMsg(msg);
                dockingLogList.add(dockingLog);
                log.info("集成推送数据,systemcode:"+dockingSystemConfigDTO.getSysBaseId()+",systemname:"+dockingSystemConfigDTO.getSysBaseName()+",url:"+url+",param:"+paramString+",e:"+msg);
            }
            dockingLogeService.saveBatch(dockingLogList);
        }
    }
    private String reverseOrderByList(String StringValue, CodeClassifyVO topClassifyVO,int type){
        String[] s=StringValue.split("#");
        StringBuffer sb=new StringBuffer();
        List<String> list=new ArrayList<>(Arrays.asList(s));
        Collections.reverse(list);
        System.out.println(list.toString());
        for (String o:list){
            if(StringUtils.isNotBlank(o)){
                sb.append(o).append(",");
            }
        }
        sb.append(type==1?topClassifyVO.getId():topClassifyVO.getName());
        System.out.println(sb.toString());
        return sb.toString();
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/HttpUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
package com.vci.ubcs.code.util;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
/**
 * http请求工具类
 *
 * @since 2020-03-25
 */
public class HttpUtils {
    //Content-Type的key
    public static String CONTENT_TYPE = "Content-Type";
    //json数据
    public static String CONTENT_TYPE_JSON = MediaType.APPLICATION_JSON_VALUE;
    public static String CONTENT_TYPE_JSON_UTF8 = MediaType.APPLICATION_JSON_UTF8_VALUE;
    //表单格式,默认
    public static String CONTENT_TYPE_TEXT = MediaType.APPLICATION_FORM_URLENCODED_VALUE;
    /**
     * get请求
     *
     * @param url
     * @return
     */
    public static String get(String url) {
        return get(url, null);
    }
    /**
     * get请求
     *
     * @param url
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String get(String url, MultiValueMap<String, String> headers) {
        return request(url, null, headers, HttpMethod.GET);
    }
    /**
     * post请求
     *
     * @param url
     * @param params è¯·æ±‚参数
     * @return
     */
    public static String post(String url, MultiValueMap<String, String> params) {
        return post(url, params, null);
    }
    /**
     * post请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
        return request(url, params, headers, HttpMethod.POST);
    }
    /**
     * put请求
     *
     * @param url
     * @param params è¯·æ±‚参数
     * @return
     */
    public static String put(String url, MultiValueMap<String, String> params) {
        return put(url, params, null);
    }
    /**
     * put请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
        return request(url, params, headers, HttpMethod.PUT);
    }
    /**
     * delete请求
     *
     * @param url
     * @param params è¯·æ±‚参数
     * @return
     */
    public static String delete(String url, MultiValueMap<String, String> params) {
        return delete(url, params, null);
    }
    /**
     * delete请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @return
     */
    public static String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
        return request(url, params, headers, HttpMethod.DELETE);
    }
    /**
     * è¡¨å•请求
     *
     * @param url
     * @param params  è¯·æ±‚参数
     * @param headers è¯·æ±‚头
     * @param method  è¯·æ±‚方式
     * @return
     */
    public static String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) {
        if (params == null) {
            params = new LinkedMultiValueMap<>();
        }
        return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED);
    }
    /**
     * http请求
     *
     * @param url
     * @param params    è¯·æ±‚参数
     * @param headers   è¯·æ±‚头
     * @param method    è¯·æ±‚方式
     * @param mediaType å‚数类型
     * @return
     */
    public static String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) {
        if (url == null || url.trim().isEmpty()) {
            return null;
        }
        RestTemplate client = new RestTemplate();
        // header
        HttpHeaders httpHeaders = new HttpHeaders();
        if (headers != null) {
            httpHeaders.addAll(headers);
        }
        // æäº¤æ–¹å¼ï¼šè¡¨å•、json
        httpHeaders.setContentType(mediaType);
        HttpEntity<Object> httpEntity = new HttpEntity(params, httpHeaders);
        ResponseEntity<String> response = client.exchange(url, method, httpEntity, String.class);
        return response.getBody();
    }
    public static MultiValueMap<String, String> set_params_headers(String key,String value,MultiValueMap<String, String> map){
        if(map==null){
            map = new LinkedMultiValueMap<>();
        }
        map.add(key,value);
        return map;
    }
    /**
     * èŽ·å–ip
     * @param request
     * @return
     */
    public static String getIpAddressFromRequest(HttpServletRequest request){
        String ip = request.getHeader("X-Forwarded-For");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        if (ip == null || ip.length() == 0 || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {
            //0:0:0:0:0:0:0:1是本机在访问
            ip = "127.0.0.1";
        }
        return ip;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/util/WsErpClientUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.vci.ubcs.code.util;
import com.alibaba.cloud.commons.lang.StringUtils;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class WsErpClientUtil {
    /**
     * axis2调用客户端
     *
     * @param url                   è¯·æ±‚服务地址
     * @param nameSpace             å‘½åç©ºé—´
     * @param method                æ–¹æ³•名
     * @param tarName                å‚数名称
     * @param xmlData                è¯·æ±‚报文
     * @param timeOutInMilliSeconds è¶…æ—¶æ—¶é—´
     * @return String ç±»åž‹çš„响应报恩
     */
    public static String sendMsg(String url, String nameSpace,String soapAction, String method, String tarName, String xmlData, long timeOutInMilliSeconds) throws Exception {
        ServiceClient serviceClient = new ServiceClient();
        Options option = new Options();
        option.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
        option.setTransportInProtocol(Constants.TRANSPORT_HTTP);
        // å€¼ä¸ºtargetNamespace+methodName
        if(StringUtils.isEmpty(soapAction)){
            soapAction = nameSpace+method;
        }
        option.setAction(soapAction);
        EndpointReference epfs = new EndpointReference(url);
        option.setTo(epfs);
        serviceClient.setOptions(option);
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace namespaceOM = fac.createOMNamespace(nameSpace, "");
        OMElement element = fac.createOMElement(method, namespaceOM);
        OMElement theCityCode = fac.createOMElement(tarName, namespaceOM);
        theCityCode.setText(xmlData);
        element.addChild(theCityCode);
//        OMElement theUserID = fac.createOMElement("theUserID ", namespace);
//        theUserID.setText("");
//        element.addChild(theUserID);
        OMElement resultOM = serviceClient.sendReceive(element);
        String result = resultOM.getFirstElement().getText();
        System.out.println(result);
        return result;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingDataWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.vci.ubcs.code.wrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.vci.ubcs.code.entity.DockingData;
import com.vci.ubcs.code.vo.pagemodel.DockingDataVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
public class DockingDataWrapper extends BaseEntityWrapper<DockingData, DockingDataVO> {
    public static DockingDataWrapper build() {
        return new DockingDataWrapper();
    }
    @Override
    public DockingDataVO entityVO(DockingData entity) {
        DockingDataVO vo = Objects.requireNonNull(BeanUtil.copy(entity, DockingDataVO.class));
        return vo;
    }
    /***
     * æ•°ç»„对象转换
     * @param entitys
     * @return
     */
    public List<DockingDataVO> entityVOs(Collection<DockingData> entitys) {
        if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
        List<DockingDataVO> vos=new ArrayList<>();
        if(!CollectionUtils.isEmpty(entitys)) {
            entitys.stream().forEach(vo -> {
                vos.add(entityVO(vo));
            });
        }
        return vos;
    }
    /***
     * æ•°ç»„对象转换
     * @param vos
     * @return
     */
    public List<DockingData> voentitys(Collection<DockingDataVO> vos) {
        if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
        List<DockingData>entitys =new ArrayList<>();
        if(!CollectionUtils.isEmpty(vos)) {
            vos.stream().forEach(entity -> {
                entitys.add(voentity(entity));
            });
        }
        return entitys;
    }
    /***
     * æ•°ç»„对象转换
     * @param vo
     * @return
     */
    public DockingData voentity( DockingDataVO vo) {
        DockingData entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingData.class));
        return entity;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingDataMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.DockingDataMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="plDockingDataResultMap" type="com.vci.ubcs.code.entity.DockingData">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
        <result column="BTMNAME" property="btmName"/>
        <result column="LASTR" property="lastR"/>
        <result column="FIRSTR" property="firstR"/>
        <result column="LASTV" property="lastV"/>
        <result column="FIRSTV" property="firstV"/>
        <result column="CREATOR" property="creator"/>
        <result column="CREATETIME" property="createTime"/>
        <result column="LASTMODIFIER" property="lastModifier"/>
        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
        <result column="REVISIONRULE" property="revisionRule"/>
        <result column="VERSIONRULE" property="versionRule"/>
        <result column="REVISIONSEQ" property="revisionSeg"/>
        <result column="REVISIONVALUE" property="revisionValue"/>
        <result column="VERSIONSEQ" property="versionSeq"/>
        <result column="VERSIONVALUE" property="versionValue"/>
        <result column="LCTID" property="lctid"/>
        <result column="LCSTATUS" property="lcStatus"/>
        <result column="TS" property="ts"/>
        <result column="ID" property="id"/>
        <result column="NAME" property="name"/>
        <result column="DESCRIPTION" property="description"/>
        <result column="OWNER" property="owner"/>
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
        <result column="UNIQUECODE" property="uniqueCode"/>
        <result column="CLASSIFYOID" property="classifyOid"/>
        <result column="BTMOID" property="btmOid"/>
        <result column="BTMID" property="btmId"/>
        <result column="SENDTYPE" property="sendType"/>
        <result column="SENDFLAG" property="sendFlag"/>
        <result column="CLASSIFYID" property="classifyId"/>
        <result column="CLASSIFYNAME" property="classifyName"/>
    </resultMap>
</mapper>