kimi
2020-03-24 b5636e416a2fe029f96aec6ddfd3489394925b15
src/main/java/com/highdatas/mdm/controller/SysFieldController.java
@@ -15,6 +15,7 @@
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import com.highdatas.mdm.util.WorkflowUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -32,6 +33,7 @@
 * @author kimi
 * @since 2019-12-16
 */
@Slf4j
@RestController
@RequestMapping("/field")
public class SysFieldController {
@@ -64,9 +66,15 @@
    }
    @RequestMapping(value = "total/{tableName}", method = RequestMethod.GET)
    public Result getTotalFields(@PathVariable String tableName, HttpServletRequest request){
        return fieldService.getTotalFields(tableName);
    @RequestMapping(value = "total/{tableName}/{pageNo}", method = RequestMethod.GET)
    public Result getTotalFields(@PathVariable String tableName,@PathVariable Integer pageNo, HttpServletRequest request){
        String pageSize = request.getParameter("pageSize");
        if(StringUtils.isEmpty(pageSize)){
            return fieldService.getTotalFields(tableName, pageNo, 15);
        }else  {
            return fieldService.getTotalFields(tableName, pageNo, Integer.valueOf(pageSize));
        }
    }
    @RequestMapping(value = "fix/{tableName}", method = RequestMethod.GET)
@@ -76,6 +84,7 @@
        data.fluentPut("aduit", true);
        return totalFields;
    }
    @RequestMapping(value = "/menu/{id}", method = RequestMethod.GET)
    public Result getFieldByMenu(@PathVariable String id){
@@ -87,8 +96,7 @@
        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"));
        List<SysField> fieldList = fieldService.getFieldByTable(tableName);
        return Result.success(fieldList);
    }
@@ -160,9 +168,142 @@
        }
    }
    @RequestMapping(value = "/loadFields", method = RequestMethod.POST)
    public Result loadFields(@RequestBody String fieldListStr, HttpServletRequest request)  {
        log.info(fieldListStr);
        List<SysField> fieldList = JSONObject.parseArray(fieldListStr,SysField.class);
        if (fieldList.size() == 0) {
            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
        }
        String tableName = fieldList.get(0).getTableName();
        if (StringUtils.isEmpty(tableName)) {
            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
        }
        String maintainId = null;
        MaintainField maxVersion = maintainFieldService.getMaxVersion(tableName);
        if (maxVersion != null) {
            maintainId = maxVersion.getId();
        }
        MaintainField nowMaintain = null;
        HttpSession session = request.getSession();
        TUser user = (TUser) session.getAttribute("user");
        String userId = user.getUserId();
        Maintain dataMaintainMax = maintainService.getMaxVersion(tableName);
        if (StringUtils.isEmpty(maintainId)) {
            //创建新版本的字段
            nowMaintain = flowsService.createNowVerion(tableName, maintainId, userId);
            if (nowMaintain == null && dataMaintainMax != null) {
                return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
            }
        }else {
            Flows flows = flowsService.selectOne(new EntityWrapper<Flows>().eq("business_id", maintainId));
            if (flows != null){
                //当前已审批
                ActivitiStatus status = flows.getStatus();
                if (status.equals(ActivitiStatus.open) || status.equals(ActivitiStatus.close)) {
                    nowMaintain = flowsService.createNowVerion(tableName, maintainId, userId);
                }else {
                    return Result.error(new CodeMsg(7002, "当前字段版本正在审批,请待审批通过后再修改"));
                }
            }else {
                //delete
                fieldService.delete(new EntityWrapper<SysField>().eq("maintain_field_id",maintainId));
                nowMaintain = maintainFieldService.selectById(maintainId);
            }
        }
        String nowMaintainId;
        if (dataMaintainMax == null) {
            nowMaintainId = null;
        }else {
            nowMaintainId = nowMaintain.getId();
        }
        if (StringUtils.isEmpty(nowMaintainId)) {
            //第一次默认都清空
            fieldService.delete(new EntityWrapper<SysField>().isNull("maintain_field_id").eq("table_name", tableName));
        }
        for (int i = 0; i < fieldList.size(); i++) {
            SysField sysField = fieldList.get(i);
            sysField.setCreateTime(new Date()).setId(DbUtils.getUUID()).setMaintainFieldId(nowMaintainId).setOrderNo(i).insert();
        }
        if (nowMaintain != null) {
            nowMaintain.insertOrUpdate();
        }
        return Result.success(null);
    }
    @RequestMapping(value = "/change", method = RequestMethod.POST)
    public Result addOrUpdate(@RequestBody SysField sysField, HttpServletRequest request)  {
        String tableName = sysField.getTableName();
        Maintain dataMaxVersion = maintainService.getMaxVersion(tableName);
        boolean isInit = false;
        if (dataMaxVersion == null) {
            isInit = true;
        }
        if (!StringUtils.isEmpty(sysField.getId())) {
            String id = sysField.getId();
            SysField field = fieldService.selectById(id);
            if (field != null){
                Operate operate = field.getOperate();
                if (operate != null) {
                    isInit = true;
                }
            }
        }
        Operate operate = sysField.getOperate();
        if (isInit && (operate.equals(Operate.update) || operate.equals(Operate.create))) {
            if (isInit) {
                if (StringUtils.isEmpty(sysField.getId())) {
                    sysField.setId(DbUtils.getUUID());
                }
                sysField.setOperate(null);
                boolean update = sysField.insertOrUpdate();
                if (update) {
                    return Result.success(CodeMsg.SUCCESS);
                }else {
                    return Result.error(CodeMsg.INSERT_ERROR);
                }
            }
        }
        if (isInit && operate.equals(Operate.delete)) {
            String maintainFieldId = sysField.getMaintainFieldId();
            boolean delete = sysField.deleteById();
            if (delete) {
                //删除后 判断是否有未提交的了
                if (StringUtils.isEmpty(maintainFieldId)) {
                    return Result.success(CodeMsg.SUCCESS);
                }
                List<SysField> fieldList = fieldService.selectList(new EntityWrapper<SysField>().eq("maintain_field_id", maintainFieldId));
                long count = fieldList.stream().filter(field -> field.getOperate() != null).count();
                if (count == 0) {
                    //说明 当前版本没有修改的字段了
                    delete = fieldService.delete(new EntityWrapper<SysField>().eq("maintain_field_id", maintainFieldId));
                    delete = maintainFieldService.deleteById(maintainFieldId);
                    if (delete) {
                        return Result.success(CodeMsg.SUCCESS);
                    }
                }
                return Result.success(CodeMsg.SUCCESS);
            }else {
                return Result.error(CodeMsg.DELETE_ERROR);
            }
        }
        if (operate.equals(Operate.update)) {
            String id = sysField.getId();
            SysField field = fieldService.selectById(id);
@@ -171,7 +312,16 @@
            }
            boolean visiableEqual = field.getVisible().equals(sysField.getVisible());
            boolean aliasEqual = field.getAlias().equals(sysField.getAlias());
            boolean codeEqual = field.getCode().equals(sysField.getCode());
            String updateCode = field.getCode();
            String preCode = sysField.getCode();
            boolean codeEqual;
            if (StringUtils.isEmpty(updateCode) && StringUtils.isEmpty(preCode)) {
                codeEqual = true;
            }else if(!StringUtils.isEmpty(updateCode) && !StringUtils.isEmpty(preCode) && updateCode.equalsIgnoreCase(preCode)){
                codeEqual = true;
            }else {
                codeEqual = false;
            }
            String updateFormat = field.getFormat();
            String preFormat = sysField.getFormat();
            boolean formatterEqual;
@@ -194,13 +344,18 @@
            }
        }
        MaintainField maxVersion = maintainFieldService.getMaxVersion(sysField.getTableName());
        String maintainId = maxVersion.getId();
        String maintainId = null;
        if(maxVersion != null) {
            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) {
@@ -289,6 +444,7 @@
            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);