| | |
| | | package com.highdatas.mdm.controller; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.fasterxml.jackson.databind.DeserializationFeature; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.highdatas.mdm.entity.MenuMapping; |
| | | import com.highdatas.mdm.entity.SysField; |
| | | import com.highdatas.mdm.entity.SysMenu; |
| | | import com.highdatas.mdm.entity.*; |
| | | import com.highdatas.mdm.mapper.SysFieldMapper; |
| | | import com.highdatas.mdm.pojo.ActivitiStatus; |
| | | import com.highdatas.mdm.pojo.CodeMsg; |
| | | import com.highdatas.mdm.pojo.Operate; |
| | | import com.highdatas.mdm.pojo.Result; |
| | | import com.highdatas.mdm.service.IMenuMappingService; |
| | | import com.highdatas.mdm.service.ISysFieldService; |
| | | import com.highdatas.mdm.service.ISysMenuService; |
| | | import com.highdatas.mdm.service.*; |
| | | import com.highdatas.mdm.util.Constant; |
| | | import com.highdatas.mdm.util.DbUtils; |
| | | import com.highdatas.mdm.util.WorkflowUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.awt.*; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpSession; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | @Autowired |
| | | ISysMenuService menuService; |
| | | @Autowired |
| | | IMaintainService maintainService; |
| | | @Autowired |
| | | IMenuMappingService menuMappingService; |
| | | |
| | | @Autowired |
| | | IMaintainFieldService maintainFieldService; |
| | | @Autowired |
| | | SysFieldMapper fieldMapper; |
| | | @Autowired |
| | | IFlowsService flowsService; |
| | | |
| | | @RequestMapping(value = "/{tableName}", method = RequestMethod.GET) |
| | | public Result todoTask(@PathVariable String tableName){ |
| | | if (StringUtils.isEmpty(tableName)) { |
| | | return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); |
| | | } |
| | | List<SysField> fieldList = fieldService.selectList(new EntityWrapper<SysField>().eq("table_name", tableName).orderBy("order_no")); |
| | | public Result getFields(@PathVariable String tableName, HttpServletRequest request){ |
| | | String maintainId = request.getParameter("maintainId"); |
| | | if (StringUtils.isEmpty(maintainId)) { |
| | | List<SysField> fieldList = fieldService.getFieldByTable(tableName); |
| | | return Result.success(fieldList); |
| | | }else { |
| | | |
| | | List<SysField> fieldList = fieldService.getFieldByMaintain(maintainId); |
| | | return Result.success(fieldList); |
| | | } |
| | | |
| | | } |
| | | |
| | | @RequestMapping(value = "total/{tableName}", method = RequestMethod.GET) |
| | | public Result getTotalFields(@PathVariable String tableName, HttpServletRequest request){ |
| | | return fieldService.getTotalFields(tableName); |
| | | } |
| | | |
| | | @RequestMapping(value = "fix/{tableName}", method = RequestMethod.GET) |
| | | public Result fix(@PathVariable String tableName, HttpServletRequest request){ |
| | | Result totalFields = fieldService.getTotalFields(tableName); |
| | | JSONObject data = (JSONObject) totalFields.getData(); |
| | | data.fluentPut("aduit", true); |
| | | return totalFields; |
| | | } |
| | | |
| | | @RequestMapping(value = "/menu/{id}", method = RequestMethod.GET) |
| | | public Result getFieldByMenu(@PathVariable String id){ |
| | | MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", id)); |
| | |
| | | e.printStackTrace(); |
| | | return Result.error(CodeMsg.UPDATE_ERROR); |
| | | } |
| | | |
| | | } |
| | | |
| | | @RequestMapping(value = "/updateCommon/{id}", method = RequestMethod.GET) |
| | | public Result addOrUpdate(@PathVariable String id, HttpServletRequest request) { |
| | | //更新基础参数不需要关联版本 |
| | | SysField sysField = fieldService.selectById(id); |
| | | if (sysField == null) { |
| | | return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); |
| | | } |
| | | String width = request.getParameter("width"); |
| | | String align = request.getParameter("align"); |
| | | String orderNoStr = request.getParameter("orderNo"); |
| | | String desp = request.getParameter("desp"); |
| | | if (!StringUtils.isEmpty(width)) { |
| | | sysField.setWidth(Integer.valueOf(width)); |
| | | } |
| | | if (!StringUtils.isEmpty(desp)) { |
| | | sysField.setDesp(desp); |
| | | } |
| | | if (!StringUtils.isEmpty(align)) { |
| | | sysField.setAlign(align); |
| | | } |
| | | //orderno |
| | | if (!StringUtils.isEmpty(orderNoStr)) { |
| | | Integer preOrderNo = sysField.getOrderNo(); |
| | | Integer orderNo = Integer.valueOf(orderNoStr); |
| | | String maintainId = sysField.getMaintainFieldId(); |
| | | String maintainParams; |
| | | if (StringUtils.isEmpty(maintainId)) { |
| | | //初始状态 |
| | | String tableName = sysField.getTableName(); |
| | | maintainParams = "maintain_id is null and table_name = " + DbUtils.quotedStr(tableName); |
| | | }else { |
| | | maintainParams = "maintain_id = " + DbUtils.quotedStr(maintainId); |
| | | } |
| | | Integer updateSize; |
| | | if (preOrderNo > orderNo) { |
| | | //往前调 |
| | | updateSize = fieldMapper.updateOrderNoFront(maintainParams,orderNo, preOrderNo); |
| | | }else { |
| | | updateSize = fieldMapper.updateOrderNoBack(maintainParams,orderNo, preOrderNo); |
| | | } |
| | | if (updateSize == null) { |
| | | return Result.error(CodeMsg.UPDATE_ERROR); |
| | | } |
| | | } |
| | | boolean update = sysField.updateById(); |
| | | if (update) { |
| | | return Result.success(sysField); |
| | | }else { |
| | | return Result.error(CodeMsg.UPDATE_ERROR); |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "/change", method = RequestMethod.POST) |
| | | public Result addOrUpdate(@RequestBody SysField sysField, HttpServletRequest request) { |
| | | Operate operate = sysField.getOperate(); |
| | | if (operate.equals(Operate.update)) { |
| | | String id = sysField.getId(); |
| | | SysField field = fieldService.selectById(id); |
| | | if (field == null) { |
| | | return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); |
| | | } |
| | | boolean visiableEqual = field.getVisible().equals(sysField.getVisible()); |
| | | boolean aliasEqual = field.getAlias().equals(sysField.getAlias()); |
| | | boolean codeEqual = field.getCode().equals(sysField.getCode()); |
| | | String updateFormat = field.getFormat(); |
| | | String preFormat = sysField.getFormat(); |
| | | boolean formatterEqual; |
| | | if (StringUtils.isEmpty(updateFormat) && StringUtils.isEmpty(preFormat)) { |
| | | formatterEqual = true; |
| | | }else if(!StringUtils.isEmpty(updateFormat) && !StringUtils.isEmpty(preFormat) && updateFormat.equalsIgnoreCase(preFormat)){ |
| | | formatterEqual = true; |
| | | }else { |
| | | formatterEqual = false; |
| | | } |
| | | if (visiableEqual && aliasEqual && codeEqual && formatterEqual) { |
| | | // 仅修改普通状态 |
| | | boolean updated = fieldService.updateCommon(field, sysField); |
| | | if (!updated){ |
| | | return Result.error(CodeMsg.UPDATE_ERROR); |
| | | }else { |
| | | field = fieldService.selectById(id); |
| | | return Result.success(field); |
| | | } |
| | | } |
| | | } |
| | | MaintainField maxVersion = maintainFieldService.getMaxVersion(sysField.getTableName()); |
| | | String maintainId = maxVersion.getId(); |
| | | MaintainField nowMaintain = null; |
| | | HttpSession session = request.getSession(); |
| | | TUser user = (TUser) session.getAttribute("user"); |
| | | String userId = user.getUserId(); |
| | | |
| | | if (operate.equals(Operate.create) || operate.equals(Operate.update)) { |
| | | String alias = sysField.getAlias(); |
| | | List<SysField> fieldByMaintainField; |
| | | if (nowMaintain == null) { |
| | | fieldByMaintainField = fieldService.getFieldByTable(sysField.getTableName()); |
| | | } |
| | | else { |
| | | fieldByMaintainField = fieldService.getFieldByMaintainField(nowMaintain.getId()); |
| | | } |
| | | long count = fieldByMaintainField.stream() |
| | | .filter(sysField1 -> !sysField1.getId().equalsIgnoreCase(sysField.getId())) |
| | | .filter(maintainField -> maintainField.getAlias().equals(alias)).count(); |
| | | if (count > 0) { |
| | | //中文名相同 |
| | | return Result.error(new CodeMsg(8001, "显示名称相同")); |
| | | } |
| | | } |
| | | if (StringUtils.isEmpty(maintainId)) { |
| | | //创建新版本的字段 |
| | | nowMaintain = flowsService.createNowVerion(sysField.getTableName(), maintainId, userId); |
| | | if (nowMaintain == null) { |
| | | return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); |
| | | } |
| | | //设置成新的版本 |
| | | sysField.setMaintainFieldId(nowMaintain.getId()); |
| | | |
| | | }else { |
| | | Flows flows = flowsService.selectOne(new EntityWrapper<Flows>().eq("business_id", maintainId)); |
| | | if (flows != null){ |
| | | //当前已审批 |
| | | ActivitiStatus status = flows.getStatus(); |
| | | Boolean refused = sysField.getRefused(); |
| | | if (refused != null && refused && status.equals(ActivitiStatus.refuse)){ |
| | | nowMaintain = maintainFieldService.selectById(maintainId); |
| | | }else { |
| | | if (status.equals(ActivitiStatus.open) || status.equals(ActivitiStatus.close)) { |
| | | nowMaintain = flowsService.createNowVerion(sysField.getTableName(), maintainId, userId); |
| | | sysField.setMaintainFieldId(nowMaintain.getId()); |
| | | }else { |
| | | return Result.error(new CodeMsg(7002, "当前字段版本正在审批,请待审批通过后再修改")); |
| | | } |
| | | } |
| | | |
| | | }else { |
| | | nowMaintain = maintainFieldService.selectById(maintainId); |
| | | } |
| | | |
| | | } |
| | | if (nowMaintain == null) { |
| | | return Result.error(CodeMsg.OPERATR_ERROR); |
| | | } |
| | | //更新当前实体为新版本对应的id |
| | | |
| | | |
| | | if (operate.equals(Operate.create)) { |
| | | // create field |
| | | String alias = sysField.getAlias(); |
| | | String chineseOrEnglishOrNumber = DbUtils.getChineseOrEnglishOrNumber(alias); |
| | | String field = WorkflowUtils.toFirstChar(chineseOrEnglishOrNumber); |
| | | SysField oneFieldByMaintainField = fieldService.getOneFieldByMaintainField(nowMaintain.getId(), field); |
| | | if (oneFieldByMaintainField != null){ |
| | | //field 有相同的 |
| | | field = field + Constant.UnderLine + DbUtils.getUUID(5); |
| | | } |
| | | |
| | | sysField.setField(field); |
| | | sysField.setMaintainFieldId(nowMaintain.getId()); |
| | | sysField.setId(DbUtils.getUUID()); |
| | | sysField.setCreateTime(new Date()); |
| | | sysField.insert(); |
| | | // 主表中需新增字段 |
| | | } |
| | | else if(operate.equals(Operate.update)) { |
| | | SysField relatedField = fieldService.getOneFieldByMaintainField(nowMaintain.getId(), sysField.getField()); |
| | | if (relatedField == null) { |
| | | return Result.error(CodeMsg.OPERATR_ERROR); |
| | | } |
| | | Boolean refused = sysField.getRefused(); |
| | | SysField field = fieldService.selectById(sysField.getId()); |
| | | Operate perOperate = field.getOperate(); |
| | | if (Operate.create.equals(perOperate) && refused != null && refused) { |
| | | sysField.setOperate(Operate.create); |
| | | } |
| | | sysField.setId(relatedField.getId()); |
| | | sysField.setMaintainFieldId(relatedField.getMaintainFieldId()); |
| | | sysField.setUpdateTime(new Date()); |
| | | sysField.updateById(); |
| | | } |
| | | else if(operate.equals(Operate.delete)) { |
| | | SysField relatedField = fieldService.getOneFieldByMaintainField(nowMaintain.getId(), sysField.getField()); |
| | | if (relatedField == null) { |
| | | return Result.error(CodeMsg.OPERATR_ERROR); |
| | | } |
| | | |
| | | sysField.setId(relatedField.getId()); |
| | | sysField.setMaintainFieldId(relatedField.getMaintainFieldId()); |
| | | |
| | | Boolean refused = sysField.getRefused(); |
| | | SysField field = fieldService.selectById(sysField.getId()); |
| | | Operate perOperate = field.getOperate(); |
| | | |
| | | if (refused != null && refused && perOperate != null){ |
| | | sysField.deleteById(); |
| | | }else { |
| | | sysField.updateById(); |
| | | } |
| | | |
| | | } |
| | | nowMaintain.insertOrUpdate(); |
| | | return Result.success(sysField); |
| | | } |
| | | |
| | | } |