Commit b0852bca authored by zhangyingbin's avatar zhangyingbin

解决redis锁死锁问题

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