Commit b0852bca authored by zhangyingbin's avatar zhangyingbin

解决redis锁死锁问题

parent 048f37f4
...@@ -34,6 +34,7 @@ import com.yeejoin.amos.feign.systemctl.model.RegionModel; ...@@ -34,6 +34,7 @@ import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -106,6 +107,25 @@ public class CompanyController extends BaseController { ...@@ -106,6 +107,25 @@ public class CompanyController extends BaseController {
@Autowired @Autowired
SuperviseRuleServiceImpl superviseRuleService; SuperviseRuleServiceImpl superviseRuleService;
@Autowired
private RedisTemplate redisTemplate;
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/getRedisLock")
@ApiOperation(httpMethod = "get", value = "检查redis锁情况", notes = "检查redis锁情况")
public ResponseModel<Boolean> getRedisLock(){
Boolean lock = redisTemplate.opsForValue().setIfAbsent("lock","1");
return ResponseHelper.buildResponse(lock);
}
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/deleteRedisLock")
@ApiOperation(httpMethod = "get", value = "删除redis锁", notes = "删除redis锁")
public ResponseModel<Boolean> deleteRedisLock(){
Boolean lock = redisTemplate.delete("lock");
return ResponseHelper.buildResponse(lock);
}
/** /**
* tzs注册时同步ugp库 * tzs注册时同步ugp库
* *
......
...@@ -77,63 +77,71 @@ public class OrgServiceImpl { ...@@ -77,63 +77,71 @@ public class OrgServiceImpl {
*/ */
public OrgUsrDto dataHandling(JSONObject jsonObject, String bizOrgType,String sequenceNbr){ public OrgUsrDto dataHandling(JSONObject jsonObject, String bizOrgType,String sequenceNbr){
Boolean lock = redisTemplate.opsForValue().setIfAbsent("lock","1"); Boolean lock = redisTemplate.opsForValue().setIfAbsent("lock","1");
if(lock) { try {
OrgUsr orgUsr = saveOrgUsr(jsonObject, bizOrgType, sequenceNbr); if (lock) {
sequenceNbr = String.valueOf(orgUsr.getSequenceNbr()); OrgUsr orgUsr = saveOrgUsr(jsonObject, bizOrgType, sequenceNbr);
//条件构造器 找出column表种 类型为(COMPANY 或 DEPARTMENT 或 PERSON)的列 sequenceNbr = String.valueOf(orgUsr.getSequenceNbr());
LambdaQueryWrapper<DynamicFormColumn> wrapper = new LambdaQueryWrapper<>(); //条件构造器 找出column表种 类型为(COMPANY 或 DEPARTMENT 或 PERSON)的列
wrapper.eq(DynamicFormColumn::getGroupCode, bizOrgType); LambdaQueryWrapper<DynamicFormColumn> wrapper = new LambdaQueryWrapper<>();
List<DynamicFormColumn> dynamicFormColumnList = dynamicFormColumnServiceImpl.list(wrapper); wrapper.eq(DynamicFormColumn::getGroupCode, bizOrgType);
List<DynamicFormInstance> dynamicFormInstanceList = new ArrayList<>(); List<DynamicFormColumn> dynamicFormColumnList = dynamicFormColumnServiceImpl.list(wrapper);
Map<String, Long> map = new HashMap<>(); List<DynamicFormInstance> dynamicFormInstanceList = new ArrayList<>();
for (DynamicFormColumn dynamicFormColumn : dynamicFormColumnList) { Map<String, Long> map = new HashMap<>();
//将column表的基本字段信息给instance表 for (DynamicFormColumn dynamicFormColumn : dynamicFormColumnList) {
DynamicFormInstance dynamicFormInstance = new DynamicFormInstance(); //将column表的基本字段信息给instance表
BeanUtils.copyProperties(dynamicFormColumn, dynamicFormInstance); DynamicFormInstance dynamicFormInstance = new DynamicFormInstance();
dynamicFormInstance.setFormColumnId(dynamicFormColumn.getSequenceNbr()); BeanUtils.copyProperties(dynamicFormColumn, dynamicFormInstance);
//通过字段名去拿到表单传来的值 dynamicFormInstance.setFormColumnId(dynamicFormColumn.getSequenceNbr());
if ("image".equals(dynamicFormColumn.getFieldCode())) { //通过字段名去拿到表单传来的值
if (!ValidationUtil.isEmpty(jsonObject.getJSONArray(dynamicFormInstance.getFieldCode()))) { if ("image".equals(dynamicFormColumn.getFieldCode())) {
dynamicFormInstance.setFieldValue(JSON.toJSONString(jsonObject.getJSONArray(dynamicFormInstance.getFieldCode()))); if (!ValidationUtil.isEmpty(jsonObject.getJSONArray(dynamicFormInstance.getFieldCode()))) {
dynamicFormInstance.setFieldValue(JSON.toJSONString(jsonObject.getJSONArray(dynamicFormInstance.getFieldCode())));
}
} else {
dynamicFormInstance.setFieldValue(jsonObject.getString(dynamicFormInstance.getFieldCode()));
} }
} else { dynamicFormInstance.setInstanceId(orgUsr.getSequenceNbr());
dynamicFormInstance.setFieldValue(jsonObject.getString(dynamicFormInstance.getFieldCode())); dynamicFormInstance.setSequenceNbr(null);
dynamicFormInstanceList.add(dynamicFormInstance);
} }
dynamicFormInstance.setInstanceId(orgUsr.getSequenceNbr()); //如果sequenceNbr有值(更新)
dynamicFormInstance.setSequenceNbr(null); if (!ValidationUtil.isEmpty(sequenceNbr)) {
dynamicFormInstanceList.add(dynamicFormInstance); LambdaQueryWrapper<DynamicFormInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>();
} lambdaQueryWrapper.eq(DynamicFormInstance::getInstanceId, orgUsr.getSequenceNbr());
//如果sequenceNbr有值(更新) List<DynamicFormInstance> instanceList = alertFormValueServiceImpl.list(lambdaQueryWrapper);
if (!ValidationUtil.isEmpty(sequenceNbr)) { //如果instance表中有值
LambdaQueryWrapper<DynamicFormInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>(); if (!ValidationUtil.isEmpty(instanceList)) {
lambdaQueryWrapper.eq(DynamicFormInstance::getInstanceId, orgUsr.getSequenceNbr()); //将查到的instance信息装到map中
List<DynamicFormInstance> instanceList = alertFormValueServiceImpl.list(lambdaQueryWrapper); for (DynamicFormInstance dynamicFormInstance : instanceList) {
//如果instance表中有值 map.put(dynamicFormInstance.getFieldCode(), dynamicFormInstance.getSequenceNbr());
if (!ValidationUtil.isEmpty(instanceList)) { }
//将查到的instance信息装到map中 //将查到的instance信息中的sequenceNbr装到更新之后的表中。
for (DynamicFormInstance dynamicFormInstance : instanceList) { for (DynamicFormInstance dynamicFormInstance : dynamicFormInstanceList) {
map.put(dynamicFormInstance.getFieldCode(), dynamicFormInstance.getSequenceNbr()); dynamicFormInstance.setSequenceNbr(map.get(dynamicFormInstance.getFieldCode()));
} }
//将查到的instance信息中的sequenceNbr装到更新之后的表中。
for (DynamicFormInstance dynamicFormInstance : dynamicFormInstanceList) {
dynamicFormInstance.setSequenceNbr(map.get(dynamicFormInstance.getFieldCode()));
} }
} }
//保存或更新 根据sequenceNbr
alertFormValueServiceImpl.saveOrUpdateBatch(dynamicFormInstanceList);
OrgUsrDto orgUsrDto = new OrgUsrDto();
BeanUtils.copyProperties(orgUsr, orgUsrDto);
orgUsrDto.setDynamicFormValue(dynamicFormInstanceList);
return orgUsrDto;
} else {
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
return dataHandling(jsonObject, bizOrgType, sequenceNbr);
} }
//保存或更新 根据sequenceNbr }catch (Exception e) {
alertFormValueServiceImpl.saveOrUpdateBatch(dynamicFormInstanceList); e.printStackTrace();
OrgUsrDto orgUsrDto = new OrgUsrDto(); return null;
BeanUtils.copyProperties(orgUsr, orgUsrDto); } finally {
orgUsrDto.setDynamicFormValue(dynamicFormInstanceList); if(lock) {
redisTemplate.delete("lock"); redisTemplate.delete("lock");
return orgUsrDto;
} else {
try{
Thread.sleep(100);
} catch (Exception e){
e.printStackTrace();
} }
return dataHandling(jsonObject,bizOrgType,sequenceNbr);
} }
} }
...@@ -648,201 +656,208 @@ public class OrgServiceImpl { ...@@ -648,201 +656,208 @@ public class OrgServiceImpl {
*/ */
public void saveOrUpdateUser(JSONObject jsonObject, String orgType) { public void saveOrUpdateUser(JSONObject jsonObject, String orgType) {
Boolean lock = redisTemplate.opsForValue().setIfAbsent("lock","1"); Boolean lock = redisTemplate.opsForValue().setIfAbsent("lock","1");
if(lock) { try {
boolean isCharge = false; if (lock) {
String amosOrgId = jsonObject.getString("sequenceNbr"); boolean isCharge = false;
LambdaQueryWrapper<OrgUsr> wrapper = new LambdaQueryWrapper<>(); String amosOrgId = jsonObject.getString("sequenceNbr");
wrapper.eq(OrgUsr::getAmosOrgId, amosOrgId) LambdaQueryWrapper<OrgUsr> wrapper = new LambdaQueryWrapper<>();
.eq(OrgUsr::getIsDelete, Boolean.FALSE); wrapper.eq(OrgUsr::getAmosOrgId, amosOrgId)
OrgUsr one = orgUsrServiceImpl.getOne(wrapper); .eq(OrgUsr::getIsDelete, Boolean.FALSE);
if (ObjectUtils.isEmpty(one)) { OrgUsr one = orgUsrServiceImpl.getOne(wrapper);
one = new OrgUsr(); if (ObjectUtils.isEmpty(one)) {
} one = new OrgUsr();
OrgUsr parentOne = new OrgUsr(); }
String companyId = ""; OrgUsr parentOne = new OrgUsr();
if (OrgEnum.普通人员.getKey().equals(orgType)) { String companyId = "";
JSONObject companys = JSON.parseObject(JSON.toJSONString(jsonObject.get("orgRoleSeqs"))); if (OrgEnum.普通人员.getKey().equals(orgType)) {
if (CollectionUtils.isEmpty(companys)) { JSONObject companys = JSON.parseObject(JSON.toJSONString(jsonObject.get("orgRoleSeqs")));
return; if (CollectionUtils.isEmpty(companys)) {
} else { return;
for (Map.Entry<String, Object> stringObjectEntry : companys.entrySet()) { } else {
companyId = stringObjectEntry.getKey(); for (Map.Entry<String, Object> stringObjectEntry : companys.entrySet()) {
break; companyId = stringObjectEntry.getKey();
} break;
}
// JSONObject parentJson = JSON.parseObject(JSON.toJSONString(companys)); // JSONObject parentJson = JSON.parseObject(JSON.toJSONString(companys));
// companyId = parentJson.getString("sequenceNbr"); // companyId = parentJson.getString("sequenceNbr");
}
} else {
companyId = jsonObject.getString("myParentId");
if (companyId.length() < 10) {
companyId = jsonObject.getString("companySeq");
}
} }
} else { if (!StringUtils.isEmpty(companyId)) {
companyId = jsonObject.getString("myParentId"); LambdaQueryWrapper<OrgUsr> wrapper2 = new LambdaQueryWrapper<>();
if (companyId.length() < 10) { wrapper2.eq(OrgUsr::getAmosOrgId, companyId)
companyId = jsonObject.getString("companySeq"); .eq(OrgUsr::getIsDelete, Boolean.FALSE);
parentOne = orgUsrServiceImpl.getOne(wrapper2);
} }
} if (!OrgEnum.公司.getKey().equals(orgType) && ObjectUtils.isEmpty(parentOne)) {
if (!StringUtils.isEmpty(companyId)) { throw new BadRequest("数据不完整");
LambdaQueryWrapper<OrgUsr> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(OrgUsr::getAmosOrgId, companyId)
.eq(OrgUsr::getIsDelete, Boolean.FALSE);
parentOne = orgUsrServiceImpl.getOne(wrapper2);
}
if (!OrgEnum.公司.getKey().equals(orgType) && ObjectUtils.isEmpty(parentOne)) {
throw new BadRequest("数据不完整");
}
one.setBizOrgName(jsonObject.getString("realName"));
if (ValidationUtil.isEmpty(one.getBizOrgName())) {
one.setBizOrgName(jsonObject.getString("companyName"));
one.setOrgExpandAttr1(CompanyTypeEnum.registerNameMap.get(jsonObject.getString("companyType")));
}
if (ValidationUtil.isEmpty(one.getBizOrgName())) {
one.setBizOrgName(jsonObject.getString("departmentName"));
}
if (StringUtils.isEmpty(one.getBizOrgCode())) {
if (OrgEnum.公司.getKey().equals(orgType)) {
one.setBizOrgCode(!ObjectUtils.isEmpty(parentOne) ? parentOne.getBizOrgCode() + getOrgCodeStr() : getOrgCodeStr());
} else if (OrgEnum.部门.getKey().equals(orgType)) {
one.setBizOrgCode(parentOne.getBizOrgCode() + getOrgCodeStr());
} }
} one.setBizOrgName(jsonObject.getString("realName"));
if (OrgEnum.普通人员.getKey().equals(orgType)) { if (ValidationUtil.isEmpty(one.getBizOrgName())) {
LambdaQueryWrapper<OrgUsr> wrapper3 = new LambdaQueryWrapper<>(); one.setBizOrgName(jsonObject.getString("companyName"));
wrapper3.eq(OrgUsr::getAmosOrgId, companyId) one.setOrgExpandAttr1(CompanyTypeEnum.registerNameMap.get(jsonObject.getString("companyType")));
.eq(OrgUsr::getIsDelete, Boolean.FALSE); }
OrgUsr one1 = orgUsrServiceImpl.getOne(wrapper3); if (ValidationUtil.isEmpty(one.getBizOrgName())) {
one.setBizOrgCode(one1.getBizOrgCode() + getOrgCodeStr()); one.setBizOrgName(jsonObject.getString("departmentName"));
if (OrgEnum.部门.getKey().equals(one1.getBizOrgType())) { }
//向部门添加人员 if (StringUtils.isEmpty(one.getBizOrgCode())) {
isCharge = true; if (OrgEnum.公司.getKey().equals(orgType)) {
} else { one.setBizOrgCode(!ObjectUtils.isEmpty(parentOne) ? parentOne.getBizOrgCode() + getOrgCodeStr() : getOrgCodeStr());
//如果是修改 如果这个人之前是部门负责人,现在去掉负责人。 } else if (OrgEnum.部门.getKey().equals(orgType)) {
LambdaQueryWrapper<OrgUsr> orgUsrWrappers = new LambdaQueryWrapper<>(); one.setBizOrgCode(parentOne.getBizOrgCode() + getOrgCodeStr());
orgUsrWrappers.eq(OrgUsr::getBizOrgName, one.getBizOrgName()); }
OrgUsr orgUsr = orgUsrServiceImpl.getOne(orgUsrWrappers); }
if (!ValidationUtil.isEmpty(orgUsr)) { if (OrgEnum.普通人员.getKey().equals(orgType)) {
orgUsr = orgUsrServiceImpl.getById(orgUsr.getParentId()); LambdaQueryWrapper<OrgUsr> wrapper3 = new LambdaQueryWrapper<>();
if (OrgEnum.部门.getKey().equals(orgUsr.getBizOrgType())) { wrapper3.eq(OrgUsr::getAmosOrgId, companyId)
String deptId = String.valueOf(orgUsr.getSequenceNbr()); .eq(OrgUsr::getIsDelete, Boolean.FALSE);
LambdaQueryWrapper<DynamicFormInstance> queryWrapper = new LambdaQueryWrapper<>(); OrgUsr one1 = orgUsrServiceImpl.getOne(wrapper3);
queryWrapper.eq(DynamicFormInstance::getFieldCode, "charge").eq(DynamicFormInstance::getInstanceId, deptId); one.setBizOrgCode(one1.getBizOrgCode() + getOrgCodeStr());
DynamicFormInstance instance = alertFormValueServiceImpl.getOne(queryWrapper); if (OrgEnum.部门.getKey().equals(one1.getBizOrgType())) {
String obj = instance.getFieldValue(); //向部门添加人员
List list = new ArrayList(); isCharge = true;
if (!ValidationUtil.isEmpty(obj)) { } else {
list = JSON.parseObject(obj, ArrayList.class); //如果是修改 如果这个人之前是部门负责人,现在去掉负责人。
} LambdaQueryWrapper<OrgUsr> orgUsrWrappers = new LambdaQueryWrapper<>();
Long personId = one.getSequenceNbr(); orgUsrWrappers.eq(OrgUsr::getBizOrgName, one.getBizOrgName());
if (list.contains(personId)) { OrgUsr orgUsr = orgUsrServiceImpl.getOne(orgUsrWrappers);
list.remove(personId); if (!ValidationUtil.isEmpty(orgUsr)) {
instance.setFieldValue(JSON.toJSONString(list)); orgUsr = orgUsrServiceImpl.getById(orgUsr.getParentId());
alertFormValueServiceImpl.update(instance, queryWrapper); if (OrgEnum.部门.getKey().equals(orgUsr.getBizOrgType())) {
String deptId = String.valueOf(orgUsr.getSequenceNbr());
LambdaQueryWrapper<DynamicFormInstance> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DynamicFormInstance::getFieldCode, "charge").eq(DynamicFormInstance::getInstanceId, deptId);
DynamicFormInstance instance = alertFormValueServiceImpl.getOne(queryWrapper);
String obj = instance.getFieldValue();
List list = new ArrayList();
if (!ValidationUtil.isEmpty(obj)) {
list = JSON.parseObject(obj, ArrayList.class);
}
Long personId = one.getSequenceNbr();
if (list.contains(personId)) {
list.remove(personId);
instance.setFieldValue(JSON.toJSONString(list));
alertFormValueServiceImpl.update(instance, queryWrapper);
}
} }
} }
} }
} }
} one.setAmosOrgId(amosOrgId);
one.setAmosOrgId(amosOrgId); one.setAmosOrgCode("");
one.setAmosOrgCode(""); one.setBizOrgType(orgType);
one.setBizOrgType(orgType); if (StringUtils.isEmpty(jsonObject.getString("myParentId"))) {
if (StringUtils.isEmpty(jsonObject.getString("myParentId"))) { one.setParentId(ObjectUtils.isEmpty(parentOne) ? null : String.valueOf(parentOne.getSequenceNbr()));
one.setParentId(ObjectUtils.isEmpty(parentOne) ? null : String.valueOf(parentOne.getSequenceNbr())); }
} orgUsrServiceImpl.saveOrUpdate(one);
orgUsrServiceImpl.saveOrUpdate(one); if (isCharge) {
if (isCharge) { //向部门添加负责人
//向部门添加负责人 JSONArray roleSeqs = jsonObject.getJSONObject("orgRoleSeqs").getJSONArray(companyId);
JSONArray roleSeqs = jsonObject.getJSONObject("orgRoleSeqs").getJSONArray(companyId); LambdaQueryWrapper<OrgUsr> wrapper1 = new LambdaQueryWrapper<>();
LambdaQueryWrapper<OrgUsr> wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(OrgUsr::getAmosOrgId, companyId);
wrapper1.eq(OrgUsr::getAmosOrgId, companyId); OrgUsr orgUsr = orgUsrServiceImpl.getOne(wrapper1);
OrgUsr orgUsr = orgUsrServiceImpl.getOne(wrapper1); if (!ValidationUtil.isEmpty(orgUsr)) {
if (!ValidationUtil.isEmpty(orgUsr)) { String deptId = String.valueOf(orgUsr.getSequenceNbr());
String deptId = String.valueOf(orgUsr.getSequenceNbr()); LambdaQueryWrapper<DynamicFormInstance> queryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<DynamicFormInstance> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(DynamicFormInstance::getFieldCode, "charge").eq(DynamicFormInstance::getInstanceId, deptId);
queryWrapper.eq(DynamicFormInstance::getFieldCode, "charge").eq(DynamicFormInstance::getInstanceId, deptId); DynamicFormInstance instance = alertFormValueServiceImpl.getOne(queryWrapper);
DynamicFormInstance instance = alertFormValueServiceImpl.getOne(queryWrapper); String obj = instance.getFieldValue();
String obj = instance.getFieldValue(); List list = new ArrayList();
List list = new ArrayList(); if (!ValidationUtil.isEmpty(obj)) {
if (!ValidationUtil.isEmpty(obj)) { list = JSON.parseObject(obj, ArrayList.class);
list = JSON.parseObject(obj, ArrayList.class);
}
Long personId = one.getSequenceNbr();
if (roleSeqs.contains(chargeRoleSeq)) {
if (!list.contains(personId)) {
list.add(personId);
} }
} else { Long personId = one.getSequenceNbr();
if (list.contains(personId)) { if (roleSeqs.contains(chargeRoleSeq)) {
list.remove(personId); if (!list.contains(personId)) {
list.add(personId);
}
} else {
if (list.contains(personId)) {
list.remove(personId);
}
} }
instance.setFieldValue(JSON.toJSONString(list));
alertFormValueServiceImpl.update(instance, queryWrapper);
} }
instance.setFieldValue(JSON.toJSONString(list));
alertFormValueServiceImpl.update(instance, queryWrapper);
} }
}
JSONObject jsonObjectFormColumn = new JSONObject(); JSONObject jsonObjectFormColumn = new JSONObject();
if (OrgEnum.公司.getKey().equals(orgType)) { if (OrgEnum.公司.getKey().equals(orgType)) {
jsonObjectFormColumn.put("name", jsonObject.getString("companyName")); jsonObjectFormColumn.put("name", jsonObject.getString("companyName"));
jsonObjectFormColumn.put("type", jsonObject.getString("companyType")); jsonObjectFormColumn.put("type", jsonObject.getString("companyType"));
jsonObjectFormColumn.put("creditCode", jsonObject.getString("companyCode")); jsonObjectFormColumn.put("creditCode", jsonObject.getString("companyCode"));
jsonObjectFormColumn.put("address", jsonObject.getString("address")); jsonObjectFormColumn.put("address", jsonObject.getString("address"));
jsonObjectFormColumn.put("contact", jsonObject.getString("contact")); jsonObjectFormColumn.put("contact", jsonObject.getString("contact"));
jsonObjectFormColumn.put("contactPhone", jsonObject.getString("landlinePhone")); jsonObjectFormColumn.put("contactPhone", jsonObject.getString("landlinePhone"));
jsonObjectFormColumn.put("orgCode", jsonObject.getString("orgCode")); jsonObjectFormColumn.put("orgCode", jsonObject.getString("orgCode"));
} else if (OrgEnum.普通人员.getKey().equals(orgType)) { } else if (OrgEnum.普通人员.getKey().equals(orgType)) {
jsonObjectFormColumn.put("name", jsonObject.getString("realName")); jsonObjectFormColumn.put("name", jsonObject.getString("realName"));
jsonObjectFormColumn.put("phone", jsonObject.getString("mobile")); jsonObjectFormColumn.put("phone", jsonObject.getString("mobile"));
} else if (OrgEnum.部门.getKey().equals(orgType)) { } else if (OrgEnum.部门.getKey().equals(orgType)) {
jsonObjectFormColumn.put("name", one.getBizOrgName()); jsonObjectFormColumn.put("name", one.getBizOrgName());
} }
//条件构造器 找出column表种 类型为(COMPANY 或 DEPARTMENT 或 PERSON)的列 //条件构造器 找出column表种 类型为(COMPANY 或 DEPARTMENT 或 PERSON)的列
LambdaQueryWrapper<DynamicFormColumn> wrapper2 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DynamicFormColumn> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(DynamicFormColumn::getGroupCode, orgType); wrapper2.eq(DynamicFormColumn::getGroupCode, orgType);
List<DynamicFormColumn> dynamicFormColumnList = dynamicFormColumnServiceImpl.list(wrapper2); List<DynamicFormColumn> dynamicFormColumnList = dynamicFormColumnServiceImpl.list(wrapper2);
List<DynamicFormInstance> dynamicFormInstanceList = new ArrayList<>(); List<DynamicFormInstance> dynamicFormInstanceList = new ArrayList<>();
Map<String, Long> map = new HashMap<>(); Map<String, Long> map = new HashMap<>();
for (DynamicFormColumn dynamicFormColumn : dynamicFormColumnList) { for (DynamicFormColumn dynamicFormColumn : dynamicFormColumnList) {
//将column表的基本字段信息给instance表 //将column表的基本字段信息给instance表
DynamicFormInstance dynamicFormInstance = new DynamicFormInstance(); DynamicFormInstance dynamicFormInstance = new DynamicFormInstance();
BeanUtils.copyProperties(dynamicFormColumn, dynamicFormInstance); BeanUtils.copyProperties(dynamicFormColumn, dynamicFormInstance);
dynamicFormInstance.setFormColumnId(dynamicFormColumn.getSequenceNbr()); dynamicFormInstance.setFormColumnId(dynamicFormColumn.getSequenceNbr());
//通过字段名去拿到表单传来的值 //通过字段名去拿到表单传来的值
if ("image".equals(dynamicFormColumn.getFieldCode())) { if ("image".equals(dynamicFormColumn.getFieldCode())) {
if (!ValidationUtil.isEmpty(jsonObjectFormColumn.getJSONArray(dynamicFormInstance.getFieldCode()))) { if (!ValidationUtil.isEmpty(jsonObjectFormColumn.getJSONArray(dynamicFormInstance.getFieldCode()))) {
dynamicFormInstance.setFieldValue(JSON.toJSONString(jsonObjectFormColumn.getJSONArray(dynamicFormInstance.getFieldCode()))); dynamicFormInstance.setFieldValue(JSON.toJSONString(jsonObjectFormColumn.getJSONArray(dynamicFormInstance.getFieldCode())));
}
} else {
dynamicFormInstance.setFieldValue(jsonObjectFormColumn.getString(dynamicFormInstance.getFieldCode()));
} }
} else { dynamicFormInstance.setInstanceId(one.getSequenceNbr());
dynamicFormInstance.setFieldValue(jsonObjectFormColumn.getString(dynamicFormInstance.getFieldCode())); dynamicFormInstance.setSequenceNbr(null);
dynamicFormInstanceList.add(dynamicFormInstance);
} }
dynamicFormInstance.setInstanceId(one.getSequenceNbr()); //如果sequenceNbr有值(更新)
dynamicFormInstance.setSequenceNbr(null); if (!ValidationUtil.isEmpty(one.getSequenceNbr())) {
dynamicFormInstanceList.add(dynamicFormInstance); LambdaQueryWrapper<DynamicFormInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>();
} lambdaQueryWrapper.eq(DynamicFormInstance::getInstanceId, one.getSequenceNbr());
//如果sequenceNbr有值(更新) List<DynamicFormInstance> instanceList = alertFormValueServiceImpl.list(lambdaQueryWrapper);
if (!ValidationUtil.isEmpty(one.getSequenceNbr())) { //如果instance表中有值
LambdaQueryWrapper<DynamicFormInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>(); if (!ValidationUtil.isEmpty(instanceList)) {
lambdaQueryWrapper.eq(DynamicFormInstance::getInstanceId, one.getSequenceNbr()); //将查到的instance信息装到map中
List<DynamicFormInstance> instanceList = alertFormValueServiceImpl.list(lambdaQueryWrapper); for (DynamicFormInstance dynamicFormInstance : instanceList) {
//如果instance表中有值 map.put(dynamicFormInstance.getFieldCode(), dynamicFormInstance.getSequenceNbr());
if (!ValidationUtil.isEmpty(instanceList)) { }
//将查到的instance信息装到map中 //将查到的instance信息中的sequenceNbr装到更新之后的表中。
for (DynamicFormInstance dynamicFormInstance : instanceList) { for (DynamicFormInstance dynamicFormInstance : dynamicFormInstanceList) {
map.put(dynamicFormInstance.getFieldCode(), dynamicFormInstance.getSequenceNbr()); dynamicFormInstance.setSequenceNbr(map.get(dynamicFormInstance.getFieldCode()));
} }
//将查到的instance信息中的sequenceNbr装到更新之后的表中。
for (DynamicFormInstance dynamicFormInstance : dynamicFormInstanceList) {
dynamicFormInstance.setSequenceNbr(map.get(dynamicFormInstance.getFieldCode()));
} }
} }
//保存或更新 根据sequenceNbr
alertFormValueServiceImpl.saveOrUpdateBatch(dynamicFormInstanceList);
} else {
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
saveOrUpdateUser(jsonObject, orgType);
} }
//保存或更新 根据sequenceNbr }catch (Exception e) {
alertFormValueServiceImpl.saveOrUpdateBatch(dynamicFormInstanceList); e.printStackTrace();
redisTemplate.delete("lock"); } finally {
}else { if(lock) {
try{ redisTemplate.delete("lock");
Thread.sleep(100);
} catch (Exception e){
e.printStackTrace();
} }
saveOrUpdateUser(jsonObject, orgType);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment