Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 2 năm trước cách đây
mục cha
commit
152165bbe4
19 tập tin đã thay đổi với 198 bổ sung83 xóa
  1. 7 1
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/UserpayInfo.java
  2. 1 1
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/UserpayInfoVO.java
  3. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelTab.java
  4. 4 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExcelTabVO.java
  5. 2 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateQueryValueVO.java
  6. 2 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeQueryValueVO.java
  7. 3 1
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java
  8. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/controller/CorporationInfoController.java
  9. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/UserpayInfoController.java
  10. 10 11
      blade-service/blade-control/src/main/java/org/springblade/control/excel/UserpayExcel.java
  11. 2 1
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/UserpayInfoMapper.java
  12. 11 6
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/UserpayInfoMapper.xml
  13. 24 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  14. 5 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java
  15. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.java
  16. 15 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml
  17. 20 21
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  18. 81 27
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  19. 3 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 7 - 1
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/UserpayInfo.java

@@ -46,6 +46,12 @@ public class UserpayInfo extends BaseEntity {
     @ApiModelProperty(value = "用户id主键")
     private Long userId;
 
+    /**
+     * 租户ID
+     */
+    @ApiModelProperty(value = "租户ID")
+    private String tenantId;
+
     /**
      * 用户id主键
      */
@@ -161,6 +167,6 @@ public class UserpayInfo extends BaseEntity {
      * 描述
      */
     @ApiModelProperty(value = "描述")
-    private String desc;
+    private String remark;
 
 }

+ 1 - 1
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/UserpayInfoVO.java

@@ -33,5 +33,5 @@ public class UserpayInfoVO extends UserpayInfo {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "用户姓名")
-    private String name;
+    private String month;
 }

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelTab.java

@@ -125,4 +125,7 @@ public class ExcelTab extends BaseEntity {
     @ApiModelProperty(value = "实体表ID")
     private String tabId;
 
+    @ApiModelProperty(value = "清表模板类型")
+    private Integer tableTemplateType;
+
 }

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ExcelTabVO.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.manager.entity.ExcelTab;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -31,4 +32,7 @@ import lombok.EqualsAndHashCode;
 public class ExcelTabVO extends ExcelTab {
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty(value = "清表模板类型名称")
+    private String tableTemplateTypeName;
+
 }

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreePrivateQueryValueVO.java

@@ -8,6 +8,8 @@ import java.util.List;
 @Data
 public class WbsTreePrivateQueryValueVO extends WbsTreePrivate {
 
+    private String title;
+
     private List<WbsTreePrivateQueryValueVO> children;
 
     private Boolean hasChildren;

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeQueryValueVO.java

@@ -9,6 +9,8 @@ import java.util.List;
 @Data
 public class WbsTreeQueryValueVO extends WbsTree {
 
+    private String title;
+
     private List<WbsTreeQueryValueVO> children;
 
     private Boolean hasChildren;

+ 3 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -180,7 +180,9 @@ public class TaskController extends BladeController {
         R<SmsResponse> result = this.newSmsClient.sendMessage("test_code", JsonUtil.toJson(params), phone);
         if (result.getData().isSuccess()) {
             //记录当前验证码
-            DefaultConfig config = this.defaultConfigService.getOne(Wrappers.<DefaultConfig>lambdaQuery().eq(DefaultConfig::getCreateUser, AuthUtil.getUserId()));
+            DefaultConfig config = this.defaultConfigService.getOne(
+                    Wrappers.<DefaultConfig>lambdaQuery().eq(DefaultConfig::getCreateUser, AuthUtil.getUserId())
+                                             .isNotNull(DefaultConfig::getSmsCode));
             if (config != null) {
                 //修改
                 config.setSmsCode(code);

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/controller/CorporationInfoController.java

@@ -164,7 +164,7 @@ public class CorporationInfoController extends BladeController {
 
         } else if (file.getOriginalFilename().contains("pdf")) {
             //获取PDF文件
-            BladeFile bladeFile = this.newIOSSClient.updateFile(file.getBytes(), file.getOriginalFilename());
+            BladeFile bladeFile = this.newIOSSClient.uploadFileByInputStream(file);
             BeanUtils.copyProperties(bladeFile, newBladeFile);
             newBladeFile.setPdfUrl(bladeFile.getLink());
         }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/UserpayInfoController.java

@@ -28,6 +28,7 @@ import org.springblade.control.excel.UserpayExcel;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.DateUtil;
@@ -150,11 +151,13 @@ public class UserpayInfoController extends BladeController {
         ZoneId zoneId = ZoneId.systemDefault();
         ZonedDateTime zonedDateTime = date.toInstant().atZone(zoneId);
         LocalDate localDate = zonedDateTime.toLocalDate();
+        String tenantId = AuthUtil.getTenantId();
         if(list!=null && list.size()>=1){
             List<UserpayInfo> vos = list.stream().map(f -> {
                 UserpayInfo tag = new UserpayInfo();
                 BeanUtil.copy(f,tag);
                 tag.setCostTime(localDate);
+                tag.setTenantId(tenantId);
                 return tag;
             }).collect(Collectors.toList());
             userpayInfoService.saveBatch(vos);

+ 10 - 11
blade-service/blade-control/src/main/java/org/springblade/control/excel/UserpayExcel.java

@@ -41,11 +41,6 @@ public class UserpayExcel{
     @ExcelProperty("姓名")
     private String name;
 
-/*    @ColumnWidth(15)
-    @ExcelProperty("薪酬时间")
-    private String costTime;*/
-
-/*
     @ColumnWidth(15)
     @ExcelProperty(value = "应出勤天数")
     private Integer yaAllDays;
@@ -98,6 +93,10 @@ public class UserpayExcel{
     @ExcelProperty(value = "考勤扣款")
     private BigDecimal attendDuction;
 
+    @ColumnWidth(15)
+    @ExcelProperty(value = "事假扣款")
+    private BigDecimal absDuction;
+
     @ColumnWidth(15)
     @ExcelProperty(value = "其他扣款")
     private BigDecimal otherDuction;
@@ -106,20 +105,20 @@ public class UserpayExcel{
     @ExcelProperty(value = "应发工资")
     private BigDecimal grossPay;
 
-    @ColumnWidth(15)
-    @ExcelProperty(value = "代缴个税")
-    private BigDecimal personalTax;
-
     @ColumnWidth(15)
     @ExcelProperty(value = "代缴社保")
     private BigDecimal socialSec;
 
+    @ColumnWidth(15)
+    @ExcelProperty(value = "代缴个税")
+    private BigDecimal personalTax;
+
     @ColumnWidth(15)
     @ExcelProperty(value = "实发工资")
     private BigDecimal netSalary;
 
     @ColumnWidth(15)
-    @ExcelProperty(value = "描述")
-    private String desc;*/
+    @ExcelProperty(value = "备注")
+    private String remark;
 
 }

+ 2 - 1
blade-service/blade-control/src/main/java/org/springblade/control/mapper/UserpayInfoMapper.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.control.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.control.entity.UserpayInfo;
 import org.springblade.control.vo.UserpayInfoVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -38,7 +39,7 @@ public interface UserpayInfoMapper extends BaseMapper<UserpayInfo> {
      * @param userpayInfo
      * @return
      */
-    List<UserpayInfoVO> selectUserpayInfoPage(IPage page, UserpayInfoVO userpayInfo);
+    List<UserpayInfoVO> selectUserpayInfoPage(IPage page,@Param("vo") UserpayInfoVO userpayInfo);
 
     boolean delUserPayInoByDate(String date);
 

+ 11 - 6
blade-service/blade-control/src/main/java/org/springblade/control/mapper/UserpayInfoMapper.xml

@@ -26,7 +26,7 @@
         <result column="personal_tax" property="personalTax"/>
         <result column="social_sec" property="socialSec"/>
         <result column="net_salary" property="netSalary"/>
-        <result column="desc" property="desc"/>
+        <result column="remark" property="remark"/>
         <result column="name" property="name"/>
     </resultMap>
 
@@ -34,10 +34,10 @@
         <result column="id" property="id"/>
         <result column="user_id" property="userId"/>
         <result column="cost_time" property="costTime"/>
-        <result column="y_all_days" property="yaAllDays"/>
-        <result column="s_all_days" property="saAllDays"/>
+        <result column="ya_all_days" property="yaAllDays"/>
+        <result column="sa_all_days" property="saAllDays"/>
         <result column="year_days" property="yearDays"/>
-        <result column="c_leave_days" property="caLeaveDays"/>
+        <result column="ca_leave_days" property="caLeaveDays"/>
         <result column="sick_leave_days" property="sickLeaveDays"/>
         <result column="absence_days" property="absenceDays"/>
         <result column="basic_salary" property="basicSalary"/>
@@ -53,16 +53,21 @@
         <result column="personal_tax" property="personalTax"/>
         <result column="social_sec" property="socialSec"/>
         <result column="net_salary" property="netSalary"/>
-        <result column="desc" property="desc"/>
+        <result column="remark" property="remark"/>
         <result column="name" property="name"/>
     </resultMap>
 
 
     <select id="selectUserpayInfoPage" resultMap="userpayInfoResultVOMap">
         select *
-             /*,(SELECT name from blade_user b where a.user_id = b.id) as name */
         from c_user_pay_info a
         where a.is_deleted = 0
+        <if test="vo.name != null and vo.name != ''">
+            and a.name = #{vo.name}
+        </if>
+        <if test="vo.month != null and vo.month != ''">
+            and DATE_FORMAT(a.cost_time ,'%Y-%m') = #{vo.month}
+        </if>
     </select>
 
 

+ 24 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -613,8 +613,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "pkeyId", value = "pkeyId", required = true)
     })
     public R getExcelHtmlByBuss(Long pkeyId) throws Exception {
-        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
+
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
         if (wbsTreeContract == null) {
@@ -3147,4 +3146,27 @@ public class ExcelTabController extends BladeController {
         return R.data("成功");
     }
 
+    @GetMapping("/rm-tabdata-info")
+    @ApiOperationSupport(order = 38)
+    @ApiOperation(value = "清楚表单数据信息", notes = "清楚表单数据信息")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "pkeyId", value = "pkeyId", required = true)
+    })
+    public R rmTabDataInfo(Long pkeyId) {
+        WbsTreeContract wbsInfo = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                .eq(WbsTreeContract::getPKeyId, pkeyId));
+
+        if(wbsInfo!=null){
+            String tabName = wbsInfo.getInitTableName();
+            if(StringUtils.isNotEmpty(tabName)){
+                String delSql = "delete from "+tabName+" where p_key_id = " + pkeyId;
+                jdbcTemplate.execute(delSql);
+            }else{
+                return   R.fail("获取InitTableName失败!");
+            }
+        }else{
+            return   R.fail("获取数据失败!");
+        }
+        return R.data("成功!");
+    }
 }

+ 5 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -332,7 +332,11 @@ public class FormulaController {
                 xindex = 1;
                 yindex = 0;
             }
-            Map<Integer, List<String>> collect = list.stream().filter(s -> s.indexOf("_")>=0).collect(Collectors.groupingBy(s -> Integer.parseInt(s.split("_")[yindex])));
+            Map<Integer, List<String>> resu = list.stream().filter(s -> s.indexOf("_")>=0).collect(Collectors.groupingBy(s -> Integer.parseInt(s.split("_")[yindex])));
+
+            Map<Integer, List<String>> collect = new LinkedHashMap<>();
+            resu.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> collect.put(x.getKey(), x.getValue()));
+
             int j=0;
             for(Integer key: collect.keySet()){
                 List<String> datakey = collect.get(key);

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.java

@@ -74,4 +74,5 @@ public interface ExcelTabMapper extends BaseMapper<ExcelTab> {
     @Select("select self_id from u_trial_self_quality_project where quality_node_id = #{nodeId}")
     List<String> queryTrialRecordId(String nodeId);
 
+    ExcelTab getWaterByTableId(@Param("id") Long excelId);
 }

+ 15 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml

@@ -47,16 +47,7 @@
         <result column="type" property="type"/>
     </resultMap>
 
-    <select id="selectExcelTabPage" resultMap="excelTabResultMap">
-        select x.id,x.create_time,x.name,
-        (SELECT count(1) from m_excel_tab a where FIND_IN_SET(x.id,a.alias) and a.is_deleted = 0 and a.file_type=3) as
-        tab_cout
-        from m_excel_tab x where is_deleted = 0 and parent_id =#{param2.parentId}
-        <if test="excelTab.name!=null and excelTab.name!=''">
-            AND x.name like concat(concat('%', #{excelTab.name}),'%')
-        </if>
 
-    </select>
 
     <select id="tabLazyTree" resultMap="treeNodeResultMap">
         SELECT
@@ -198,6 +189,21 @@
         </if>
         ORDER BY dept.create_time
     </select>
+    <select id="selectExcelTabPage" resultType="org.springblade.manager.vo.ExcelTabVO">
+        select x.id,x.create_time,x.name,x.table_template_type,
+        (SELECT bdb.dict_value from blade_dict_biz bdb WHERE code = 'table_template_type' AND dict_key = x.table_template_type) as tableTemplateTypeName,
+        (SELECT count(1) from m_excel_tab a where FIND_IN_SET(x.id,a.alias) and a.is_deleted = 0 and a.file_type=3) as
+        tab_cout
+        from m_excel_tab x where is_deleted = 0 and parent_id =#{param2.parentId}
+        <if test="excelTab.name!=null and excelTab.name!=''">
+            AND x.name like concat(concat('%', #{excelTab.name}),'%')
+        </if>
+    </select>
+    <select id="getWaterByTableId" resultType="org.springblade.manager.entity.ExcelTab">
+        select * from m_excel_tab met WHERE met.parent_id = 0 AND met.table_template_type = 2 AND met.is_deleted = 0
+                                        AND met.id =
+                                            (SELECT SUBSTRING_INDEX(alias,',',1)  from m_excel_tab WHERE  id = #{id})
+    </select>
 
     <delete id="removeBussTabInfoById">
         delete from m_wbs_tree_contract where p_key_id = #{pkeyid}

+ 20 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -270,8 +270,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         .fluentRemove("businessId")
                         .fluentRemove("sourceUrl")
                         .fluentRemove("pdfUrl")
-                        .fluentRemove("firstFileName")
-                        .fluentRemove("");
+                        .fluentRemove("firstFileName");
+                // 移除空的数据
+                dataInfo2.entrySet().removeIf(entry -> StringUtils.isEmpty(entry.getValue()+"") || (entry.getValue()+"").equals("null"));
+
                 // 计算数据
                 LinkedHashMap<String, List<String>> dataMap = dataInfo2.keySet().stream().filter(e -> e.contains("__")).collect(Collectors.groupingBy(e -> e.split("__")[0], LinkedHashMap<String, List<String>>::new, Collectors.toList()));
                 LinkedHashMap<String, String> dataMap2 = new LinkedHashMap<>();
@@ -1343,8 +1345,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         int mergedCellCnt = sheet.getNumMergedRegions();
         for (int i = 0; i < mergedCellCnt - 1; i++) {
             CellRangeAddress mergedCell = sheet.getMergedRegion(i);
-            int xx = mergedCell.getNumberOfCells();
-            if (xx == all) {
+            int xx = mergedCell.getNumberOfCells()+1;
+            if (xx <= all) {
                 int fisRow = mergedCell.getFirstRow();
                 int firsrCol = mergedCell.getFirstColumn();
 
@@ -1388,14 +1390,13 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             Element table = doc.select("table").first();
             Elements trs = table.select("tr");
             Elements cols = table.select("col");
-
+            if(pkeyId==1644218999703076895L){
+                System.out.println("");
+            }
             if (ObjectUtil.isNotEmpty(DataInfo)) {
                 for (String val : DataInfo.keySet()) {
                     Elements datas = doc.getElementsByAttributeValue("keyname", val);
                     Element data = null;
-                    if(val.equals("key_12__25_0")){
-                        System.out.println("1231");
-                    }
                     if (datas.size() >= 1) {
                         data = datas.get(0);
                     }
@@ -1490,12 +1491,15 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                             if(StringUtils.isNotEmpty(dataJson)){
                                                 JSONArray jsonArray = JSONArray.parseArray(dataJson);
                                                 List<Integer> idList = Func.toIntList(myData);
-                                                String dataInfo = jsonArray.getJSONObject(idList.get(0)-1).getString("name");
-                                                for(int inx=1 ; inx<idList.size() ; inx++){
-                                                   int valIndex = idList.get(inx)-1;
-                                                    dataInfo = dataInfo+","+jsonArray.getJSONObject(valIndex).getString("name");
+
+                                                if(idList!=null && idList.size()>=0 && idList.get(0)>=1){
+                                                    String dataInfo = jsonArray.getJSONObject(idList.get(0)-1).getString("name");
+                                                    for(int inx=1 ; inx<idList.size() ; inx++){
+                                                        int valIndex = idList.get(inx)-1;
+                                                        dataInfo = dataInfo+","+jsonArray.getJSONObject(valIndex).getString("name");
+                                                    }
+                                                    cell.setCellValue(dataInfo);
                                                 }
-                                                cell.setCellValue(dataInfo);
                                             }
                                         }
                                     }
@@ -1513,9 +1517,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     }
                 }
             }
-            if(pkeyId == 1688448159421825025L){
-                System.out.println("12321");
-            }
             // 组装电签设置
             QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
             queryWrapper.in("type", 2, 6);
@@ -1580,11 +1581,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
         //设置转换后的PDF页面高宽适应工作表的内容大小
         workbook2.getConverterSetting().setSheetFitToPage(true);
-        workbook2.getConverterSetting().setSheetFitToWidth(true);
         workbook2.saveToFile(pdfPath, FileFormat.PDF);
-      //  FileUtils.setExcelScaleToPdf(excelPath, pdfPath);
 
-/*        BladeFile bladeFile = newIOSSClient.uploadFile(pkeyId + ".pdf", pdfPath);
+        BladeFile bladeFile = newIOSSClient.uploadFile(pkeyId + ".pdf", pdfPath);
 
         //附件
         TableFile tableFile1 = tableFileService.getBaseMapper().selectList(Wrappers.<TableFile>query().lambda().eq(TableFile::getTabId, pkeyId + "").eq(TableFile::getType, 1)).stream().findAny().orElse(null);
@@ -1630,8 +1629,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if (exceInp != null) {
             IoUtil.closeQuietly(exceInp);
         }
-         return R.data(bladeFile2.getLink());*/
-        return R.data("");
+        return R.data(bladeFile2.getLink());
+
     }
 
     @Override

+ 81 - 27
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1332,6 +1332,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             ProjectInfo projectInfo = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery().select(ProjectInfo::getReferenceWbsTemplateType, ProjectInfo::getReferenceWbsTemplateTypeTrial).eq(ProjectInfo::getId, wbsTreePrivate.getProjectId()));
             //结果集
             List<WbsTreePrivate> insertDataPrivateList = new ArrayList<>();
+            List<WbsTreeContract> insertDataContractList = new ArrayList<>();
 
             if (("1").equals(wbsTreePrivate.getWbsType())) {
                 if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
@@ -1341,11 +1342,15 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     List<WbsTree> wbsTreesPublicTables;
                     if (wbsTree.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                                        .select(WbsTree::getId, WbsTree::getParentId)
+                                        .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
                                 /*.eq(WbsTree::getStatus,1)*/
                         );
                     } else {
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                                .select(WbsTree::getId, WbsTree::getParentId)
+                                .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
                                 /*.eq(WbsTree::getStatus,1)*/
                                 .like(WbsTree::getAncestors, wbsTree.getId())
                         );
@@ -1353,6 +1358,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                     //获取当前项目树下的元素表 节点
                     List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                                    .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestors)
                                     .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
                                     .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
                             /*.eq(WbsTreePrivate::getStatus, 1)*/
@@ -1376,17 +1382,16 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //构造
-                    for (WbsTree tree : addPublicTables) {
+                    List<WbsTree> resultDataList = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, addPublicTables.stream().map(WbsTree::getId).collect(Collectors.toList())));
+                    for (WbsTree tree : resultDataList) {
                         WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
                         if (dataPrivate != null) {
-                            Long idPrivate = SnowFlakeUtil.getId();
-                            dataPrivate.setPKeyId(idPrivate);
+                            dataPrivate.setPKeyId(SnowFlakeUtil.getId());
                             dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
                             dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
                             dataPrivate.setFullName(dataPrivate.getNodeName());
                             dataPrivate.setInitTableId(tree.getInitTableId().toString());
-                            //新增
-                            insertDataPrivateList.add(dataPrivate);
+                            insertDataPrivateList.add(dataPrivate);//新增
                         }
                     }
 
@@ -1400,18 +1405,23 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                        .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
+                                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
                                 /*.eq(WbsTreePrivate::getStatus, 1)*/
                         );
                     } else {
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
+                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
                                 /*.eq(WbsTreePrivate::getStatus, 1)*/
                                 .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId()));
                     }
 
                     //获取当前项目选择的节点下的所有元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                    .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestors)
+                                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
                             /*.eq(WbsTreePrivate::getStatus, 1)*/
                     );
 
@@ -1433,7 +1443,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //构造
-                    for (WbsTreePrivate tree : addPrivateTables) {
+                    List<WbsTreePrivate> resultDataList = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getPKeyId, addPrivateTables.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList())));
+                    for (WbsTreePrivate tree : resultDataList) {
                         WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
                         if (dataPrivate != null) {
                             dataPrivate.setPKeyId(SnowFlakeUtil.getId());
@@ -1454,18 +1465,24 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     List<WbsTree> wbsTreesPublicTables;
                     if (wbsTree.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery()
+                                        .select(WbsTree::getId, WbsTree::getParentId)
+                                        .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
                                 /*.eq(WbsTree::getStatus, 1)*/
                         );
                     } else {
                         wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, wbsTree.getWbsId())
+                                .select(WbsTree::getId, WbsTree::getParentId)
                                 .eq(WbsTree::getType, 2)
                                 /*.eq(WbsTree::getStatus, 1)*/
                                 .like(WbsTree::getAncestors, wbsTree.getId()));
                     }
 
                     //获取当前项目树下的元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                                    .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestors)
+                                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                                    .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
                             /*.eq(WbsTreePrivate::getStatus, 1)*/
                     );
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
@@ -1487,17 +1504,16 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //构造
-                    for (WbsTree tree : addPublicTables) {
+                    List<WbsTree> resultDataList = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, addPublicTables.stream().map(WbsTree::getId).collect(Collectors.toList())));
+                    for (WbsTree tree : resultDataList) {
                         WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
                         if (dataPrivate != null) {
-                            Long idPrivate = SnowFlakeUtil.getId();
-                            dataPrivate.setPKeyId(idPrivate);
+                            dataPrivate.setPKeyId(SnowFlakeUtil.getId());
                             dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
                             dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
                             dataPrivate.setFullName(dataPrivate.getNodeName());
                             dataPrivate.setInitTableId(ObjectUtils.isNotEmpty(tree.getInitTableId()) ? tree.getInitTableId().toString() : null);
-                            //新增
-                            insertDataPrivateList.add(dataPrivate);
+                            insertDataPrivateList.add(dataPrivate);//新增
                         }
                     }
 
@@ -1509,19 +1525,23 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                         //根节点
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                        .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
+                                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
                                 /*.eq(WbsTreePrivate::getStatus, 1)*/
                         );
                     } else {
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
+                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2)
                                 /*.eq(WbsTreePrivate::getStatus, 1)*/
                                 .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId()));
                     }
 
                     //获取当前项目选择的节点下的所有元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                    .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestors)
+                                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
                             /*.eq(WbsTreePrivate::getStatus, 1)*/
                     );
 
@@ -1543,7 +1563,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
                     //构造
-                    for (WbsTreePrivate tree : addPrivateTables) {
+                    List<WbsTreePrivate> resultDataList = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getPKeyId, addPrivateTables.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList())));
+                    for (WbsTreePrivate tree : resultDataList) {
                         WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
                         if (dataPrivate != null) {
                             dataPrivate.setPKeyId(SnowFlakeUtil.getId());
@@ -1551,20 +1572,53 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             dataPrivate.setWbsType(tree.getWbsType());
                             dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
                             dataPrivate.setInitTableId(ObjectUtils.isNotEmpty(tree.getInitTableId()) ? tree.getInitTableId() : null);
-
                             insertDataPrivateList.add(dataPrivate);
                         }
                     }
                 }
             }
 
-            //新增
+            //新增同步到项目
             if (!insertDataPrivateList.isEmpty()) {
                 List<List<WbsTreePrivate>> partition = Lists.partition(insertDataPrivateList, 1000);
                 for (List<WbsTreePrivate> wbsTreePrivates : partition) {
                     this.insertBatch(wbsTreePrivates, 1000);
                 }
             }
+
+            //同步到合同段(合同段中可能不存在原始节点(那么分配wsb处就同步不成功),但合同段存在新增、复制的节点,所以单独处理)
+            if (!insertDataPrivateList.isEmpty()) {
+                Map<Long, List<WbsTreePrivate>> tabParentNodesGroup = insertDataPrivateList.stream().collect(Collectors.groupingBy(WbsTreePrivate::getParentId));
+                Set<Long> longs = tabParentNodesGroup.keySet();
+                //获取当前项目下合同段新增或者复制的节点
+                List<WbsTreeContract> addOrCopyNodes = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                        .select(WbsTreeContract::getId, WbsTreeContract::getContractId, WbsTreeContract::getOldId)
+                        .in(WbsTreeContract::getOldId, longs).eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()));
+                List<WbsTreeContract> newAddOrCopyNodes = addOrCopyNodes.stream().distinct().collect(Collectors.toList());
+                for (WbsTreeContract addOrCopyNode : newAddOrCopyNodes) {
+                    //合同段节点的oldId=当前表的parentId,也就是说当前表的父级节点=合同段复制、新增出来节点
+                    List<WbsTreePrivate> tabs = tabParentNodesGroup.get(Long.parseLong(addOrCopyNode.getOldId()));
+                    if (tabs.size() > 0) {
+                        List<WbsTreeContract> wbsTreeContractList = BeanUtil.copyProperties(tabs, WbsTreeContract.class);
+                        for (WbsTreeContract wbsTreeContract : wbsTreeContractList) {
+                            wbsTreeContract.setIsDeleted(0);
+                            wbsTreeContract.setStatus(1);
+                            wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
+                            wbsTreeContract.setParentId(addOrCopyNode.getId());
+                            wbsTreeContract.setContractId(addOrCopyNode.getContractId());
+                        }
+                        insertDataContractList.addAll(wbsTreeContractList);
+                    }
+                }
+            }
+
+            //新增同步到合同段
+            if (!insertDataContractList.isEmpty()) {
+                List<List<WbsTreeContract>> partition = Lists.partition(insertDataContractList, 1000);
+                for (List<WbsTreeContract> wbsTreeContracts : partition) {
+                    wbsTreeContractService.insertBatch(wbsTreeContracts, 1000);
+                }
+            }
             return true;
         }
         return false;

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -483,6 +483,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         for (WbsTreeQueryValueVO wbsTree : listRoot) {
             List<WbsTreeQueryValueVO> childrenList = mapAll.get(wbsTree.getId());
             if (childrenList != null && childrenList.size() > 0) {
+                wbsTree.setTitle(wbsTree.getNodeName());
                 wbsTree.setChildren(childrenList);
                 wbsTree.setHasChildren(true);
                 this.buildWbsTreeByGetQueryValueByType(childrenList, mapAll);
@@ -507,8 +508,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     private void buildWbsTreePrivateByGetQueryValueByType(List<WbsTreePrivateQueryValueVO> listRoot, Map<Long, List<WbsTreePrivateQueryValueVO>> mapAll) {
         for (WbsTreePrivateQueryValueVO wbsTree : listRoot) {
             List<WbsTreePrivateQueryValueVO> childrenList = mapAll.get(wbsTree.getId());
-            wbsTree.setChildren(childrenList);
             if (childrenList != null && childrenList.size() > 0) {
+                wbsTree.setTitle(wbsTree.getNodeName());
+                wbsTree.setChildren(childrenList);
                 wbsTree.setHasChildren(true);
                 this.buildWbsTreePrivateByGetQueryValueByType(childrenList, mapAll);
             }