通用数据,如果是钉钉人员或者钉钉部门,增加或者修改时候先删除明细再增加明细

This commit is contained in:
hecan 2024-11-05 17:52:25 +08:00
parent e6c17411c6
commit 8777a09e1c
4 changed files with 88 additions and 4 deletions

View File

@ -48,4 +48,24 @@ public interface IComparisonDetailsDao extends IBaseDao<ComparisonDetailsEntity,
* @Date 2024/5/9 15:34
* **/
List<Map<String,Object>> queryComparisonDetailsPage(ComparisonDetailsEntity comparisonDetailsEntity);
/**
*
* @content 根据dataid和fformmainId查询单个子表数据
* @Param
* @Return
* @Author hecan
* @Date 2024-11-05 14:02
* **/
Map<String,Object> queryComparisonDetailsByDataId(ComparisonDetailsEntity comparisonDetailsEntity);
/**
*
* @content 删除通用数据当data_id没有且是随机生成的时候
* @Param
* @Return
* @Author hecan
* @Date 2024-11-05 17:17
* **/
Integer deleteComparisonDetailsByFormmainId(ComparisonDetailsEntity comparisonDetailsEntity);
}

View File

@ -42,5 +42,16 @@ public class ComparisonDetailsDaoImpl extends MybatisGenericDao<ComparisonDetail
return query;
}
@Override
public Map<String,Object> queryComparisonDetailsByDataId(ComparisonDetailsEntity comparisonDetailsEntity) {
return (Map<String,Object>)super.selectOne("queryComparisonDetailsByDataId", comparisonDetailsEntity);
}
@Override
public Integer deleteComparisonDetailsByFormmainId(ComparisonDetailsEntity comparisonDetailsEntity) {
int delete = super.delete(getSqlIdPrifx() + "deleteComparisonDetailsByFormmainId", comparisonDetailsEntity);
return delete;
}
}

View File

@ -23,6 +23,12 @@
where formmain_id=#{formmainId} and sts='Y' and (data_status='Y' or data_status='F')
</select>
<!--根据dataid和fformmainId查询单个子表数据-->
<select id="queryComparisonDetailsByDataId" resultType="java.util.Map"
parameterType="com.hzya.frame.sysnew.comparison.entity.ComparisonDetailsEntity">
select * from ${dbName}
where formmain_id=#{formmainId} and data_id=#{dataId} and sts='Y' and (data_status='Y' or data_status='F')
</select>
<insert id="saveComparisonDetails" parameterType = "java.util.Map">
@ -64,5 +70,18 @@
</trim>
</update>
<!-- 多条件逻辑删除 -->
<update id="deleteComparisonDetailsByFormmainId" parameterType = "java.util.Map" >
update
${dbName}
set modify_time = now(),modify_user_id = #{modify_user_id}, data_status= 'N',sts='N'
<trim prefix="where" prefixOverrides="and">
<!--<foreach collection="mapDetails.entrySet()" item="value" index="key">
${key} =#{value}
</foreach>-->
and formmain_id=#{formmainId} and sts='Y' and (data_status='Y' or data_status='F')
</trim>
</update>
</mapper>

View File

@ -173,6 +173,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
List<JSONArray> arrayList=new ArrayList<>();
String tableName=null;
String tableNameDetails=null;
//根据dbtype和dbname分组拿到表名称和表类型
Map<String, Map<String, List<ComparisonEntity>>> collect = comparisonEntities.stream().collect(Collectors.groupingBy(ComparisonEntity::getDbName, Collectors.groupingBy(ComparisonEntity::getDbType)));
List<Map.Entry<String, String>> keyPairs = collect.entrySet().stream()
@ -197,6 +198,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
//如果是2就是明细表根据查询出来得子表是否是传输传递得子表
if(keyPair.getValue().equals("2")){
jsonArray= jsonObject.getJSONArray(keyPair.getKey());
tableNameDetails=keyPair.getKey();
if(jsonArray!= null) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObjectDetails = jsonArray.getJSONObject(i);
@ -227,7 +229,6 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
comparisonDataId.setFields(fields);
List<Map<String, Object>> listDataId = comparisonDao.queryComparisonPage(comparisonDataId);
if (CollectionUtils.isNotEmpty(listDataId)) {
//return BaseResult.getFailureMessageEntity(comparisonEntity.getDbName()+"表中已经存在data_id为:"+jsonObjectMain.getString("data_id")+"的数据");
return updateEntity(json);
} else {
@ -341,6 +342,18 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
//保存主表数据
ComparisonEntity comparisonEntityOne = comparisonDao.saveComparison(comparisonEntityRule);
jsonObjectList.put(comparisonEntityOne.getDbName(), map);
//根据formmain_id删除子表数据之后再新增这种情况只有data_id没有并且随时会变的时候才使用
//钉钉部门主数据编码和钉钉人员主数据编码
if(jsonObject.getString("mdmCode").equals("10015") || jsonObject.getString("mdmCode").equals("10016")) {
ComparisonDetailsEntity comparisonDetails = new ComparisonDetailsEntity();
comparisonDetails.setDbName(tableNameDetails);
comparisonDetails.setFormmainId(uuid);
comparisonDetails.setModify_user_id("c796fd9ba4c9f5ff3cc2fa41a040e443");
comparisonDetailsDao.deleteComparisonDetailsByFormmainId(comparisonDetails);
}
//保存子表数据
if (arrayList != null && arrayList.size() > 0) {
mapDetails = spliceDetailMap(comparisonEntities, mapDetails, arrayList);
@ -361,8 +374,6 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
stringObjectMap.remove("table_name");
ComparisonDetailsEntity comparisonDetailsEntityOne = comparisonDetailsDao.saveComparisonDetails(comparisonDetailsEntity);
comparisonEntityOne.setComparisonDetailsEntity(comparisonDetailsEntityOne);
//保存操作日志
//controlsLogDaoimpl.saveControlsLog(uuidDetail,jsonObject.getString("appName"),jsonObject.getString("appCode"),jsonObject.toJSONString(),"接口新增",jsonObject.getString("optionName"),comparisonDetailsEntity.getDbName()+"_option_log");
}
}
jsonObjectList.put(comparisonDetailsEntity.getDbName(), mapDetails);
@ -420,6 +431,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
JSONObject jsonObjectMain=new JSONObject();
JSONArray jsonArray=new JSONArray();
List<JSONArray> arrayList=new ArrayList<>();
String tableNameDetails=null;
//根据dbtype和dbname分组拿到表名称和表类型
Map<String, Map<String, List<ComparisonEntity>>> collect = comparisonEntities.stream().collect(Collectors.groupingBy(ComparisonEntity::getDbName, Collectors.groupingBy(ComparisonEntity::getDbType)));
List<Map.Entry<String, String>> keyPairs = collect.entrySet().stream()
@ -438,6 +450,7 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
}
if(keyPair.getValue().equals("2")){
jsonArray= jsonObject.getJSONArray(keyPair.getKey());
tableNameDetails=keyPair.getKey();
if(jsonArray!= null) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObjectDetails = jsonArray.getJSONObject(i);
@ -504,6 +517,17 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
//更新主表数据
Integer integer = comparisonDao.updateComparisonByType(comparisonEntity);
jsonObjectList.put(comparisonEntity.getDbName(),map);
//根据formmain_id删除子表数据之后再新增这种情况只有data_id没有并且随时会变的时候才使用
//钉钉人员主数据编码和钉钉部门主数据编码
if(jsonObject.getString("mdmCode").equals("10015") || jsonObject.getString("mdmCode").equals("10016")) {
ComparisonDetailsEntity comparisonDetails = new ComparisonDetailsEntity();
comparisonDetails.setDbName(tableNameDetails);
comparisonDetails.setFormmainId(id);
comparisonDetails.setModify_user_id("c796fd9ba4c9f5ff3cc2fa41a040e443");
comparisonDetailsDao.deleteComparisonDetailsByFormmainId(comparisonDetails);
}
if (integer>0) {
//保存子表数据
if (arrayList != null && arrayList.size() > 0) {
@ -521,8 +545,18 @@ public class ComparisonServiceImpl extends BaseService<ComparisonEntity, String>
comparisonDetailsEntity.setFormmainId(id);
comparisonDetailsEntity.setMapDetails(stringObjectMap);
comparisonDetailsEntity.setDbName(String.valueOf(stringObjectMap.get("table_name")));
//根据dataid和fformmainId查询单个子表数据判断有无没有则新增有则更新
Map<String, Object> mapOne = comparisonDetailsDao.queryComparisonDetailsByDataId(comparisonDetailsEntity);
//将表名称从字段中移除不需要
stringObjectMap.remove("table_name");
comparisonDetailsDao.updateComparisonDetailsByType(comparisonDetailsEntity);
if(mapOne!=null){
comparisonDetailsDao.updateComparisonDetailsByType(comparisonDetailsEntity);
}else{
stringObjectMap.put("id", UUIDLong.longUUID());
stringObjectMap.put("formmain_id", id);
stringObjectMap.put("create_time", new Date());
comparisonDetailsDao.saveComparisonDetails(comparisonDetailsEntity);
}
}
}
jsonObjectList.put(comparisonDetailsEntity.getDbName(),mapDetails);