Эх сурвалжийг харах

数据库删除规则编号问题解决。补录模板列表新增已存在模板问题解决、模板列表新增一条数据且是新模板,模板校验规则列表的补录模板实时更新

ZhangYanJie 4 сар өмнө
parent
commit
dac45fbd95

+ 46 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/SupplementTaskManagementAction.java

@@ -1,5 +1,6 @@
 package com.sundata.product.rwa.datasupplementary.action;
 
+import com.sundata.admin.AdminUtil;
 import com.sundata.common.base.BaseAction;
 import com.sundata.product.rwa.datasupplementary.model.SupplementTaskDefineModel;
 import com.sundata.product.rwa.datasupplementary.model.SupplementTemplateRelationModel;
@@ -177,5 +178,50 @@ public class SupplementTaskManagementAction extends BaseAction {
         }
     }
 
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectTemplateDictionary
+     * @description: 字典查询
+     * @param: HttpServletRequest request, HttpServletResponse response,
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"selectTemplateDictionary"})
+    public void selectTemplateDictionary(HttpServletRequest request, HttpServletResponse response) {
+
+        sendData(response,supplementTaskManagementService.selectTemplateDictionary());
+
+    }
+
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectTemplateDefineDictionary
+     * @description: 字典查询
+     * @param: HttpServletRequest request, HttpServletResponse response,
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"selectTemplateDefineDictionary"})
+    public void selectTemplateDefineDictionary(HttpServletRequest request, HttpServletResponse response) {
+
+        sendData(response,supplementTaskManagementService.selectTemplateDefineDictionary());
+
+    }
+
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: getNextId
+     * @description: 获得规则编号
+     * @param: HttpServletRequest request, HttpServletResponse response,
+     * @return:
+     * @throws:
+     */
+    @RequestMapping({"getNextId"})
+    public void getNextId(HttpServletRequest request, HttpServletResponse response) {
+        String resId = AdminUtil.getNextId("TEMPLATEVERIFYRU");
+        sendData(response,resId);
+    }
 
 }

+ 5 - 4
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mapper/SupplementTaskManagementMapper.java

@@ -1,9 +1,7 @@
 package com.sundata.product.rwa.datasupplementary.mapper;
 
-import com.sundata.product.rwa.datasupplementary.model.SupplementTaskDefineModel;
-import com.sundata.product.rwa.datasupplementary.model.SupplementTemplateRelationModel;
-import com.sundata.product.rwa.datasupplementary.model.TemplateBasicInfoDefineModel;
-import com.sundata.product.rwa.datasupplementary.model.TemplateDataValidationRuleModel;
+import com.sundata.admin.nounmanage.model.DictContent;
+import com.sundata.product.rwa.datasupplementary.model.*;
 import org.apache.ibatis.annotations.Param;
 import org.apache.xmlbeans.impl.xb.xsdschema.Public;
 
@@ -42,4 +40,7 @@ public interface SupplementTaskManagementMapper {
 
     public List<TemplateBasicInfoDefineModel> selectTempNames(@Param("taskCode") String taskCode);
 
+    public List<DictContentList> selectTemplateDictionary();
+
+    public List<DictContentList> selectTemplateDefineDictionary();
 }

+ 22 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/model/DictContentList.java

@@ -0,0 +1,22 @@
+package com.sundata.product.rwa.datasupplementary.model;
+
+public class DictContentList {
+    private String value;
+    private String label;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+}

+ 5 - 5
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/model/SupplementTemplateRelationModel.java

@@ -15,7 +15,7 @@ public class SupplementTemplateRelationModel {
     // 任务编号
     private String taskCode;
     // 补录模板编号
-    private String tmpCode;
+    private String tmpCodeOfDefine;
     // 模板名称
     private String tmpName;
     // 数据初始化逻辑
@@ -71,12 +71,12 @@ public class SupplementTemplateRelationModel {
         this.taskCode = taskCode;
     }
 
-    public String getTmpCode() {
-        return tmpCode;
+    public String getTmpCodeOfDefine() {
+        return tmpCodeOfDefine;
     }
 
-    public void setTmpCode(String tmpCode) {
-        this.tmpCode = tmpCode;
+    public void setTmpCodeOfDefine(String tmpCodeOfDefine) {
+        this.tmpCodeOfDefine = tmpCodeOfDefine;
     }
 
     public String getTmpName() {

+ 22 - 6
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mybatis/SupplementTaskManagementMapper.xml

@@ -71,7 +71,7 @@
         T1.TERM                   AS   term,
         T1.DATA_DATE              AS   dataDate,
         T1.TASKCODE               AS   taskCode,
-        T1.TMPCODE                AS   tmpCode,
+        T1.TMPCODE                AS   tmpCodeOfDefine,
         T2.TMPNAME                AS   tmpName,
         T1.SQLCODE                AS   sqlCode,
         T1.REMARK                 AS   remark
@@ -179,7 +179,7 @@
         #{model.term},
         #{model.dataDate},
         #{model.taskCode},
-        #{model.tmpCode},
+        #{model.tmpCodeOfDefine},
         #{model.sqlCode},
         #{model.remark}
         )
@@ -274,8 +274,8 @@
                 <if test="model.taskCode != null and model.taskCode != ''">
                     TASKCODE = #{model.taskCode},
                 </if>
-                <if test="model.tmpCode != null and model.tmpCode != ''">
-                    TMPCODE = #{model.tmpCode},
+                <if test="model.tmpCodeOfDefine != null and model.tmpCodeOfDefine != ''">
+                    TMPCODE = #{model.tmpCodeOfDefine},
                 </if>
                 <if test="model.sqlCode != null and model.sqlCode != ''">
                     SQLCODE = #{model.sqlCode},
@@ -376,8 +376,8 @@
     <delete id="deleteTemplateCheckData">
         delete from RWA_IMPUT_TMPCONF_VERIFICATION_RULES
         <where>
-            <if test="model.tmpCode != null and model.tmpCode !=''">
-                TMPCODE = #{model.tmpCode}
+            <if test="model.tmpCodeOfDefine != null and model.tmpCodeOfDefine !=''">
+                TMPCODE = #{model.tmpCodeOfDefine}
             </if>
         </where>
     </delete>
@@ -408,5 +408,21 @@
         </where>
     </select>
 
+    <select id="selectTemplateDictionary" resultType="com.sundata.product.rwa.datasupplementary.model.DictContentList">
+        select
+        T1.TMPCODE as value,
+        T2.TMPNAME as label
+        from RWA_IMPUT_SUPTASKCONF_RELATEDINFO T1
+        LEFT JOIN RWA_IMPUT_TMPCONF_BASEINFO T2
+        ON T1.TMPCODE = T2.TMPCODE
+    </select>
+
+    <select id="selectTemplateDefineDictionary" resultType="com.sundata.product.rwa.datasupplementary.model.DictContentList">
+        select
+        T1.TMPCODE as value,
+        T1.TMPNAME as label
+        from RWA_IMPUT_TMPCONF_BASEINFO T1
+    </select>
+
 
 </mapper>

+ 30 - 6
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/service/SupplementTaskManagementService.java

@@ -3,14 +3,12 @@ package com.sundata.product.rwa.datasupplementary.service;
 import cn.hutool.core.collection.CollectionUtil;
 import com.ibm.db2.jcc.am.SqlException;
 import com.mysql.cj.x.protobuf.MysqlxConnection;
+import com.sundata.admin.nounmanage.model.DictContent;
 import com.sundata.common.exception.BusinessException;
 import com.sundata.common.util.DBExecutor;
 import com.sundata.product.rwa.businessconfig.service.SysListOfPublicSectorService;
 import com.sundata.product.rwa.datasupplementary.mapper.SupplementTaskManagementMapper;
-import com.sundata.product.rwa.datasupplementary.model.SupplementTaskDefineModel;
-import com.sundata.product.rwa.datasupplementary.model.SupplementTemplateRelationModel;
-import com.sundata.product.rwa.datasupplementary.model.TemplateBasicInfoDefineModel;
-import com.sundata.product.rwa.datasupplementary.model.TemplateDataValidationRuleModel;
+import com.sundata.product.rwa.datasupplementary.model.*;
 import org.apache.commons.lang.text.StrSubstitutor;
 import org.apache.commons.text.StringSubstitutor;
 import org.slf4j.Logger;
@@ -170,8 +168,6 @@ public class SupplementTaskManagementService {
 
         // 应入参数
         String[] values = {"workDate","account","orgcode","TaskId","TaskSerialNum"};
-        // 判断缺失参数用
-        ArrayList<String> paramList = new ArrayList<String>(Arrays.asList(values));
         // 替换模板字符用
         Map<String,String> inputMap = new HashMap<String,String>();
         // 造假参数
@@ -184,10 +180,13 @@ public class SupplementTaskManagementService {
         StrSubstitutor sub = new StrSubstitutor(inputMap);
 
         if (!relationList.isEmpty()) {
+
             // 先将旧的记录删掉
             supplementTaskManagementMapper.deleteTemplateListData(relationList.get(0));
             // 循环插入列表
             for (SupplementTemplateRelationModel relationModel:relationList) {
+                // 判断缺失参数用
+                ArrayList<String> paramList = new ArrayList<String>(Arrays.asList(values));
                 // 任务编号赋值
                 relationModel.setTaskCode(taskCode);
                 // 对请求中的数据逻辑说明的sql进行正则匹配
@@ -201,11 +200,13 @@ public class SupplementTaskManagementService {
                         log.error(err);
                         throw new BusinessException(err);
                     } else {
+                        // 排除不缺失参数
                         paramList.remove(matcher.group(1));
                     }
                     matcherCount++;
                 }
 
+                // 参数缺失校验
                 if (matcherCount < values.length) {
                     StringBuilder err = new StringBuilder("参数个数不足!");
                     for (String errValue:paramList) {
@@ -321,4 +322,27 @@ public class SupplementTaskManagementService {
         return true;
     }
 
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectTemplateDefineDictionary
+     * @description: 字典查询
+     * @param:
+     * @return:
+     * @throws:
+     */
+    public List<DictContentList> selectTemplateDictionary() {
+        return supplementTaskManagementMapper.selectTemplateDictionary();
+    }
+
+    /**
+     * @author: 张艳杰
+     * @methodsName: selectTemplateDefineDictionary
+     * @description: 字典查询
+     * @param:
+     * @return:
+     * @throws:
+     */
+    public List<DictContentList> selectTemplateDefineDictionary() {
+        return supplementTaskManagementMapper.selectTemplateDefineDictionary();
+    }
 }

+ 69 - 22
Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtaskmanagement.tsx

@@ -5,12 +5,13 @@ import  {Upload} from 'antd'
 import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, SDFormDict, } from "@sundata/ui-frame";
 import type { SupplementTaskDefineModel,SupplementTemplateRelationModel,TemplateDataValidationRuleModel, } from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
 import {getDataList,selectDetailData,getTemplateCheckDataList,getTemplateDataList,deleteInfoData,updateRowData,isNotExist,
-  createRowData,createTemplateListRowData,createTemplateCheckRowData} from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
+  createRowData,createTemplateListRowData,createTemplateCheckRowData,selectDict,selectDictDefine,getNextId} from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
 import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
 import { ProductProps } from "@/sundataImport";
 import { toNumber } from "lodash";
 import { useModel } from '@umijs/max';
 import { countChineseChars } from "@/services/rwa/product/rwacheckutils";
+import { DictTree } from "@sundata/ui-frame/es/types";
 
 type widowRush = {
   onCancel:  () => void;
@@ -37,20 +38,27 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
 
     const [templateListData, setTemplateListData] = useState<SupplementTemplateRelationModel[]>();
     const [templateCheckData, setTemplateCheckData] = useState<TemplateDataValidationRuleModel[]>();
-    // const [resMap, setResMap] = useState<ModelMap>();
-
     // 页面数据
-    var formDataList = new Array<SupplementTaskDefineModel>;
+    var formDataList = new Array<TemplateDataValidationRuleModel>;
+
+    const [dictionArray1,setDictionArray1] = useState<any[]>();
+    const [dictionArray2,setDictionArray2] = useState<any[]>();
+
+    // 字典
     const { fetchDict } = useModel('dict');
 
     /** 字段关系序号编辑 */
-    var dataInfoIndex = 1;
-    var dataDetailIndex = 0;
+    var dataInfoIndex = 0;
 
     useEffect(() => {
+      selectDict().then((data)=>{
+        setDictionArray1(data);
+      });
+      selectDictDefine().then((data)=>{
+        setDictionArray2(data);
+      });
       }, []);
     
-
     // 修改查询查询
     const selectData = async (formdata : SupplementTaskDefineModel) => {
       const data = await selectDetailData(formdata);
@@ -74,7 +82,6 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
 
     // 插入或者更新数据
   const handleSave = async(data: SupplementTaskDefineModel,) => {
-    
     if (editType == 'update' ) {
       const updateRes = await updateRowData(data);
       if (updateRes == true) {
@@ -251,7 +258,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
           title: '序号',
           dataIndex: 'id',
           search: false,
-          render: (text, record, index) => { index  = index + 1;dataInfoIndex = index; return index},
+          render: (text, record, index) => { index  = index + 1; return index},
           width:100,
           ellipsis:true,
           editable:false
@@ -282,12 +289,24 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
           },
           {
             title: '补录模板',
-            dataIndex: 'tmpCode',
+            dataIndex: 'tmpCodeOfDefine',
             search: false,
             hideInTable: false,
+            valueType:'treeSelect',
             formItemProps:{
               rules:[
-                {required:true},]
+                {required:true},
+                {validator:(rules,value,callback)=>{
+                  if (templateListData?.find(item => value === item?.tmpCodeOfDefine)) {
+                    callback('补录模板列表不可出现重复模板');
+                  } else {
+                    callback();
+                  }
+                }},
+              ]
+            },
+            fieldProps: {
+              options: dictionArray2,
             }
           },
           {
@@ -329,7 +348,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
                 icon={<WomanOutlined />}
                 successMessage=""
                 onClick={async ()=>{ 
-                  templateListActionRef.current?.startEditable(record.tmpCode);
+                  templateListActionRef.current?.startEditable(record.tmpCodeOfDefine);
                  } }
               >
                 编辑
@@ -345,7 +364,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             title: '序号',
             dataIndex: 'id',
             search: false,
-            render: (text, record, index) => { index  = index + 1;dataDetailIndex =index; return index},
+            render: (text, record, index) => { index  = index + 1;return index},
             width:100,
             ellipsis:true,
             editable:false
@@ -382,6 +401,15 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             width:150,
             ellipsis:true
           },
+          {
+            title: '规则编号',
+            dataIndex: 'tmpverificationCode',
+            search: false,
+            width:100,
+            ellipsis:true,
+            hideInTable:true,
+            editable:false
+          },
           {
             title: '规则名称',
             dataIndex: 'tmpverificationName',
@@ -408,9 +436,13 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
             hideInTable: false,
             width:150,
             ellipsis:true,
+            valueType:'treeSelect',
             formItemProps:{
               rules:[
                 {required:true},]
+            },
+            fieldProps: {
+              options: dictionArray1,
             }
           },
           {
@@ -563,8 +595,6 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
          rowKey="customerName"
          request={async (formdata:SupplementTaskDefineModel) =>{
            const formDatas = await getDataList(formdata);
-           // 解构数组(导出用)
-           formDataList=[...formDatas];
            return {data: formDatas}
          }  }
          columns={columns}
@@ -626,7 +656,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
               callback();
             }
          }}]}   label="任务名称"/>
-            <SDFormDict dictKey=""  name="orgCode"      label="责任机构"/>
+            <SDFormDict dictKey="org"  name="orgCode"      label="责任机构"/>
             <SDFormDict dictKey="" name="account"     label="首选责任人"/>
             <SDFormDict dictKey="CALC_TASK_RATE" name="frequency"  label="补录频率"/>
             <SDFormText name="adjustment"  label="天数调整"/>
@@ -634,7 +664,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
         <SDLayout>
         <SDAreaTtile title='补录模板列表'/>
         <EditableProTable
-              rowKey="tmpCode"
+              rowKey="tmpCodeOfDefine"
               columns={templateListColumns}
               recordCreatorProps={false}
               actionRef={templateListActionRef}
@@ -642,7 +672,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
               editable={{
                 actionRender: (row,config,defaultDoms)=>{
                   return [defaultDoms.save,defaultDoms.delete,defaultDoms.cancel]
-                }
+                },
               }}
               toolBarRender={(_, { selectedRowKeys }) => editType == 'create' || editType == 'update' ? [
                 <SDButton
@@ -650,7 +680,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
                   successMessage=''
                   onClick={() => {
                     templateListActionRef.current?.addEditRecord?.({
-                      tmpCode: dataInfoIndex+1,
+                      tmpCodeOfDefine: dataInfoIndex+1,
                       title: 'NEWROW',
                     });
                   }}
@@ -660,7 +690,23 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
               ]:[]}
               onChange={ (value: readonly SupplementTemplateRelationModel[]) => {
                 setTemplateListData([...value]);
-              } }
+                // 判断array2中是否包含array1中的对象,并返回该对象的数组形式
+                let foundObject = templateCheckData?.filter(obj1 => value?.find(obj2 => 
+                obj2.tmpCodeOfDefine === obj1.tmpCode));
+                if (foundObject) {
+                  setTemplateCheckData([...foundObject]);
+                }
+                // 补录模板内新增一条数据(模板是新的)补录模板校验规则的补录模板下拉列表应实时更新
+                // 先将补录模板校验规则的补录模板下拉列表清空
+                dictionArray1?.splice(0,dictionArray1.length);
+                // 遍历补录模板列表。将新出现的模板用temcode在dictionArray2下拉列表的数组中找到相应对象并压进dictionArray1里
+                value?.forEach((item)=>{
+                   const obj = dictionArray2?.find(e => e.value === item.tmpCodeOfDefine);
+                   if (!dictionArray1?.includes(obj)){
+                     dictionArray1?.push(obj);
+                   }
+                })
+              }}
            />
         </SDLayout>
 
@@ -695,9 +741,10 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
                 <SDButton
                   key="export"
                   successMessage=''
-                  onClick={() => {
+                  onClick={ async () => {
+                    let nextId = await getNextId();
                     templateCheckActionRef.current?.addEditRecord?.({
-                      tmpverificationCode: dataDetailIndex+1,
+                      tmpverificationCode: nextId,
                       title: 'NEWROW',
                     });
                   }}

+ 21 - 2
Procedure/frontend/projectb/src/services/rwa/product/datasupplementary/supplementtaskmanagement.ts

@@ -1,4 +1,4 @@
-import type { BasePageModel, TableData } from '@sundata/ui-frame';
+import type { BasePageModel, DictTree, TableData } from '@sundata/ui-frame';
 import { baseFun } from '@sundata/ui-frame';
 
 // 模板基本信息定义表
@@ -51,7 +51,7 @@ export type SupplementTaskDefineModel = {
     // 任务编号
     taskCode: string;
     // 补录模板编号
-    tmpCode: string;
+    tmpCodeOfDefine: string;
     // 数据初始化逻辑
     sqlCode: string;
     // 补录模板说明
@@ -167,3 +167,22 @@ export async function isNotExist(body: any) {
       data: body,
     });
 }
+
+
+/** 唯一性校验 POST */
+export async function selectDict() {
+  return baseFun.request<any[]>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/selectTemplateDictionary.do', {
+  });
+}
+
+/** 唯一性校验 POST */
+export async function selectDictDefine() {
+  return baseFun.request<any[]>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/selectTemplateDefineDictionary.do', {
+  });
+}
+
+/** 生成规则编号 POST */
+export async function getNextId() {
+  return baseFun.request<string>('/api/product/rwa/datasupplementary/SupplementTaskManagementAction/getNextId.do', {
+  });
+}