kimi42345
2020-03-23 5bac93baf5659ce013163f884c9dce41990a860e
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){
@@ -161,6 +170,7 @@
    @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);
@@ -179,11 +189,13 @@
        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) {
            if (nowMaintain == null && dataMaintainMax != null) {
                return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
            }
@@ -204,17 +216,94 @@
                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()).setOperate(Operate.create).setMaintainFieldId(nowMaintain.getId()).setOrderNo(i).insert();
            sysField.setCreateTime(new Date()).setId(DbUtils.getUUID()).setMaintainFieldId(nowMaintainId).setOrderNo(i).insert();
        }
        nowMaintain.insertOrUpdate();
        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);
@@ -223,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;
@@ -246,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) {
@@ -341,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);