ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

一种自定义系统设置的方法,java代码

2020-02-28 21:07:37  阅读:198  来源: 互联网

标签:status 10 java 自定义 city 代码 02 rule VALUES


一个系统中,一些设置,可以局部自定义。默认情况下,数据库没有设置的。

表结构如下:

-- ----------------------------
-- Table structure for status
-- ----------------------------
DROP TABLE IF EXISTS `status`;
CREATE TABLE `status` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `label` varchar(255) DEFAULT NULL,
  `value` varchar(255) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `label` (`label`) USING BTREE,
  KEY `value` (`value`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of status
-- ----------------------------
INSERT INTO `status` VALUES ('1', 'risk.level', '{\"rule\":{\"province\":[40,60,100,450,1000],\"city\":[5,10,40,60,94],\"area\":[5,10,15,20,25]},\"colorThreshold\":[0,9,99,499,999,4999],\"colors\":[\"#69ae5d\",\"#fdea61\",\"#f19d39\",\"#e25141\",\"#901d14\"]}', '2020-02-26 10:49:54');
INSERT INTO `status` VALUES ('2', 'risk.weight.confirm', '80', '2020-02-28 19:03:16');
INSERT INTO `status` VALUES ('3', 'risk.weight.dead', '15', '2020-02-28 19:03:16');
INSERT INTO `status` VALUES ('4', 'risk.weight.heal', '5', '2020-02-28 19:03:16');
INSERT INTO `status` VALUES ('5', 'risk.updateTime', '{\'lastUpdateTime\':\'2020-02-23 13:43:18\'}', '2020-02-23 14:18:38');
INSERT INTO `status` VALUES ('6', 'risk.people.threshold', '[0,9,99,499,999,4999]', null);
INSERT INTO `status` VALUES ('7', 'risk.color.level0', '#69ae5d', '2020-02-27 10:22:01');
INSERT INTO `status` VALUES ('8', 'risk.color.level1', '#fdeb61', '2020-02-27 10:22:01');
INSERT INTO `status` VALUES ('9', 'risk.color.level2', '#f19e39', '2020-02-27 10:22:01');
INSERT INTO `status` VALUES ('10', 'risk.color.level3', '#e25141', '2020-02-27 10:22:01');
INSERT INTO `status` VALUES ('11', 'risk.color.level4', '#901c14', '2020-02-27 10:22:01');
INSERT INTO `status` VALUES ('12', 'risk.people.province', '[40, 60, 100, 450, 1000]', '2020-02-27 17:48:13');
INSERT INTO `status` VALUES ('13', 'risk.people.city', '[5, 10, 40, 60, 94]', '2020-02-27 17:48:13');
INSERT INTO `status` VALUES ('14', 'risk.people.area', '[5, 10, 15, 20, 25]', '2020-02-27 17:48:13');
INSERT INTO `status` VALUES ('15', 'risk.color', '{\"level0\":\"#b6d7a8\",\"level1\":\"#fdeb61\",\"level2\":\"#f19e39\",\"level3\":\"#e25141\",\"level4\":\"#901c14\"}', '2020-02-28 19:03:39');
INSERT INTO `status` VALUES ('16', 'lastUpdateTime', '2020-02-23 13:43:18', null);

其中一个json如下

{
    "rule": {
        "province": [
            40,
            60,
            100,
            450,
            1000
        ],
        "city": [
            5,
            10,
            40,
            60,
            94
        ],
        "area": [
            5,
            10,
            15,
            20,
            25
        ]
    },
    "colorThreshold": [
        0,
        9,
        99,
        499,
        999,
        4999
    ],
    "colors": [
        "#69ae5d",
        "#fdea61",
        "#f19d39",
        "#e25141",
        "#901d14"
    ]
}

以上json为例,在类中设计如下:

List<String> defaultColors = Arrays.asList("#69ae5d","#fdea61","#f19d39","#e25141","#901d14");

List<Integer> areaDefaultThreshold = Arrays.asList(5,10,15,20,25);
List<Integer> cityDefaultThreshold = Arrays.asList(5,10,40,60,94);
List<Integer> provinceDefaultThreshold = Arrays.asList(40,60,100,450,1000);
List<Integer> colorThreshold = Arrays.asList(0,9,99,499,999,4999);

@PostConstruct
public void init()
{

    defaultConfig = RiskLevel.builder()
            .colors(defaultColors)
            .colorThreshold(colorThreshold)
            .rule(Rule.builder()
                    .area(areaDefaultThreshold)
                    .city(cityDefaultThreshold)
                    .province(provinceDefaultThreshold)
                    .build())
            .build();
}

前端传来的json进行局部更新时,操作代码如下

@PostMapping("saveColors")
public ResponseEntity<Map> saveColors(@RequestBody RiskLevel riskLevel)
{
     List<String> colors = riskLevel.getColors();

        if(!CollectionUtils.isEmpty(colors)) {
            int cntColors = colors.size();
            for (int i = 0; i < cntColors; i++) {
                String color = colors.get(i);
                if (!StringUtils.isEmpty(color)) {
                    defaultConfig.getColors().set(i, color);
                }
            }
        }

        Rule rule = riskLevel.getRule();
        if(Objects.nonNull(rule)) {

            List<Integer> provinces = rule.getProvince();
            if(!CollectionUtils.isEmpty(provinces))
            {
                int cntProvinces = provinces.size();
                for (int i = 0; i < cntProvinces; i++) {
                    Integer province = provinces.get(i);
                    if(Objects.nonNull(province))
                    {
                        rule.getProvince().set(i,province);
                    }
                }
            }


            List<Integer> cities = rule.getCity();
            if(!CollectionUtils.isEmpty(cities))
            {
                int cntCities = cities.size();
                for (int i = 0; i < cntCities; i++) {
                    Integer city = cities.get(i);
                    if(Objects.nonNull(city))
                    {
                        rule.getCity().set(i, city);
                    }
                }
            }


            List<Integer> areas = rule.getArea();
            if(!CollectionUtils.isEmpty(areas))
            {
                int cntAreas = areas.size();
                for (int i = 0; i < cntAreas; i++) {
                    Integer city = areas.get(i);
                    if(Objects.nonNull(city))
                    {
                        rule.getArea().set(i, city);
                    }
                }
            }

            defaultConfig.setRule(rule);
        }


        riskService.updateLevel(defaultConfig);
        byteDanceDataService.updateWeight();
        return ResponseEntity.status(HttpStatus.OK).body(Collections.singletonMap("message","保存成功"));
    }

前端局部更新的javascript

在需要更新的颜色相对索引填入颜色数据,其他地方填入空字符串“”

$("#save").on('click',function () {

        var total = 0;
        var json = {};
        var rule= {};
        json.colors=[];
        $('.risklevel').each(function (index,elem){
            var hex = rgbToHex($("#color-picker"+(index+1)).css("background-color"));
            json.colors.splice(index,0,hex);
            total++;
        });
        // var length = rule.colors.length;
        //
        // for (var i = 0; i < length; i++)
        // {
        //     console.log(rule.colors[i]);
        // }

        var dists= [];
        var thresholds =[];

        $('.threshold').each(function (index,elem){
            var dist = $(this).val();
            dists.push(dist);
        });

        $('.value').each(function (index,elem){
            var threshold = $(this).val();
            thresholds.push(threshold);
        });

        ////{"rule":{"province":[40,60,100,451,1000],"city":[5,10,40,60,94],"area":[5,10,15,20,25]},"colors":["#69ae5d","#fdea61","#f19d39","#e25141","#901d14"]}



        var province=[];
        var city=[];
        var area=[];


        for (var i= 0; i  < total * 3; i+=3)
        {
            province.push(thresholds[i]);
            city.push(thresholds[i+1]);
            area.push(thresholds[i+2]);
        }

        rule.province = province;
        rule.city = city;
        rule.area = area;
        json.rule= rule;
        console.log(JSON.stringify(json));
        $.ajax({
            url: "/admin/saveColors",
            data: JSON.stringify(json),
            type: "post",
            contentType: "application/json",
            dataType: "json",
            success: function(data) {
                alert(data.message);
            }
        });
    });

 

相关java类

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Data
@Builder
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
public class RiskLevel {

    @JsonIgnore
    private Integer id;
    private Rule rule;
    private List<Integer> colorThreshold = new ArrayList<>(0);
    private List<String> colors = new ArrayList<>(0);
}

 

import lombok.Data;
import lombok.*;

import java.util.ArrayList;
import java.util.List;
@Data
@Builder
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
public class Rule {

    private List<Integer> province = new ArrayList<>(0);

    private List<Integer> city = new ArrayList<>(0);

    private List<Integer> area = new ArrayList<>(0);

}

有疑问留意交流

标签:status,10,java,自定义,city,代码,02,rule,VALUES
来源: https://www.cnblogs.com/passedbylove/p/12380172.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有