Browse Source

公有wbs元素导入导出

liuyc 3 years ago
parent
commit
4d30361335

+ 38 - 43
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsFormElement.java

@@ -1,16 +1,14 @@
 package org.springblade.manager.entity;
 
 
+
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.core.mp.base.BaseEntity;
 
-import javax.validation.constraints.NotEmpty;
 
 /**
  * wbs动态库表单元素实体类
@@ -22,49 +20,46 @@ import javax.validation.constraints.NotEmpty;
 @TableName("m_wbs_form_element")
 @EqualsAndHashCode(callSuper = true)
 public class WbsFormElement extends BaseEntity {
-	private static final long serialVersionUID = 1L;
-	/**
-	 *表单id
-	 */
-	@ApiModelProperty(value = "父id",required = false)
-	@JsonProperty(value = "fId")
-	private String fId;
+    private static final long serialVersionUID = 1L;
+    /**
+     * 表单id
+     */
+    @ApiModelProperty(value = "父id", required = false)
+    @JsonProperty(value = "fId")
+    private String fId;
 
-	/**
-	 * 元素名称
-	 */
-//	@NotEmpty(message = "元素名称不能为空")
-	@ApiModelProperty(value = "元素名称",required = true)
-	@JsonProperty(value = "eName")
-	private String eName;
+    /**
+     * 元素名称
+     */
+    @ApiModelProperty(value = "元素名称", required = true)
+    @JsonProperty(value = "eName")
+    private String eName;
 
-	/**
-	 * 元素类型
-	 */
-//	@NotEmpty(message = "元素类型不能为空")
-	@ApiModelProperty(value = "元素类型",required = true)
-	@JsonProperty(value = "eType")
-	private Integer eType;
+    /**
+     * 元素类型
+     */
+    @ApiModelProperty(value = "元素类型", required = true)
+    @JsonProperty(value = "eType")
+    private Integer eType;
 
-	/**
-	 * 元素长度
-	 */
-//	@NotEmpty(message = "元素长度不能为空")
-	@ApiModelProperty(value = "元素长度",required = true)
-	@JsonProperty(value = "eLength")
-	private Integer eLength;
+    /**
+     * 元素长度
+     */
+    @ApiModelProperty(value = "元素长度", required = true)
+    @JsonProperty(value = "eLength")
+    private Integer eLength;
 
-	/**
-	 * 允许偏差值
-	 */
-	@ApiModelProperty(value = "允许偏差值",required = true)
-	@JsonProperty(value = "eAllowDeviation")
-	private String eAllowDeviation;
+    /**
+     * 允许偏差值
+     */
+    @ApiModelProperty(value = "允许偏差值", required = true)
+    @JsonProperty(value = "eAllowDeviation")
+    private String eAllowDeviation;
 
-	/**
-	 * 检查方法
-	 */
-	@ApiModelProperty(value = "检查方法",required = true)
-	@JsonProperty(value = "eInspectionMethod")
-	private String eInspectionMethod;
+    /**
+     * 检查方法
+     */
+    @ApiModelProperty(value = "检查方法", required = true)
+    @JsonProperty(value = "eInspectionMethod")
+    private String eInspectionMethod;
 }

+ 31 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java

@@ -20,18 +20,26 @@ import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsFormElementDTO;
 import org.springblade.manager.entity.WbsFormElement;
+import org.springblade.manager.excel.WbsFormElementExcel;
+import org.springblade.manager.excel.WbsFormElementImporter;
+import org.springblade.manager.excel.WbsTreeExcel;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -95,5 +103,28 @@ public class WbsFormElementController extends BladeController {
         return R.status(wbsFormElementService.deleteLogic(Func.toLongList(ids)));
     }
 
+    /**
+     * 导出Wbs元素模板
+     */
+    @GetMapping("/export-template")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "导出WBS元素模板")
+    public void exportWbsTree(HttpServletResponse response) {
+        List<WbsFormElementExcel> list = new ArrayList<>();
+        ExcelUtil.export(response, "WBS元素模板", "WBS元素模板", list, WbsFormElementExcel.class);
+    }
+
+    /**
+     * 导入Wbs元素模板
+     */
+    @PostMapping("/import-wbsElement")
+    @ApiOperationSupport(order = 6)
+    @ApiOperation(value = "导入WBS元素", notes = "传入excel")
+    public R importRegion(MultipartFile file, Integer isCovered, String tableId) {
+        WbsFormElementImporter importer = new WbsFormElementImporter(wbsFormElementService, isCovered == 1, tableId);
+        ExcelUtil.save(file, importer, WbsFormElementExcel.class);
+        return R.success("操作成功");
+    }
+
 
 }

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

@@ -70,7 +70,7 @@ public class WbsTreePrivateController extends BladeController {
                                     @RequestParam("wbsId") String wbsId,
                                     @RequestParam("projectId") String projectId) {
         //删除表单
-        boolean restul = wbsTreePrivateService.removeTableByCondition(id,wbsId,projectId);
+        boolean restul = wbsTreePrivateService.removeTableByCondition(id, wbsId, projectId);
         if (restul) {
             return R.success("删除成功");
         }

+ 54 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsFormElementExcel.java

@@ -0,0 +1,54 @@
+package org.springblade.manager.excel;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * WbsFormElementExcel
+ *
+ * @author liuyc
+ */
+@Data
+@ColumnWidth(16)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class WbsFormElementExcel implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 元素名称
+     */
+    @ExcelProperty(value = "元素名称")
+    private String elementName;
+
+    /**
+     * 元素类型
+     */
+    @ExcelProperty(value = "数据类型")
+    private String elementType;
+
+    /**
+     * 元素长度
+     */
+    @ExcelProperty(value = "长度")
+    private String elementLength;
+
+    /**
+     * 允许偏差值
+     */
+    @ExcelProperty(value = "允许偏差值")
+    private String elementAllowDeviation;
+
+    /**
+     * 检查方法
+     */
+    @ExcelProperty(value = "检查方法和频率")
+    private String elementInspectionMethod;
+
+}

+ 25 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsFormElementImporter.java

@@ -0,0 +1,25 @@
+package org.springblade.manager.excel;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springblade.manager.service.IWbsFormElementService;
+
+import java.util.List;
+
+/**
+ * Wbs元素导入
+ *
+ * @author liuyc
+ */
+@RequiredArgsConstructor
+public class WbsFormElementImporter implements ExcelImporter<WbsFormElementExcel> {
+    private final IWbsFormElementService service;
+    private final Boolean isCovered;
+    private final String tableId;
+
+    @Override
+    public void save(List<WbsFormElementExcel> data) {
+//        data.forEach(System.out::print);
+        service.importElement(data, isCovered, tableId);
+    }
+}

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -143,7 +143,9 @@
         is_deleted = 0
         and status = 1
         and `type` = 1
-        and project_id = #{projectId}
+        <if test="projectId !=null and projectId != ''">
+            and project_id = #{projectId}
+        </if>
         <if test="wbsId!=null and wbsId!=''">
             and wbs_id = #{wbsId}
         </if>

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java

@@ -21,6 +21,7 @@ import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.dto.WbsFormElementDTO;
 import org.springblade.manager.entity.WbsFormElement;
+import org.springblade.manager.excel.WbsFormElementExcel;
 import org.springblade.manager.vo.WbsFormElementVO;
 
 import java.util.List;
@@ -42,4 +43,6 @@ public interface IWbsFormElementService extends BaseService<WbsFormElement> {
     Boolean initTable(List<WbsFormElement> elementList,String tableName);
 
 	List<WbsFormElement> selectElementListByFid(String tableId);
+
+    void importElement(List<WbsFormElementExcel> data, Boolean isCovered,String tableId);
 }

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

@@ -17,9 +17,11 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.manager.dto.WbsFormElementDTO;
 import org.springblade.manager.entity.WbsFormInitEntity;
+import org.springblade.manager.excel.WbsFormElementExcel;
 import org.springblade.manager.mapper.WbsFormElementMapper;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -78,22 +80,9 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
     @Override
     public Boolean initTable(List<WbsFormElement> elementList, String tableName) {
-       /* List<WbsFormInitEntity> listDTO = new ArrayList<>();
-        for (WbsFormElement wbsFormElement : elementList) {
-            WbsFormInitEntity w = new WbsFormInitEntity();
-            String eName = wbsFormElement.getEName();
-            Integer eType = wbsFormElement.getEType();
-            Integer eLength = wbsFormElement.getELength();
-            w.setFieldName(eName);
-            w.setFieldLength(String.valueOf(eType));
-            w.setFieldLength(String.valueOf(eLength));
-            listDTO.add(w);
-        }*/
-        //定义建表SQL
         String sql = createSQL(elementList);
         //建表
         Integer row = wbsFormElementMapper.createTable(sql, tableName);
-//        System.out.println("row:///////////////////////////" + row);
         if (row >= 0) {
             return true;
         }
@@ -101,12 +90,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     }
 
     private String createSQL(List<WbsFormElement> elementList) {
-        // 创建 StringBuffer 拼接sql
         StringBuffer sbr = new StringBuffer();
-        /*sbr.append("CREATE TABLE `m_wbs_form_" + tableName + DateUtil.time() + "` (\n");
-        //判断类型
-        sbr.append("`id` bigint(20) NOT NULL, \n");
-        */
         for (WbsFormElement wbsFormElement : elementList) {
             //获取字段名、类型、长度
             String fieldName = wbsFormElement.getEName();
@@ -123,9 +107,6 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                 sbr.append(" " + fieldType + "(" + fieldLength + ") ,\n");
             }
         }
-        /*sbr.append(" PRIMARY KEY (`id`) USING BTREE )\n");
-        sbr.append(" ENGINE=InnoDB DEFAULT CHARSET=utf8 \n");*/
-        /*System.out.println("SQL:******* " + sbr);*/
         return String.valueOf(sbr);
     }
 
@@ -156,5 +137,24 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         return wbsFormElements;
     }
 
+    @Override
+    public void importElement(List<WbsFormElementExcel> data, Boolean isCovered, String tableId) {
+        List<WbsFormElement> list = new ArrayList<>();
+        data.forEach(excel -> {
+            WbsFormElement wbsFormElement = new WbsFormElement();
+            wbsFormElement.setEName(excel.getElementName());
+            wbsFormElement.setEType(Integer.valueOf(excel.getElementType()));
+            wbsFormElement.setELength(Integer.valueOf(excel.getElementLength()));
+            wbsFormElement.setEAllowDeviation(excel.getElementAllowDeviation());
+            wbsFormElement.setEInspectionMethod(excel.getElementInspectionMethod());
+            wbsFormElement.setFId(tableId);
+            list.add(wbsFormElement);
+        });
+        if (isCovered) {
+            this.saveOrUpdateBatch(list);
+        } else {
+            this.saveBatch(list);
+        }
+    }
 
 }

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -103,7 +103,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         if (userCount > 0L && Func.isEmpty(user.getId())) {
             throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
         }
-        //新增用户绑定项目合同段
+        //新增用户绑定项目合同段 TODO 需求不明未确定是否是角色与岗位一对一
 //        baseMapper.insertProjectAndContract(projectId, contractId, user.getRoleId(), user.getPostId(), user.getId());
 
         return save(user) && submitUserDept(user);