zhj пре 2 година
родитељ
комит
aac63ea114

+ 4 - 0
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -167,6 +167,10 @@ public enum InterfaceResultEnum {
     LACK_DEV_MODEL_ERROR("0356","请选择设备型号","Please select the device model","Пожалуйста, выберите модель устройства"),
     LACK_FACTORY_ERROR("0357","请选择厂家","Please select the factory","Пожалуйста, выберите производителя"),
     LACK_SERIAL_PORT_ERROR("0358","请选择串口号","Please select the serial port","Пожалуйста, выберите номер"),
+    LACK_NAME_ERROR("0359","名称不能为空","The name cannot be empty","Имя не может быть пустым"),
+    LACK_POLICY_TYPE_ERROR("0360","请选择策略类型","Please select a policy type","Пожалуйста, выберите тип стратегии"),
+    LACK_OPERATE_TYPE_ERROR("0361","请选择使用方式","Please select a mode of use","Пожалуйста, выберите способ использования"),
+    LACK_LIGHTER_NUMBER_ERROR("0362","请选择灯头编号","Please select a cap number","Пожалуйста, выберите номер лампочки"),
     ;
     private String code;
     private String msgCn;

+ 246 - 0
src/main/java/com/welampiot/controller/PlcPolicyController.java

@@ -0,0 +1,246 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.*;
+import com.welampiot.service.PlcPolicyCmdService;
+import com.welampiot.service.PlcPolicyService;
+import com.welampiot.service.UserService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.PlcPolicyVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.lang.reflect.Field;
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+/**
+ * ClassName: PlcPolicyController
+ * Package: com.welampiot.controller
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 11:27
+ * @Version: v1.0
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/plcPolicy")
+public class PlcPolicyController {
+    @Autowired
+    private ToolUtils toolUtils;
+
+    @Autowired
+    private PlcPolicyService plcPolicyService;
+
+    @Autowired
+    private PlcPolicyCmdService plcPolicyCmdService;
+
+    @Autowired
+    private UserService userService;
+
+    /**
+     * plc添加/编辑策略
+     * @param vo PlcPolicyVO
+     * @return plc添加/编辑策略
+     */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public BaseResult<?> save(PlcPolicyVO vo) throws NoSuchFieldException, IllegalAccessException {
+        PlcPolicyVO policyVO = PlcPolicyVO.getPlcPolicyVO(vo);
+        Integer version = policyVO.getVersion();
+        Integer id = policyVO.getId();
+        String name = policyVO.getName();
+        if (name == null || name.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_NAME_ERROR,version);
+        Integer policyType = policyVO.getPolicyType();
+        if (policyType == null)
+            return toolUtils.response(InterfaceResultEnum.LACK_POLICY_TYPE_ERROR,version);
+        Integer operateType = policyVO.getOperateType();
+        if (operateType == null)
+            return toolUtils.response(InterfaceResultEnum.LACK_OPERATE_TYPE_ERROR,version);
+        Integer lighterMask = policyVO.getLighterMask();
+        if (lighterMask == null)
+            return toolUtils.response(InterfaceResultEnum.LACK_LIGHTER_NUMBER_ERROR,version);
+        List<PlcPolicyContentDTO> dataList = policyVO.getDataList();
+        if (dataList == null || dataList.isEmpty())
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+
+        for (PlcPolicyContentDTO p : dataList) {
+            Integer weekly = p.getWeekly();
+            if (policyType == 1) {
+                if (weekly == null) return toolUtils.response(InterfaceResultEnum.LACK_NEED_PARAM,version);
+            }
+            if (p.getBaseTimeType() == null) p.setBaseTimeType(0);
+            Integer baseTimeType = p.getBaseTimeType();
+            List<PlcPolicyValueDTO> timeList = p.getTimeList();
+            if (timeList == null || timeList.isEmpty())
+                return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+            if (baseTimeType == 0) { // 零点
+                for (PlcPolicyValueDTO v : timeList) {
+                    String startTime = v.getStartTime();
+                    if (startTime == null || startTime.length() == 0)
+                        return toolUtils.response(InterfaceResultEnum.LACK_START_TIME_ERROR,version);
+                }
+            } else { // 日出与日落
+                for (PlcPolicyValueDTO v : timeList) {
+                    String time = v.getTime();
+                    if (time == null || time.length() == 0)
+                        return toolUtils.response(InterfaceResultEnum.LACK_START_TIME_ERROR,version);
+                }
+            }
+        }
+
+        PlcPolicyDTO plcPolicyDTO = new PlcPolicyDTO();
+        plcPolicyDTO.setName(name);
+        plcPolicyDTO.setPolicyType(policyType);
+        plcPolicyDTO.setOperateType(operateType);
+        if (id == 0) { // 添加
+            String username = policyVO.getUsername();
+            if (username == null || username.length() == 0)
+                return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+            UserDTO userDTO = userService.queryUserIdByUsername(username);
+            plcPolicyDTO.setUserid(userDTO.getId());
+            long l = System.currentTimeMillis();
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String format = simpleDateFormat.format(l);
+            plcPolicyDTO.setCreateTime(format);
+            plcPolicyService.addPlcPolicyData(plcPolicyDTO);
+            Integer id1 = plcPolicyDTO.getId();
+            // 添加策略内容
+            for (PlcPolicyContentDTO p : dataList) {
+                Integer weekly = p.getWeekly();
+                Integer baseTimeType = p.getBaseTimeType();
+                List<PlcPolicyValueDTO> timeList = p.getTimeList();
+                PlcPolicyCmdDTO cmdDTO = new PlcPolicyCmdDTO();
+                cmdDTO.setPlcPolicyId(id1);
+                cmdDTO.setBaseTimeType(baseTimeType);
+                cmdDTO.setWeekly(weekly);
+                cmdDTO.setPolicyType(policyType);
+                cmdDTO.setLighterMask(lighterMask);
+                if (baseTimeType == 0) { // 零点
+                    for (PlcPolicyValueDTO v : timeList) {
+                        String startTime = v.getStartTime();
+                        Integer light = v.getLight();
+                        Integer color = v.getColor();
+                        int i = timeList.indexOf(v) + 1;
+                        if (i % 2 == 0) {
+                            i /= 2;
+                            Field fieldEndTime = cmdDTO.getClass().getDeclaredField("endTime" + i);
+                            fieldEndTime.setAccessible(true);
+                            fieldEndTime.set(cmdDTO,startTime);
+                            Field fieldEndBright = cmdDTO.getClass().getDeclaredField("endBright" + i);
+                            fieldEndBright.setAccessible(true);
+                            fieldEndBright.set(cmdDTO,light);
+                            Field fieldEndColor = cmdDTO.getClass().getDeclaredField("endColor" + i);
+                            fieldEndColor.setAccessible(true);
+                            fieldEndColor.set(cmdDTO,color);
+                        } else {
+                            i = (i + 1) / 2;
+                            Field fieldStartTime = cmdDTO.getClass().getDeclaredField("startTime" + i);
+                            fieldStartTime.setAccessible(true);
+                            fieldStartTime.set(cmdDTO,startTime);
+                            Field fieldBright = cmdDTO.getClass().getDeclaredField("bright" + i);
+                            fieldBright.setAccessible(true);
+                            fieldBright.set(cmdDTO,light);
+                            Field fieldColor = cmdDTO.getClass().getDeclaredField("color" + i);
+                            fieldColor.setAccessible(true);
+                            fieldColor.set(cmdDTO,color);
+                        }
+                    }
+                    plcPolicyCmdService.addPlcPolicyCmdZeroType(cmdDTO);
+                } else { // 日出与日落
+                    for (PlcPolicyValueDTO v : timeList) {
+                        String time = v.getTime();
+                        Integer baseTime = v.getBaseTime();
+                        Integer light = v.getLight();
+                        Integer color = v.getColor();
+                        if (baseTime == 1) { // 日出
+                            cmdDTO.setSunrise(1);
+                            cmdDTO.setStartDelayTime(time);
+                            cmdDTO.setStartBright(light);
+                            cmdDTO.setStartColor(color);
+                        } else { // 日落
+                            cmdDTO.setSunset(2);
+                            cmdDTO.setEndDelayTime(time);
+                            cmdDTO.setEndBright(light);
+                            cmdDTO.setEndColor(color);
+                        }
+                    }
+                    plcPolicyCmdService.addPlcPolicyCmdSunType(cmdDTO);
+                }
+            }
+        } else  { // 编辑
+            plcPolicyDTO.setId(id);
+            plcPolicyService.updatePlcPolicyData(plcPolicyDTO);
+            plcPolicyCmdService.deletePlcPolicyCmdByPlcPolicyId(id);
+            // 添加策略内容
+            for (PlcPolicyContentDTO p : dataList) {
+                Integer weekly = p.getWeekly();
+                Integer baseTimeType = p.getBaseTimeType();
+                List<PlcPolicyValueDTO> timeList = p.getTimeList();
+                PlcPolicyCmdDTO cmdDTO = new PlcPolicyCmdDTO();
+                cmdDTO.setPlcPolicyId(id);
+                cmdDTO.setBaseTimeType(baseTimeType);
+                cmdDTO.setWeekly(weekly);
+                cmdDTO.setPolicyType(policyType);
+                cmdDTO.setLighterMask(lighterMask);
+                if (baseTimeType == 0) { // 零点
+                    for (PlcPolicyValueDTO v : timeList) {
+                        String startTime = v.getStartTime();
+                        Integer light = v.getLight();
+                        Integer color = v.getColor();
+                        int i = timeList.indexOf(v) + 1;
+                        if (i % 2 == 0) {
+                            i /= 2;
+                            Field fieldEndTime = cmdDTO.getClass().getDeclaredField("endTime" + i);
+                            fieldEndTime.setAccessible(true);
+                            fieldEndTime.set(cmdDTO, startTime);
+                            Field fieldEndBright = cmdDTO.getClass().getDeclaredField("endBright" + i);
+                            fieldEndBright.setAccessible(true);
+                            fieldEndBright.set(cmdDTO, light);
+                            Field fieldEndColor = cmdDTO.getClass().getDeclaredField("endColor" + i);
+                            fieldEndColor.setAccessible(true);
+                            fieldEndColor.set(cmdDTO, color);
+                        } else {
+                            i = (i + 1) / 2;
+                            Field fieldStartTime = cmdDTO.getClass().getDeclaredField("startTime" + i);
+                            fieldStartTime.setAccessible(true);
+                            fieldStartTime.set(cmdDTO, startTime);
+                            Field fieldBright = cmdDTO.getClass().getDeclaredField("bright" + i);
+                            fieldBright.setAccessible(true);
+                            fieldBright.set(cmdDTO, light);
+                            Field fieldColor = cmdDTO.getClass().getDeclaredField("color" + i);
+                            fieldColor.setAccessible(true);
+                            fieldColor.set(cmdDTO, color);
+                        }
+                    }
+                    plcPolicyCmdService.addPlcPolicyCmdZeroType(cmdDTO);
+                } else { // 日出与日落
+                    for (PlcPolicyValueDTO v : timeList) {
+                        String time = v.getTime();
+                        Integer baseTime = v.getBaseTime();
+                        Integer light = v.getLight();
+                        Integer color = v.getColor();
+                        if (baseTime == 1) { // 日出
+                            cmdDTO.setSunrise(1);
+                            cmdDTO.setStartDelayTime(time);
+                            cmdDTO.setStartBright(light);
+                            cmdDTO.setStartColor(color);
+                        } else { // 日落
+                            cmdDTO.setSunset(2);
+                            cmdDTO.setEndDelayTime(time);
+                            cmdDTO.setEndBright(light);
+                            cmdDTO.setEndColor(color);
+                        }
+                    }
+                    plcPolicyCmdService.addPlcPolicyCmdSunType(cmdDTO);
+                }
+            }
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+}

+ 21 - 0
src/main/java/com/welampiot/dao/PlcPolicyCmdDao.java

@@ -0,0 +1,21 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.PlcPolicyCmdDTO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * ClassName: PlcPolicyCmdDao
+ * Package: com.welampiot.dao
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 15:28
+ * @Version: v1.0
+ */
+public interface PlcPolicyCmdDao {
+    void addPlcPolicyCmdZeroType(PlcPolicyCmdDTO dto);
+
+    void addPlcPolicyCmdSunType(PlcPolicyCmdDTO dto);
+
+    void deletePlcPolicyCmdByPlcPolicyId(@Param("plcPolicyId") Integer plcPolicyId);
+}

+ 18 - 0
src/main/java/com/welampiot/dao/PlcPolicyDao.java

@@ -0,0 +1,18 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.PlcPolicyDTO;
+
+/**
+ * ClassName: PlcPolicyDao
+ * Package: com.welampiot.dao
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 11:23
+ * @Version: v1.0
+ */
+public interface PlcPolicyDao {
+    void addPlcPolicyData(PlcPolicyDTO dto);
+
+    void updatePlcPolicyData(PlcPolicyDTO dto);
+}

+ 90 - 0
src/main/java/com/welampiot/dto/PlcPolicyCmdDTO.java

@@ -0,0 +1,90 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: PlcPolicyCmdDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 10:31
+ * @Version: v1.0
+ */
+@Data
+public class PlcPolicyCmdDTO implements Serializable {
+    private Integer id;
+
+    private Integer plcPolicyId;
+
+    private Integer policyType; // 策略类型(0 日常,1 周期,2 假期)
+
+    private Integer baseTimeType; // 基准时间类型(0 零点,1 根据日落日出)
+
+    private Integer lighterMask; // 灯头(0 灯头1,1 灯头2)
+
+    private String startTime1; // 开灯时间1
+    private String endTime1; // 开/关灯1
+    private Integer bright1; // 开灯亮度
+    private Integer color1; // 灯的色温
+    private Integer endBright1; // 灯的亮度
+    private Integer endColor1; // 灯的色温
+
+    private String startTime2; // 开灯时间
+    private String endTime2; // 开/关灯
+    private Integer bright2; // 开灯亮度
+    private Integer color2; // 灯的色温
+    private Integer endBright2; // 灯的亮度
+    private Integer endColor2; // 灯的色温
+
+    private String startTime3; // 开灯时间
+    private String endTime3; // 开/关灯
+    private Integer bright3; // 开灯亮度
+    private Integer color3; // 灯的色温
+    private Integer endBright3; // 灯的亮度
+    private Integer endColor3; // 灯的色温
+
+    private String startTime4; // 开灯时间
+    private String endTime4; // 开/关灯
+    private Integer bright4; // 开灯亮度
+    private Integer color4; // 灯的色温
+    private Integer endBright4; // 灯的亮度
+    private Integer endColor4; // 灯的色温
+
+    private String startTime5; // 开灯时间
+    private String endTime5; // 开/关灯
+    private Integer bright5; // 开灯亮度
+    private Integer color5; // 灯的色温
+    private Integer endBright5; // 灯的亮度
+    private Integer endColor5; // 灯的色温
+
+    private String startTime6; // 开灯时间
+    private String endTime6; // 开/关灯
+    private Integer bright6; // 开灯亮度
+    private Integer color6; // 灯的色温
+    private Integer endBright6; // 灯的亮度
+    private Integer endColor6; // 灯的色温
+
+    private Integer sunrise; // 日出
+    private String startDelayTime; // 日出:提前或退后时间(提前为负数,反之是负数)
+
+    private Integer startBright;
+
+    private Integer startColor;
+
+    private Integer sunset; // 日落
+
+    private String endDelayTime; // 日落:提前或退后时间(提前为负数,反之是负数)
+
+    private Integer endBright;
+
+    private Integer endColor;
+
+    private Integer weekly; // 执行的周期(0 周日,1 周一,2 周二,3 周三,4 周四,5 周五,6 周六)
+
+    private String holidayDate; // 假期日期
+
+    private Integer holidayDay; // 假期几天
+}

+ 24 - 0
src/main/java/com/welampiot/dto/PlcPolicyContentDTO.java

@@ -0,0 +1,24 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: PlcPolicyContentDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 14:21
+ * @Version: v1.0
+ */
+@Data
+public class PlcPolicyContentDTO implements Serializable {
+    private Integer baseTimeType;
+
+    private Integer weekly;
+
+    private List<PlcPolicyValueDTO> timeList;
+}

+ 29 - 0
src/main/java/com/welampiot/dto/PlcPolicyDTO.java

@@ -0,0 +1,29 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: PlcPolicyDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 10:21
+ * @Version: v1.0
+ */
+@Data
+public class PlcPolicyDTO implements Serializable {
+    private Integer id;
+
+    private String name;
+
+    private Integer userid;
+
+    private String createTime;
+
+    private Integer policyType; // 策略类型(0 日常,1 周期,2 假期)
+
+    private Integer operateType; // 策略的使用方式(0 分组,1 广播)
+}

+ 27 - 0
src/main/java/com/welampiot/dto/PlcPolicyValueDTO.java

@@ -0,0 +1,27 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: PlcPolicyValueDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 14:23
+ * @Version: v1.0
+ */
+@Data
+public class PlcPolicyValueDTO implements Serializable {
+    private String startTime;
+
+    private Integer light;
+
+    private Integer color;
+
+    private Integer baseTime;
+
+    private String time;
+}

+ 20 - 0
src/main/java/com/welampiot/service/PlcPolicyCmdService.java

@@ -0,0 +1,20 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.PlcPolicyCmdDTO;
+
+/**
+ * ClassName: PlcPolicyCmdService
+ * Package: com.welampiot.service
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 15:30
+ * @Version: v1.0
+ */
+public interface PlcPolicyCmdService {
+    void addPlcPolicyCmdZeroType(PlcPolicyCmdDTO dto);
+
+    void addPlcPolicyCmdSunType(PlcPolicyCmdDTO dto);
+
+    void deletePlcPolicyCmdByPlcPolicyId(Integer plcPolicyId);
+}

+ 18 - 0
src/main/java/com/welampiot/service/PlcPolicyService.java

@@ -0,0 +1,18 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.PlcPolicyDTO;
+
+/**
+ * ClassName: PlcPolicyService
+ * Package: com.welampiot.service
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 11:24
+ * @Version: v1.0
+ */
+public interface PlcPolicyService {
+    void addPlcPolicyData(PlcPolicyDTO dto);
+
+    void updatePlcPolicyData(PlcPolicyDTO dto);
+}

+ 37 - 0
src/main/java/com/welampiot/service/impl/PlcPolicyCmdServiceImpl.java

@@ -0,0 +1,37 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.PlcPolicyCmdDao;
+import com.welampiot.dto.PlcPolicyCmdDTO;
+import com.welampiot.service.PlcPolicyCmdService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * ClassName: PlcPolicyCmdServiceImpl
+ * Package: com.welampiot.service.impl
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 15:31
+ * @Version: v1.0
+ */
+@Service
+public class PlcPolicyCmdServiceImpl implements PlcPolicyCmdService {
+    @Autowired
+    private PlcPolicyCmdDao plcPolicyCmdDao;
+
+    @Override
+    public void addPlcPolicyCmdZeroType(PlcPolicyCmdDTO dto) {
+        plcPolicyCmdDao.addPlcPolicyCmdZeroType(dto);
+    }
+
+    @Override
+    public void addPlcPolicyCmdSunType(PlcPolicyCmdDTO dto) {
+        plcPolicyCmdDao.addPlcPolicyCmdSunType(dto);
+    }
+
+    @Override
+    public void deletePlcPolicyCmdByPlcPolicyId(Integer plcPolicyId) {
+        plcPolicyCmdDao.deletePlcPolicyCmdByPlcPolicyId(plcPolicyId);
+    }
+}

+ 32 - 0
src/main/java/com/welampiot/service/impl/PlcPolicyServiceImpl.java

@@ -0,0 +1,32 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.PlcPolicyDao;
+import com.welampiot.dto.PlcPolicyDTO;
+import com.welampiot.service.PlcPolicyService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * ClassName: PlcPolicyServiceImpl
+ * Package: com.welampiot.service.impl
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 11:24
+ * @Version: v1.0
+ */
+@Service
+public class PlcPolicyServiceImpl implements PlcPolicyService {
+    @Autowired
+    private PlcPolicyDao plcPolicyDao;
+
+    @Override
+    public void addPlcPolicyData(PlcPolicyDTO dto) {
+        plcPolicyDao.addPlcPolicyData(dto);
+    }
+
+    @Override
+    public void updatePlcPolicyData(PlcPolicyDTO dto) {
+        plcPolicyDao.updatePlcPolicyData(dto);
+    }
+}

+ 53 - 0
src/main/java/com/welampiot/vo/PlcPolicyVO.java

@@ -0,0 +1,53 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.PlcPolicyContentDTO;
+import lombok.Data;
+import org.jetbrains.annotations.Contract;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: PlcPolicyVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/17 - 13:50
+ * @Version: v1.0
+ */
+@Data
+public class PlcPolicyVO implements Serializable {
+    private Integer version;
+
+    private Integer id;
+
+    private String name;
+
+    private String username;
+
+    private Integer operateType; // 使用方式(0 分组,1 广播)
+
+    private Integer policyType; // 策略类型(0 日常策略,1 按周循环策略)
+
+    private Integer lighterMask; // 灯头编号(0 灯头1,1 灯头2)
+
+    private Integer weekly; // 执行星期
+
+    private Integer baseTimeType; // 基准时间(0 零点,1 日出与日落)
+
+    private List<PlcPolicyContentDTO> dataList;
+
+    @NotNull
+    @Contract("_ -> param1")
+    public static PlcPolicyVO getPlcPolicyVO(@NotNull PlcPolicyVO vo) {
+        if (vo.getVersion() == null) {
+            vo.setVersion(0);
+        }
+        if (vo.getId() == null) {
+            vo.setId(0);
+        }
+        return vo;
+    }
+}

+ 113 - 0
src/main/resources/mapper/PlcPolicyCmdMapper.xml

@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.PlcPolicyCmdDao">
+    
+    <insert id="addPlcPolicyCmdZeroType" parameterType="PlcPolicyCmdDTO" keyProperty="id" useGeneratedKeys="true">
+        insert into plc_policy_cmd(plc_policy_id, policyType, base_time_type,
+        <if test="startTime1 != null and startTime1 != ''">
+            starttime1, bright1, color1,
+        </if>
+        <if test="endTime1 != null and endTime1 != ''">
+            endtime1, end_bright1, end_color1,
+        </if>
+        <if test="startTime2 != null and startTime2 != ''">
+            starttime2, bright2, color2,
+        </if>
+        <if test="endTime2 != null and endTime2 != ''">
+            endtime2, end_bright2, end_color2,
+        </if>
+        <if test="startTime3 != null and startTime3 != ''">
+            starttime3, bright3, color3,
+        </if>
+        <if test="endTime3 != null and endTime3 != ''">
+            endtime3, end_bright3, end_color3,
+        </if>
+        <if test="startTime4 != null and startTime4 != ''">
+            starttime4, bright4, color4,
+        </if>
+        <if test="endTime4 != null and endTime4 != ''">
+            endtime4, end_bright4, end_color4,
+        </if>
+        <if test="startTime5 != null and startTime5 != ''">
+            starttime5, bright5, color5,
+        </if>
+        <if test="endTime5 != null and endTime5 != ''">
+            endtime5, end_bright5, end_color5,
+        </if>
+        <if test="startTime6 != null and startTime6 != ''">
+            starttime6, bright6, color6,
+        </if>
+        <if test="endTime6 != null and endTime6 != ''">
+            endtime6, end_bright6, end_color6,
+        </if>
+        <if test="weekly != null">
+            weekly,
+        </if>
+        lighter_mask)
+        values (#{plcPolicyId},#{policyType},#{baseTimeType},
+        <if test="startTime1 != null and startTime1 != ''">
+            #{startTime1},#{bright1},#{color1},
+        </if>
+        <if test="endTime1 != null and endTime1 != ''">
+            #{endTime1},#{endBright1},#{endColor1},
+        </if>
+        <if test="startTime2 != null and startTime2 != ''">
+            #{startTime2},#{bright2},#{color2},
+        </if>
+        <if test="endTime2 != null and endTime2 != ''">
+            #{endTime2},#{endBright2},#{endColor2},
+        </if>
+        <if test="startTime3 != null and startTime3 != ''">
+            #{startTime3},#{bright3},#{color3},
+        </if>
+        <if test="endTime3 != null and endTime3 != ''">
+            #{endTime3},#{endBright3},#{endColor3},
+        </if>
+        <if test="startTime4 != null and startTime4 != ''">
+            #{startTime4},#{bright4},#{color4},
+        </if>
+        <if test="endTime4 != null and endTime4 != ''">
+            #{endTime4},#{endBright4},#{endColor4},
+        </if>
+        <if test="startTime5 != null and startTime5 != ''">
+            #{startTime5},#{bright5},#{color5},
+        </if>
+        <if test="endTime5 != null and endTime5 != ''">
+            #{endTime5},#{endBright5},#{endColor5},
+        </if>
+        <if test="startTime6 != null and startTime6 != ''">
+            #{startTime6},#{bright6},#{color6},
+        </if>
+        <if test="endTime6 != null and endTime6 != ''">
+            #{endTime6},#{endBright6},#{endColor6},
+        </if>
+        <if test="weekly != null">
+            #{weekly},
+        </if>
+        #{lighterMask})
+    </insert>
+
+    <insert id="addPlcPolicyCmdSunType" useGeneratedKeys="true" keyProperty="id" parameterType="PlcPolicyCmdDTO">
+        insert into plc_policy_cmd(plc_policy_id, policyType, base_time_type,
+        sunrise, start_delay_time, start_bright, start_color,
+        sunset, end_delay_time, end_bright, end_color,
+        <if test="weekly != null">
+            weekly,
+        </if>
+        lighter_mask)
+        values (#{plcPolicyId},#{policyType},#{baseTimeType},
+        #{sunrise},#{startDelayTime},#{startBright},#{startColor},
+        #{sunset},#{endDelayTime},#{endBright},#{endColor},
+        <if test="weekly != null">
+            #{weekly},
+        </if>
+        #{lighterMask})
+    </insert>
+
+    <delete id="deletePlcPolicyCmdByPlcPolicyId">
+        delete
+        from plc_policy_cmd
+        where plc_policy_id = #{plcPolicyId};
+    </delete>
+
+</mapper>

+ 21 - 0
src/main/resources/mapper/PlcPolicyMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.PlcPolicyDao">
+
+    <insert id="addPlcPolicyData" parameterType="PlcPolicyDTO" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO plc_policy(`name`, userid, createtime, policyType, operateType)
+            VALUES (#{name},#{userid},#{createTime},#{policyType},#{operateType})
+    </insert>
+
+    <update id="updatePlcPolicyData" parameterType="PlcPolicyDTO">
+        update
+            plc_policy p
+        set
+            p.name = #{name},
+            p.policyType = #{policyType},
+            p.operateType = #{operateType}
+        where
+            p.id = #{id}
+    </update>
+
+</mapper>