Browse Source

新增项目经理角色

wangliang 1 year ago
parent
commit
980f41d7cc

BIN
sop-api/src/main/resources/officeSopFlow.zip


BIN
sop-api/src/main/resources/static/crm_sop_detail.xlsx


+ 5 - 3
sop-business/src/main/java/com/qmth/sop/business/bean/dto/CrmDetailImportDto.java

@@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.HeadFontStyle;
 import com.alibaba.excel.annotation.write.style.HeadStyle;
 import com.qmth.sop.business.util.excel.BasicExcelRow;
+import org.hibernate.validator.constraints.Length;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
@@ -27,7 +28,8 @@ public class CrmDetailImportDto extends BasicExcelRow implements Serializable {
 
     @ExcelProperty(value = "考生人数")
     @NotNull(message = "考生人数不能为空")
-    private Integer examStudentCount;
+    @Length(message = "考生人数不能超过{max}个字符", max = 8)
+    private String examStudentCount;
 
     @ExcelProperty(value = "联系人")
     private String contacts;
@@ -63,11 +65,11 @@ public class CrmDetailImportDto extends BasicExcelRow implements Serializable {
         this.courseName = courseName;
     }
 
-    public Integer getExamStudentCount() {
+    public String getExamStudentCount() {
         return examStudentCount;
     }
 
-    public void setExamStudentCount(Integer examStudentCount) {
+    public void setExamStudentCount(String examStudentCount) {
         this.examStudentCount = examStudentCount;
     }
 

+ 2 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/params/SopQuickSearchParam.java

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.sop.common.enums.SopQuickSearchTypeEnum;
 import com.qmth.sop.common.enums.TFCustomTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
@@ -30,6 +31,7 @@ public class SopQuickSearchParam implements Serializable {
 
     @ApiModelProperty(value = "内容名称")
     @NotNull(message = "内容名称不能为空")
+    @Length(message = "内容名称不能超过{max}个字符", max = 50)
     private String name;
 
     @ApiModelProperty(value = "内容")

+ 3 - 1
sop-business/src/main/java/com/qmth/sop/business/entity/TBCrmDetail.java

@@ -95,7 +95,9 @@ public class TBCrmDetail extends BaseEntity implements Serializable {
         this.crmNo = crmNo;
         this.flowDeploymentId = flowDeploymentId;
         this.courseName = crmDetailImportDto.getCourseName();
-        this.examStudentCount = crmDetailImportDto.getExamStudentCount();
+        this.examStudentCount = Objects.nonNull(crmDetailImportDto.getExamStudentCount()) ?
+                Integer.parseInt(crmDetailImportDto.getExamStudentCount()) :
+                null;
         this.contacts = crmDetailImportDto.getContacts();
         this.mobileNumber = crmDetailImportDto.getMobileNumber();
         this.serviceScope = ServiceScopeEnum.convertToName(crmDetailImportDto.getServiceScope());

+ 35 - 21
sop-business/src/main/java/com/qmth/sop/business/util/excel/BasicExcelListener.java

@@ -25,16 +25,22 @@ import java.util.*;
  * @Date: 2022/5/14
  */
 public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
+
     private final static Logger log = LoggerFactory.getLogger(BasicExcelListener.class);
 
     /**
      * 批处理阈值2000
      */
     private static int BATCH_COUNT = 2000;
+
     public static final String SUCCESS = "success";
+
     public static final String ERROR = "error";
+
     private LinkedMultiValueMap<String, T> list;
+
     private StringJoiner errorDataSj = new StringJoiner("\n");
+
     private Exception exception = null;
 
     public BasicExcelListener() {
@@ -48,15 +54,16 @@ public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
 
     public abstract void handle(LinkedMultiValueMap<String, T> dataList, StringJoiner errorData, Exception exception);
 
-//    public abstract void errorData(List<String> errorDataList);
+    //    public abstract void errorData(List<String> errorDataList);
 
     @Override
     public void invoke(T o, AnalysisContext analysisContext) {
-//        if (validData(o, analysisContext) || (analysisContext.readRowHolder().getRowIndex() == 2001 || analysisContext.readRowHolder().getRowIndex() == 7001)) {
+        //        if (validData(o, analysisContext) || (analysisContext.readRowHolder().getRowIndex() == 2001 || analysisContext.readRowHolder().getRowIndex() == 7001)) {
         if (validData(o, analysisContext)) {
             list.add(ERROR, o);
             BasicExcelRow basicExcelRow = (BasicExcelRow) o;
-            errorDataSj.add("第" + basicExcelRow.getSheet() + "个sheet第" + (basicExcelRow.getRow() - 1) + "行" + basicExcelRow.getErrorMessage().toString());
+            errorDataSj.add("第" + basicExcelRow.getSheet() + "个sheet第" + (basicExcelRow.getRow() - 1) + "行"
+                    + basicExcelRow.getErrorMessage().toString());
         } else {
             list.add(SUCCESS, o);
         }
@@ -66,10 +73,10 @@ public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
         }
     }
 
-//    @Override
-//    public void invokeHead(Map<Integer, ReadCellData<?>> headMap, AnalysisContext context) {
-//        log.info("表头:{}", JSONObject.toJSONString(headMap));
-//    }
+    //    @Override
+    //    public void invokeHead(Map<Integer, ReadCellData<?>> headMap, AnalysisContext context) {
+    //        log.info("表头:{}", JSONObject.toJSONString(headMap));
+    //    }
 
     @Override
     public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
@@ -85,8 +92,8 @@ public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
     @Override
     public void onException(Exception exception, AnalysisContext context) {
         log.info("onException is come in!");
-//        XlsxReadSheetHolder xlsxReadSheetHolder = (XlsxReadSheetHolder) context.currentReadHolder();
-//        errorDataSj.add("第" + (xlsxReadSheetHolder.getSheetNo() + 1) + "个sheet第" + (xlsxReadSheetHolder.getRowIndex() - 1) + "行" + exception.getMessage().toString());
+        //        XlsxReadSheetHolder xlsxReadSheetHolder = (XlsxReadSheetHolder) context.currentReadHolder();
+        //        errorDataSj.add("第" + (xlsxReadSheetHolder.getSheetNo() + 1) + "个sheet第" + (xlsxReadSheetHolder.getRowIndex() - 1) + "行" + exception.getMessage().toString());
         this.exception = exception;
     }
 
@@ -150,8 +157,11 @@ public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
                     }
                 } else if (annotation instanceof Length) {
                     length = (Length) annotation;
-                    if (Objects.nonNull(object) && (object.toString().length() < length.min() || object.toString().length() > length.max())) {
-                        errorMessage.add("列名[" + excelProperty.value()[0] + "]:" + length.message());
+                    if (Objects.nonNull(object) && (object.toString().length() < length.min()
+                            || object.toString().length() > length.max())) {
+                        errorMessage.add("列名[" + excelProperty.value()[0] + "]:" + length.message()
+                                .replaceAll("\\{max}", String.valueOf(length.max()))
+                                .replaceAll("\\{min}", String.valueOf(length.min())));
                     }
                 } else if (annotation instanceof Min) {
                     min = (Min) annotation;
@@ -165,12 +175,14 @@ public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
                     }
                 } else if (annotation instanceof DecimalMin) {
                     decimalMin = (DecimalMin) annotation;
-                    if (Objects.nonNull(object) && new BigDecimal(object.toString()).compareTo(new BigDecimal(decimalMin.value())) == -1) {
+                    if (Objects.nonNull(object)
+                            && new BigDecimal(object.toString()).compareTo(new BigDecimal(decimalMin.value())) == -1) {
                         errorMessage.add("列名[" + excelProperty.value()[0] + "]:" + decimalMin.message());
                     }
                 } else if (annotation instanceof DecimalMax) {
                     decimalMax = (DecimalMax) annotation;
-                    if (Objects.nonNull(object) && new BigDecimal(object.toString()).compareTo(new BigDecimal(decimalMax.value())) == 1) {
+                    if (Objects.nonNull(object)
+                            && new BigDecimal(object.toString()).compareTo(new BigDecimal(decimalMax.value())) == 1) {
                         errorMessage.add("列名[" + excelProperty.value()[0] + "]:" + decimalMax.message());
                     }
                 } else if (annotation instanceof NotNull) {
@@ -190,12 +202,14 @@ public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
                     }
                 } else if (annotation instanceof Size) {
                     size = (Size) annotation;
-                    if (Objects.nonNull(object) && (object.toString().length() < size.min() || object.toString().length() > size.max())) {
+                    if (Objects.nonNull(object) && (object.toString().length() < size.min()
+                            || object.toString().length() > size.max())) {
                         errorMessage.add("列名[" + excelProperty.value()[0] + "]:" + size.message());
                     }
                 } else if (annotation instanceof Range) {
                     range = (Range) annotation;
-                    if (Objects.nonNull(object) && (Long.parseLong(object.toString()) < range.min() || Long.parseLong(object.toString()) > range.max())) {
+                    if (Objects.nonNull(object) && (Long.parseLong(object.toString()) < range.min()
+                            || Long.parseLong(object.toString()) > range.max())) {
                         errorMessage.add("列名[" + excelProperty.value()[0] + "]:" + range.message());
                     }
                 } else if (annotation instanceof AssertTrue) {
@@ -218,10 +232,10 @@ public abstract class BasicExcelListener<T> extends AnalysisEventListener<T> {
     }
 
     //可重写的方法:
-//	void invoke(T data, AnalysisContext context); //处理一行数据
-//	void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) //处理表头的一行数据
-//	void extra(CellExtra extra, AnalysisContext context); //获取单元格的额外信息
-//	void doAfterAllAnalysed(AnalysisContext context) //全部读取结束后的操作
-//	boolean hasNext(AnalysisContext context); //是否读取下一行
-//	void onException(Exception exception, AnalysisContext context) //发生异常时调用
+    //	void invoke(T data, AnalysisContext context); //处理一行数据
+    //	void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) //处理表头的一行数据
+    //	void extra(CellExtra extra, AnalysisContext context); //获取单元格的额外信息
+    //	void doAfterAllAnalysed(AnalysisContext context) //全部读取结束后的操作
+    //	boolean hasNext(AnalysisContext context); //是否读取下一行
+    //	void onException(Exception exception, AnalysisContext context) //发生异常时调用
 }

+ 5 - 1
sop-business/src/main/resources/db/log/wangliang_update_log.sql

@@ -271,4 +271,8 @@ VALUES(3095, '设备管理', 'DeviceManage', 'LINK', 42, 1, 'AUTH', '4018,4019,4
 
 UPDATE sys_privilege
 SET name='sop编辑', url='/api/admin/sop/edit', `type`='URL', parent_id=40, `sequence`=11, property='SYS', related=NULL, enable=1, default_auth=1, front_display=0
-WHERE id=3047;
+WHERE id=3047;
+
+UPDATE t_d_form_widget
+SET code='FILE', `type`='FORM', form_id='scan_end', form_name='scan_end', title='上传检查', input_type='ARRAY', required=1, readable=0, writable=1, visable=1, `scale`=NULL, `length`=NULL, binding=NULL, data_grid=NULL, tips=NULL, format=NULL, span=12, sub_title=NULL, `options`=NULL, flow_type='OFFICE_SOP_FLOW', form_setup=3, handle=0, form_group=NULL, role_type=NULL, create_id=1, create_time=1
+WHERE id=38;