Преглед на файлове

修改——
1-数据导入后,应忽略企业相关的原有信息,数据条目(仅仅指代数据)中的企业信息应从后台管理中的企业信息中获取。
2-数据审核发起后,企业信息不再变更,数据条目中责任主体相关信息应从后端通过审核的企业信息同步更新。
3-一旦数据条目启动审核流程,应断开企业信息内部同步接口。
4-当数据从数据回收撤出恢复时,应恢复企业信息内部同步接口

zhouhaijun преди 5 дни
родител
ревизия
10dedfe2e3

+ 35 - 0
src/main/java/com/bootdo/datas/controller/GyDataImportController.java

@@ -4,16 +4,20 @@ import com.alibaba.fastjson.JSONArray;
 import com.bootdo.common.annotation.Log;
 import com.bootdo.common.utils.*;
 import com.bootdo.datas.domain.GyDataExcelDO;
+import com.bootdo.datas.domain.GyDataUnitDO;
 import com.bootdo.datas.dto.GyDataImportDTO;
 import com.bootdo.datas.service.GyDataService;
+import com.bootdo.datas.service.GyDataUnitService;
 import com.bootdo.datas.tools.ExcelUtils;
 import com.bootdo.datas.tools.gm.FileCryptTool;
+import com.bootdo.system.domain.UserDO;
 import com.google.common.collect.Lists;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.Model;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
@@ -21,6 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -32,6 +37,8 @@ public class GyDataImportController {
 
     @Autowired
     private GyDataService gyDataService;
+    @Autowired
+    private GyDataUnitService gyDataUnitService;
 
     @GetMapping()
     @Log("访问数据导入")
@@ -198,11 +205,14 @@ public class GyDataImportController {
     /**
      * @Description: 送审
      */
+    @Transactional
     @PostMapping("/sendVerify")
     @ResponseBody
     @RequiresPermissions("datas:gyDataImport:sendVerify")
     public R sendVerify(@RequestParam("ids[]") Long[] ids, @RequestParam("roleId") Long roleId) {
+        UserDO currUser = ShiroUtils.getUser();
         log.info("送审 ids:" + ids.toString());
+        List<GyDataUnitDO> gyDataUnitDOList = new ArrayList<>();
         for (Long id : ids) {
             log.info("送审 id:" + id);
             GyDataImportDTO data = new GyDataImportDTO();
@@ -217,8 +227,33 @@ public class GyDataImportController {
                 data.setDataStatus("2");
                 data.setRoleId(roleId);
                 gyDataService.updateStatus(data,"");
+                if(gyDataUnitService.getByDataId(data.getId()) == null){
+                    GyDataUnitDO gyDataUnitDO = new GyDataUnitDO();
+                    gyDataUnitDO.setDataId(data.getId());
+                    gyDataUnitDO.setReporterUnit(data.getReporterUnit());
+                    gyDataUnitDO.setCreditCode(data.getCreditCode());
+                    gyDataUnitDO.setSupervisoryOrg(data.getSupervisoryOrg());
+                    gyDataUnitDO.setUnitCharacter(data.getUnitCharacter());
+                    gyDataUnitDO.setIndustryTypeOne(data.getIndustryTypeOne());
+                    gyDataUnitDO.setIndustryTypeTwo(data.getIndustryTypeTwo());
+                    gyDataUnitDO.setUnitProvince(data.getUnitProvince());
+                    gyDataUnitDO.setUnitCity(data.getUnitCity());
+                    gyDataUnitDO.setUnitMan(data.getUnitMan());
+                    gyDataUnitDO.setUnitOffice(data.getUnitOffice());
+                    gyDataUnitDO.setDataSecurityMan(data.getDataSecurityMan());
+                    gyDataUnitDO.setDataSecurityOffice(data.getDataSecurityOffice());
+                    gyDataUnitDO.setDataSecurityWay(data.getDataSecurityWay());
+                    gyDataUnitDO.setCreateUserId(currUser.getUserId());
+                    gyDataUnitDO.setUpdateUserId(currUser.getUserId());
+                    gyDataUnitDO.setCreateTime(new Date());
+                    gyDataUnitDO.setUpdateTime(new Date());
+                    gyDataUnitDOList.add(gyDataUnitDO);
+                }
             }
         }
+        if(!gyDataUnitDOList.isEmpty()){
+            gyDataUnitService.batchSave(gyDataUnitDOList);
+        }
         return R.ok();
     }
 

+ 32 - 0
src/main/java/com/bootdo/datas/dao/GyDataUnitDao.java

@@ -0,0 +1,32 @@
+package com.bootdo.datas.dao;
+
+import com.bootdo.datas.domain.GbDataExcelDO;
+import com.bootdo.datas.domain.GyDataDO;
+import com.bootdo.datas.domain.GyDataExcelDO;
+import com.bootdo.datas.domain.GyDataUnitDO;
+import com.bootdo.datas.dto.GyDataImportDTO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface GyDataUnitDao {
+
+
+    int save(GyDataUnitDO data);
+
+    void batchSave(List<GyDataUnitDO> list);
+
+    GyDataUnitDO getById(Long id);
+
+    GyDataUnitDO getByDataId(Long dataId);
+
+    List<GyDataUnitDO> getByDataIds(List<Long> dataIds);
+
+    int getCountByDataIds(List<Long> dataIds);
+
+    int deleteByDataId(Long dataId);
+
+    int batchDeleteByDataId(Long[] dataIds);
+}

+ 278 - 0
src/main/java/com/bootdo/datas/domain/GyDataUnitDO.java

@@ -0,0 +1,278 @@
+package com.bootdo.datas.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class GyDataUnitDO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * 数据id(gy_data表)
+     */
+    private Long dataId;
+
+    /**
+     * 数据处理者名称
+     */
+    private String reporterUnit;
+
+    /**
+     * 统一社会信用代码
+     */
+    private String creditCode;
+
+    /**
+     * 数据处理者性质
+     */
+    private String unitCharacter;
+
+    /**
+     * 所属行业-一级类别
+     */
+    private String industryTypeOne;
+
+    /**
+     * 所属行业-二级类别
+     */
+    private String industryTypeTwo;
+
+    /**
+     * 所属地区(省)
+     */
+    private String unitProvince;
+
+    /**
+     * 所属地区(市)
+     */
+    private String unitCity;
+
+    /**
+     * 所属监管部门
+     */
+    private  String supervisoryOrg;
+
+    /**
+     * 组织负责人
+     */
+    private String unitMan;
+
+    /**
+     * 组织负责人职务
+     */
+    private String unitOffice;
+
+    /**
+     * 数据安全联系人
+     */
+    private String dataSecurityMan;
+
+    /**
+     * 数据安全负责人职务
+     */
+    private String dataSecurityOffice;
+
+    /**
+     * 数据安全负责人联系方式
+     */
+    private String dataSecurityWay;
+
+    /**
+     * 创建人
+     */
+    private Long createUserId;
+
+    /**
+     * 修改人
+     */
+    private Long updateUserId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getDataId() {
+        return dataId;
+    }
+
+    public void setDataId(Long dataId) {
+        this.dataId = dataId;
+    }
+
+    public String getReporterUnit() {
+        return reporterUnit;
+    }
+
+    public void setReporterUnit(String reporterUnit) {
+        this.reporterUnit = reporterUnit;
+    }
+
+    public String getCreditCode() {
+        return creditCode;
+    }
+
+    public void setCreditCode(String creditCode) {
+        this.creditCode = creditCode;
+    }
+
+    public String getUnitCharacter() {
+        return unitCharacter;
+    }
+
+    public void setUnitCharacter(String unitCharacter) {
+        this.unitCharacter = unitCharacter;
+    }
+
+    public String getIndustryTypeOne() {
+        return industryTypeOne;
+    }
+
+    public void setIndustryTypeOne(String industryTypeOne) {
+        this.industryTypeOne = industryTypeOne;
+    }
+
+    public String getIndustryTypeTwo() {
+        return industryTypeTwo;
+    }
+
+    public void setIndustryTypeTwo(String industryTypeTwo) {
+        this.industryTypeTwo = industryTypeTwo;
+    }
+
+    public String getUnitProvince() {
+        return unitProvince;
+    }
+
+    public void setUnitProvince(String unitProvince) {
+        this.unitProvince = unitProvince;
+    }
+
+    public String getUnitCity() {
+        return unitCity;
+    }
+
+    public void setUnitCity(String unitCity) {
+        this.unitCity = unitCity;
+    }
+
+    public String getSupervisoryOrg() {
+        return supervisoryOrg;
+    }
+
+    public void setSupervisoryOrg(String supervisoryOrg) {
+        this.supervisoryOrg = supervisoryOrg;
+    }
+
+    public String getUnitMan() {
+        return unitMan;
+    }
+
+    public void setUnitMan(String unitMan) {
+        this.unitMan = unitMan;
+    }
+
+    public String getUnitOffice() {
+        return unitOffice;
+    }
+
+    public void setUnitOffice(String unitOffice) {
+        this.unitOffice = unitOffice;
+    }
+
+    public String getDataSecurityMan() {
+        return dataSecurityMan;
+    }
+
+    public void setDataSecurityMan(String dataSecurityMan) {
+        this.dataSecurityMan = dataSecurityMan;
+    }
+
+    public String getDataSecurityOffice() {
+        return dataSecurityOffice;
+    }
+
+    public void setDataSecurityOffice(String dataSecurityOffice) {
+        this.dataSecurityOffice = dataSecurityOffice;
+    }
+
+    public String getDataSecurityWay() {
+        return dataSecurityWay;
+    }
+
+    public void setDataSecurityWay(String dataSecurityWay) {
+        this.dataSecurityWay = dataSecurityWay;
+    }
+
+    public Long getCreateUserId() {
+        return createUserId;
+    }
+
+    public void setCreateUserId(Long createUserId) {
+        this.createUserId = createUserId;
+    }
+
+    public Long getUpdateUserId() {
+        return updateUserId;
+    }
+
+    public void setUpdateUserId(Long updateUserId) {
+        this.updateUserId = updateUserId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String toString() {
+        return "GyDataUnitDO{" +
+                "id=" + id +
+                ", dataId=" + dataId +
+                ", reporterUnit='" + reporterUnit + '\'' +
+                ", creditCode='" + creditCode + '\'' +
+                ", unitCharacter='" + unitCharacter + '\'' +
+                ", industryTypeOne='" + industryTypeOne + '\'' +
+                ", industryTypeTwo='" + industryTypeTwo + '\'' +
+                ", unitProvince='" + unitProvince + '\'' +
+                ", unitCity='" + unitCity + '\'' +
+                ", supervisoryOrg='" + supervisoryOrg + '\'' +
+                ", unitMan='" + unitMan + '\'' +
+                ", unitOffice='" + unitOffice + '\'' +
+                ", dataSecurityMan='" + dataSecurityMan + '\'' +
+                ", dataSecurityOffice='" + dataSecurityOffice + '\'' +
+                ", dataSecurityWay='" + dataSecurityWay + '\'' +
+                ", createUserId=" + createUserId +
+                ", updateUserId=" + updateUserId +
+                ", createTime=" + createTime +
+                ", updateTime=" + updateTime +
+                '}';
+    }
+}

+ 68 - 0
src/main/java/com/bootdo/datas/service/GyDataUnitService.java

@@ -0,0 +1,68 @@
+package com.bootdo.datas.service;
+
+import com.bootdo.datas.domain.*;
+import com.bootdo.datas.dto.GyDataImportDTO;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public interface GyDataUnitService {
+
+    /***
+     * 保存
+     * @param gyDataUnitDO
+     * @return int
+     */
+    int save(GyDataUnitDO gyDataUnitDO);
+
+    /***
+     * 批量保存
+     * @param list
+     */
+    void batchSave(List<GyDataUnitDO> list);
+
+    /***
+     * 通过id查询数据绑定的企业信息
+     * @param id
+     * @return GyDataUnitDO
+     */
+    GyDataUnitDO getById(Long id);
+
+    /***
+     * 通过dataId查询数据绑定的企业信息
+     * @param dataId
+     * @return GyDataUnitDO
+     */
+    GyDataUnitDO getByDataId(Long dataId);
+
+    /***
+     * 通过集合dataIds查询数据绑定的企业信息集合
+     * @param dataIds
+     * @return List<GyDataUnitDO>
+     */
+    List<GyDataUnitDO> getByDataIds(List<Long> dataIds);
+
+    /***
+     * 通过集合dataIds查询数据绑定的企业信息的数量
+     * @param dataIds
+     * @return int
+     */
+    int getCountByDataIds(List<Long> dataIds);
+
+    /***
+     * 通过dataId删除数据绑定的企业信息
+     * @param dataId
+     * @return int
+     */
+    int deleteByDataId(Long dataId);
+
+    /***
+     * 通过批量dataIds删除数据绑定的企业信息
+     * @param dataIds
+     * @return int
+     */
+    int batchDeleteByDataId(Long[] dataIds);
+}

+ 53 - 13
src/main/java/com/bootdo/datas/service/impl/GyDataServiceImpl.java

@@ -9,10 +9,7 @@ import com.bootdo.datas.dao.GyUnitDao;
 import com.bootdo.datas.domain.*;
 import com.bootdo.datas.dto.ExamineLogDTO;
 import com.bootdo.datas.dto.GyDataImportDTO;
-import com.bootdo.datas.service.ExamineLogService;
-import com.bootdo.datas.service.GyDataService;
-import com.bootdo.datas.service.MessageHuNanService;
-import com.bootdo.datas.service.MessageService;
+import com.bootdo.datas.service.*;
 import com.bootdo.datas.tools.ExcelUtils;
 import com.bootdo.datas.tools.gm.FileCryptTool;
 import com.bootdo.system.domain.RoleDO;
@@ -35,6 +32,8 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -65,6 +64,8 @@ public class GyDataServiceImpl implements GyDataService {
     private RoleService roleService;
     @Autowired
     private MessageHuNanService messageHuNanService;
+    @Autowired
+    private GyDataUnitService gyDataUnitService;
 
     private static Logger log = LoggerFactory.getLogger(GyDataServiceImpl.class);
 
@@ -99,8 +100,45 @@ public class GyDataServiceImpl implements GyDataService {
             }
 
         }
+        return this.dealDataWithCompany(gyDataDao.list(map));
+    }
 
-        return gyDataDao.list(map);
+    /***
+     * 处理查询出来的数据绑定企业信息
+     * @param list
+     * @return
+     */
+    List<GyDataImportDTO> dealDataWithCompany(List<GyDataImportDTO> list){
+        // 使用Stream提取所有dataId
+        List<Long> dataIds = list.stream()
+                .map(GyDataImportDTO::getId)
+                .collect(Collectors.toList());
+
+        // 一次性获取所有关联的单位信息并转换为Map以提高查询效率
+        Map<Long, GyDataUnitDO> unitMap = gyDataUnitService.getByDataIds(dataIds).stream()
+                .collect(Collectors.toMap(GyDataUnitDO::getDataId, Function.identity()));
+
+        // 遍历DTO列表,设置单位信息
+        list.forEach(dto -> {
+            GyDataUnitDO unitDO = unitMap.get(dto.getId());
+            if (unitDO != null) {
+                dto.setReporterUnit(unitDO.getReporterUnit());
+                dto.setCreditCode(unitDO.getCreditCode());
+                dto.setSupervisoryOrg(unitDO.getSupervisoryOrg());
+                dto.setUnitCharacter(unitDO.getUnitCharacter());
+                dto.setIndustryTypeOne(unitDO.getIndustryTypeOne());
+                dto.setIndustryTypeTwo(unitDO.getIndustryTypeTwo());
+                dto.setUnitProvince(unitDO.getUnitProvince());
+                dto.setUnitCity(unitDO.getUnitCity());
+                dto.setUnitMan(unitDO.getUnitMan());
+                dto.setUnitOffice(unitDO.getUnitOffice());
+                dto.setDataSecurityMan(unitDO.getDataSecurityMan());
+                dto.setDataSecurityOffice(unitDO.getDataSecurityOffice());
+                dto.setDataSecurityWay(unitDO.getDataSecurityWay());
+                dto.setUpdateTime(unitDO.getUpdateTime());
+            }
+        });
+        return list;
     }
 
     @Override
@@ -293,19 +331,19 @@ public class GyDataServiceImpl implements GyDataService {
             }
             log.info("===========4============="+i);
             //所属省份
-            String dataProvince = row.getCell(18).getStringCellValue();
-            String dataCity = row.getCell(19).getStringCellValue();
+            String dataProvince = this.getCellValue_String(row,18);
+            String dataCity = this.getCellValue_String(row,19);
 
             // 当非管理员导入的数据为非本省的数据的时候  跳过当前数据  并记录
             if (StringUtils.isEmpty(dataProvince) || (!StringUtils.isEmpty(userProvince)) && !dataProvince.equals(userProvince)) {
-                log.info("当前用户省份: {}, 当前数据省份: {}, 数据名称: {}", userProvince, dataProvince, row.getCell(1).getStringCellValue());
+                log.info("当前用户省份: {}, 当前数据省份: {}, 数据名称: {}", userProvince, dataProvince, this.getCellValue_String(row,1));
                 otherProvince++;
                 continue;
             }
             log.info("===========5============="+i);
 
             if (StringUtils.isEmpty(dataCity) || (!StringUtils.isEmpty(userCity)) && !dataCity.equals(userCity)) {
-                log.info("当前用户地市: {}, 当前数据地市: {}, 数据名称: {}", userCity, dataCity, row.getCell(1).getStringCellValue());
+                log.info("当前用户地市: {}, 当前数据地市: {}, 数据名称: {}", userCity, dataCity, this.getCellValue_String(row,1));
                 otherCity++;
                 continue;
             }
@@ -351,7 +389,7 @@ public class GyDataServiceImpl implements GyDataService {
 
             log.info("===========9============="+i);
             //无数据导出
-            if ("/".equals(this.getCellValue_String(row,1)) && this.getCellValue_String(row,16) !=null && !"/".equals(row.getCell(16).getStringCellValue())) {
+            if ("/".equals(this.getCellValue_String(row,1)) && this.getCellValue_String(row,16) !=null && !"/".equals(this.getCellValue_String(row,16))) {
 
                 log.info("===========10============="+i);
                 int count = gyUnitDao.getGyUnit(this.createGyUnitDO(gyUnitDO,row));
@@ -780,6 +818,7 @@ public class GyDataServiceImpl implements GyDataService {
         return gyDataDao.countRecover(map);
     }
 
+    @Transactional
     @Override
     public int recover(Long id) {
         GyDataImportDTO gyDataImportDTO = gyDataDao.getRecoverData(id);
@@ -811,8 +850,9 @@ public class GyDataServiceImpl implements GyDataService {
                 }
             }
         }
-
-        return gyDataDao.recover(id, auditStage);
+        int result = gyDataDao.recover(id, auditStage);
+        gyDataUnitService.deleteByDataId(id);
+        return result;
     }
 
     @Override
@@ -871,7 +911,7 @@ public class GyDataServiceImpl implements GyDataService {
             }
 
         }
-        return gyDataDao.list(map);
+        return this.dealDataWithCompany(gyDataDao.list(map));
     }
 
     @Override

+ 76 - 0
src/main/java/com/bootdo/datas/service/impl/GyDataUnitServiceImpl.java

@@ -0,0 +1,76 @@
+package com.bootdo.datas.service.impl;
+
+import com.bootdo.datas.dao.GyDataUnitDao;
+import com.bootdo.datas.dao.GyUnitDao;
+import com.bootdo.datas.domain.GyDataUnitDO;
+import com.bootdo.datas.service.GyDataUnitService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collections;
+import java.util.List;
+
+@Service
+@Transactional
+public class GyDataUnitServiceImpl implements GyDataUnitService {
+
+    private static Logger log = LoggerFactory.getLogger(GyDataUnitServiceImpl.class);
+
+    @Autowired
+    private GyDataUnitDao gyDataUnitDao;
+
+
+    @Override
+    public int save(GyDataUnitDO gyDataUnitDO) {
+        log.info("----save-----{}",gyDataUnitDO);
+        return gyDataUnitDao.save(gyDataUnitDO);
+    }
+
+    @Override
+    public void batchSave(List<GyDataUnitDO> list) {
+        log.info("-----batchSave----{}",list);
+        gyDataUnitDao.batchSave(list);
+    }
+
+    @Override
+    public GyDataUnitDO getById(Long id) {
+        log.info("-----getById----{}",id);
+        return gyDataUnitDao.getById(id);
+    }
+
+    @Override
+    public GyDataUnitDO getByDataId(Long dataId) {
+        log.info("-----getByDataId----{}",dataId);
+        return gyDataUnitDao.getByDataId(dataId);
+    }
+
+    @Override
+    public List<GyDataUnitDO> getByDataIds(List<Long> dataIds) {
+        return gyDataUnitDao.getByDataIds(dataIds);
+    }
+
+
+    @Override
+    public int getCountByDataIds(List<Long> dataIds) {
+        return gyDataUnitDao.getCountByDataIds(dataIds);
+    }
+
+
+    @Override
+    public int deleteByDataId(Long dataId) {
+        log.info("-----deleteByDataId----{}",dataId);
+        return gyDataUnitDao.deleteByDataId(dataId);
+    }
+
+    @Override
+    public int batchDeleteByDataId(Long[] dataIds) {
+        log.info("-----batchDeleteByDataId----{}",String.join(",",
+                java.util.Arrays.stream(dataIds)
+                        .map(Object::toString)
+                        .toArray(String[]::new)));
+        return gyDataUnitDao.batchDeleteByDataId(dataIds);
+    }
+}

+ 170 - 0
src/main/resources/mybatis/datas/GyDataUnitMapper.xml

@@ -0,0 +1,170 @@
+<?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.bootdo.datas.dao.GyDataUnitDao">
+
+    <sql id="selectSql">
+        a.ID as id,
+        a.DATA_ID as dataId,
+        a.REPORTER_UNIT as reporterUnit,
+        a.CREDIT_CODE as creditCode,
+        a.SUPERVISORY_ORG as supervisoryOrg,
+        a.UNIT_CHARACTER as unitCharacter,
+        a.INDUSTRY_TYPE_ONE as industryTypeOne,
+        a.INDUSTRY_TYPE_TWO as industryTypeTwo,
+        a.UNIT_PROVINCE as unitProvince,
+        a.UNIT_CITY as unitCity,
+        a.UNIT_MAN as unitMan,
+        a.UNIT_OFFICE as unitOffice,
+        a.DATA_SECURITY_MAN as dataSecurityMan,
+        a.DATA_SECURITY_OFFICE as dataSecurityOffice,
+        a.DATA_SECURITY_WAY as dataSecurityWay,
+        a.CREATE_USER_ID as createUserId,
+        a.UPDATE_USER_ID as updateUserId,
+        a.CREATE_TIME as createTime,
+        a.UPDATE_TIME as updateTime
+    </sql>
+
+    <insert id="save" parameterType="com.bootdo.datas.domain.GyDataUnitDO" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
+        insert into gy_data_unit
+        (
+            DATA_ID,
+            REPORTER_UNIT,
+            CREDIT_CODE,
+            SUPERVISORY_ORG,
+            UNIT_CHARACTER,
+            INDUSTRY_TYPE_ONE,
+            INDUSTRY_TYPE_TWO,
+            UNIT_PROVINCE,
+            UNIT_CITY,
+            UNIT_MAN,
+            UNIT_OFFICE,
+            DATA_SECURITY_MAN,
+            DATA_SECURITY_OFFICE,
+            DATA_SECURITY_WAY,
+            CREATE_USER_ID,
+            UPDATE_USER_ID,
+            CREATE_TIME,
+            UPDATE_TIME
+        )
+        values (
+            #{dataId},
+            #{reporterUnit},
+            #{creditCode},
+            #{supervisoryOrg},
+            #{unitCharacter},
+            #{industryTypeOne},
+            #{industryTypeTwo},
+            #{unitProvince},
+            #{unitCity},
+            #{unitMan},
+            #{unitOffice},
+            #{dataSecurityMan},
+            #{dataSecurityOffice},
+            #{dataSecurityWay},
+            #{createUserId},
+            #{updateUserId},
+            #{createTime},
+            #{updateTime}
+               )
+    </insert>
+
+    <insert id="batchSave">
+        insert into gy_data_unit
+        (
+            DATA_ID,
+            REPORTER_UNIT,
+            CREDIT_CODE,
+            SUPERVISORY_ORG,
+            UNIT_CHARACTER,
+            INDUSTRY_TYPE_ONE,
+            INDUSTRY_TYPE_TWO,
+            UNIT_PROVINCE,
+            UNIT_CITY,
+            UNIT_MAN,
+            UNIT_OFFICE,
+            DATA_SECURITY_MAN,
+            DATA_SECURITY_OFFICE,
+            DATA_SECURITY_WAY,
+            CREATE_USER_ID,
+            UPDATE_USER_ID,
+            CREATE_TIME,
+            UPDATE_TIME
+        )
+        values
+        <foreach item="item" index="index" collection="list"
+                 separator=",">
+            (
+                #{item.dataId},
+                #{item.reporterUnit},
+                #{item.creditCode},
+                #{item.supervisoryOrg},
+                #{item.unitCharacter},
+                #{item.industryTypeOne},
+                #{item.industryTypeTwo},
+                #{item.unitProvince},
+                #{item.unitCity},
+                #{item.unitMan},
+                #{item.unitOffice},
+                #{item.dataSecurityMan},
+                #{item.dataSecurityOffice},
+                #{item.dataSecurityWay},
+                #{item.createUserId},
+                #{item.updateUserId},
+                #{item.createTime},
+                #{item.updateTime}
+            )
+        </foreach>
+    </insert>
+
+    <select id="getById" resultType="com.bootdo.datas.domain.GyDataUnitDO" parameterType="java.lang.Long">
+        select
+            <include refid="selectSql"/>
+        FROM gy_data_unit a
+        where a.ID = #{value}
+    </select>
+
+    <select id="getByDataId" resultType="com.bootdo.datas.domain.GyDataUnitDO" parameterType="java.lang.Long">
+        select
+        <include refid="selectSql"/>
+        FROM gy_data_unit a
+        where a.DATA_ID = #{value}
+    </select>
+
+    <select id="getCountByDataIds" resultType="java.lang.Integer">
+        select count(*)
+        from gy_data_unit a
+        where a.DATA_ID in
+            <foreach item="dataId" collection="list" open="(" separator=","
+                     close=")">
+                #{dataId}
+            </foreach>
+    </select>
+    <select id="getByDataIds" resultType="com.bootdo.datas.domain.GyDataUnitDO">
+        select
+        <include refid="selectSql"/>
+        FROM gy_data_unit a
+        where a.DATA_ID in
+        <foreach item="dataId" collection="list" open="(" separator=","
+                 close=")">
+            #{dataId}
+        </foreach>
+    </select>
+
+    <delete id="deleteByDataId" parameterType="java.lang.Long">
+        delete
+        from gy_data_unit
+        where DATA_ID = #{value}
+    </delete>
+
+    <delete id="batchDeleteByDataId">
+        delete
+        from gy_data_unit
+        where DATA_ID in
+            <foreach item="dataId" collection="list" open="(" separator=","
+                     close=")">
+                #{dataId}
+            </foreach>
+    </delete>
+
+</mapper>