d19e91bcc4ed9ab08e8be375fb5fc0f7e874a6a9..73bb5617e6aeb4ee8f7dfd4ad54b61d477969d86
2025-06-10 whycxzp
自动充放电自动化流程
73bb56 对比 | 目录
2025-06-10 whycxzp
自动充放电自动化流程
5005f4 对比 | 目录
2025-06-10 whycxzp
充放电测试字段追加
7c70ac 对比 | 目录
6个文件已修改
264 ■■■■■ 已修改文件
src/main/java/com/whyc/mapper/BattWarehouseMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_wms/BattWarehouse.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/schedule/WmsTaskSchedule.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattWarehouseService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/WmsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattWarehouseMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattWarehouseMapper.java
@@ -5,6 +5,9 @@
import java.util.List;
public interface BattWarehouseMapper extends CustomMapper<BattWarehouse> {
    void updateBatchById(List<BattWarehouse> list);
    void updateActivateBatchById(List<BattWarehouse> list);
    void updateChargeBatchById(List<BattWarehouse> list);
    void updateDischargeBatchById(List<BattWarehouse> list);
}
src/main/java/com/whyc/pojo/db_wms/BattWarehouse.java
@@ -28,4 +28,19 @@
    @ApiModelProperty("电压")
    private Integer vol;
    /**追加充放电相关字段**/
    @ApiModelProperty("已入放电安排,放电进行过程中")
    private Integer dischargeOnPlan;
    @ApiModelProperty("当前正在执行放电的任务编号")
    private String dischargeTaskNo;
    @ApiModelProperty("放电时间")
    private Date dischargeTime;
    @ApiModelProperty("已入充电安排,充电进行过程中")
    private Integer chargeOnPlan;
    @ApiModelProperty("当前正在执行充电的任务编号")
    private String chargeTaskNo;
    @ApiModelProperty("充电时间")
    private Date chargeTime;
}
src/main/java/com/whyc/schedule/WmsTaskSchedule.java
@@ -41,7 +41,11 @@
    @Autowired
    private WmsService wmsService;
    /**每天早上9点执行一次*/
    /**
     * 仓储库所有电池的活化任务,任务之前还检查并加入 之前未放入仓储库表中的单体
     * 活化周期: 在参数表里设置
     * 每天早上9点执行一次
     * */
    //@Scheduled(cron= "0 0 9 * * ?")
    public void checkAndActivate() {
        //查询数据库记录的仓库内所有的电池
@@ -61,6 +65,8 @@
                    battWarehouse.setMonId(Integer.valueOf(item.getPalletCode()));
                    battWarehouse.setStorageTime(now);
                    battWarehouse.setOnPlan(0);
                    battWarehouse.setChargeOnPlan(0);
                    battWarehouse.setDischargeOnPlan(0);
                    String volStr = item.getV().replace("v", "");
                    int vol = Integer.parseInt(volStr);
                    battWarehouse.setVol(vol);
@@ -76,8 +82,8 @@
        //查询需要活化的电池列表
        List<BattWarehouse> list = battWarehouseService.getActivateList();
        //通过电压进行分组list
        Map<Integer, List<BattWarehouse>> mapToActivate = list.stream().collect(Collectors.groupingBy(BattWarehouse::getVol));
        /*//通过电压进行分组list
        Map<Integer, List<BattWarehouse>> mapToActivate = list.stream().filter(item->item.getVol() == 2).collect(Collectors.groupingBy(BattWarehouse::getVol));
        Set<Integer> volSet = mapToActivate.keySet();
        //永远只对一类电压进行活化任务下发!!!因为连续下发活化,后续的会失败
        Integer vol;
@@ -88,7 +94,14 @@
        }else{
            //本次终止
            return;
        }*/
        if(list.size() == 0){
            //没有需要活化的电池
            return;
        }
        int vol =2;
        String[] activateParameterStr = null;
        list = list.stream().filter(item -> item.getVol() == 2).collect(Collectors.toList());
        //查询是否存在正在进行的任务
        List<Task> ongoingList = taskService.getOngoingList();
        if (ongoingList.size() == 0) {
@@ -116,25 +129,26 @@
            //   cCap: 10,      // 预充容量0.1AH-需要根据容量实际设置 等于实际容量
            //   tTimes: 1,    // 充放次数
            //   standTime: 1,   // 静置时间
            //   startType: 1,   // 测试起点-默认充电
            //   startType: 1,   // 测试起点-默认充电. 测试起点:0放电,1充电
            //}
            if(vol == 2) {
                activateParameterStr = new String[]{
                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
                };
            }
            //TODO 6V待提供
            //暂不考虑6V和12V,只存在2V
            /*//6V待提供
            else if(vol==6){
                activateParameterStr = new String[]{
                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
                };
            }
            //TODO 12V待提供
            //12V待提供
            else if(vol==12){
                activateParameterStr = new String[]{
                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
                };
            }
            }*/
            List<String> activateParameter = Arrays.asList(activateParameterStr);
            wmsPalletDto.setActivateParameter(activateParameter);
            Response response = wmsService.sendTask(wmsPalletDto);
@@ -149,7 +163,111 @@
                        item.setTaskNo(taskNoList.get(i));
                    }
                    //批量更新BattWarehouse
                    battWarehouseService.updateBatchById(list);
                    battWarehouseService.updateActivateBatchById(list);
                }
            }
        }
    }
    /**
     * 仓储库所有电池的充电任务
     * 充电周期:1个月
     * 传入的活化参数:cTime=0,startType=1
     * 每天早上10点执行一次
     * */
    //@Scheduled(cron= "0 0 10 * * ?")
    public void checkAndCharge() {
        //查询需要充电的电池列表
        List<BattWarehouse> list = battWarehouseService.getChargeList();
        list = list.stream().filter(item -> item.getVol() == 2).collect(Collectors.toList());
        if(list.size() == 0){
            //没有需要充电的电池
            return;
        }
        //查询是否存在正在进行的任务
        List<Task> ongoingList = taskService.getOngoingList();
        if (ongoingList.size() == 0) {
            //没有正在进行的活化任务,则下发活化任务
            WmsPalletDto wmsPalletDto = new WmsPalletDto();
            wmsPalletDto.setDes(3);
            List<String> pallets = list.stream().map(item -> String.valueOf(item.getMonId())).collect(Collectors.toList());
            //pallets从List类型转LinkedList类型
            LinkedList<String> palletsLinked = new LinkedList<>(pallets);
            wmsPalletDto.setPallets(palletsLinked);
            //活化参数设置
            String[] activateParameterStr = new String[]{
                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "0", "1", "1"
                };
            List<String> activateParameter = Arrays.asList(activateParameterStr);
            wmsPalletDto.setActivateParameter(activateParameter);
            Response response = wmsService.sendTask(wmsPalletDto);
            if (response.getCode() == 1) {
                WmsResponse responseInside = (WmsResponse) response.getData();
                if(responseInside.getCode() == 0){//下发成功
                    LinkedList<String> taskNoList = responseInside.getTask_no();
                    //进行标志位和任务编号的更新
                    for (int i = 0; i < taskNoList.size(); i++) {
                        BattWarehouse item = list.get(i);
                        item.setChargeOnPlan(1);
                        item.setChargeTaskNo(taskNoList.get(i));
                    }
                    //批量更新BattWarehouse
                    battWarehouseService.updateChargeBatchById(list);
                }
            }
        }
    }
    /**
     * 仓储库所有电池的放电任务
     * 放电周期:2个月
     * 传入的活化参数:cTime=0,startType=0
     * 每天早上11点执行一次
     * */
    //@Scheduled(cron= "0 0 11 * * ?")
    public void checkAndDischarge() {
        //查询需要放电的电池列表
        List<BattWarehouse> list = battWarehouseService.getDischargeList();
        list = list.stream().filter(item -> item.getVol() == 2).collect(Collectors.toList());
        if(list.size() == 0){
            //没有需要放电的电池
            return;
        }
        //查询是否存在正在进行的任务
        List<Task> ongoingList = taskService.getOngoingList();
        if (ongoingList.size() == 0) {
            //没有正在进行的活化任务,则下发活化任务
            WmsPalletDto wmsPalletDto = new WmsPalletDto();
            wmsPalletDto.setDes(3);
            List<String> pallets = list.stream().map(item -> String.valueOf(item.getMonId())).collect(Collectors.toList());
            //pallets从List类型转LinkedList类型
            LinkedList<String> palletsLinked = new LinkedList<>(pallets);
            wmsPalletDto.setPallets(palletsLinked);
            //活化参数设置
            String[] activateParameterStr = new String[]{
                    "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "0", "1", "0"
            };
            List<String> activateParameter = Arrays.asList(activateParameterStr);
            wmsPalletDto.setActivateParameter(activateParameter);
            Response response = wmsService.sendTask(wmsPalletDto);
            if (response.getCode() == 1) {
                WmsResponse responseInside = (WmsResponse) response.getData();
                if(responseInside.getCode() == 0){//下发成功
                    LinkedList<String> taskNoList = responseInside.getTask_no();
                    //进行标志位和任务编号的更新
                    for (int i = 0; i < taskNoList.size(); i++) {
                        BattWarehouse item = list.get(i);
                        item.setDischargeOnPlan(1);
                        item.setDischargeTaskNo(taskNoList.get(i));
                    }
                    //批量更新BattWarehouse
                    battWarehouseService.updateDischargeBatchById(list);
                }
            }
        }
src/main/java/com/whyc/service/BattWarehouseService.java
@@ -34,12 +34,36 @@
        PageParam param = pageParamService.getActivatePeriod();
        Integer period = param.getValue();
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE,-period);
        calendar.add(Calendar.DAY_OF_MONTH,-period);
        QueryWrapper<BattWarehouse> query = Wrappers.query();
        query.eq("on_plan",0);
        //为活化过 或者 活化时间超过活化周期
        query.isNull("activate_time").or().le("activate_time",calendar);
        //未活化过 或者 活化时间超过活化周期
        query.isNull("activate_time").or().le("activate_time",calendar.getTime());
        return mapper.selectList(query);
    }
    public List<BattWarehouse> getChargeList() {
        Integer period = 1;
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH,-period);
        QueryWrapper<BattWarehouse> query = Wrappers.query();
        query.eq("charge_on_plan",0);
        //未充电过 或者 充电时间超过充电周期
        query.isNull("charge_time").or().le("charge_time",calendar.getTime());
        return mapper.selectList(query);
    }
    public List<BattWarehouse> getDischargeList() {
        Integer period = 2;
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH,-period);
        QueryWrapper<BattWarehouse> query = Wrappers.query();
        query.eq("discharge_on_plan",0);
        //未放电过 或者 放电时间超过放电周期
        query.isNull("discharge_time").or().le("discharge_time",calendar.getTime());
        return mapper.selectList(query);
    }
@@ -51,13 +75,21 @@
        mapper.insertBatchSomeColumn(listNew);
    }
    public void updateBatchById(List<BattWarehouse> list) {
        mapper.updateBatchById(list);
    public void updateActivateBatchById(List<BattWarehouse> list) {
        mapper.updateActivateBatchById(list);
    }
    public void updateChargeBatchById(List<BattWarehouse> list) {
        mapper.updateChargeBatchById(list);
    }
    public void updateDischargeBatchById(List<BattWarehouse> list) {
        mapper.updateDischargeBatchById(list);
    }
    public BattWarehouse getByTaskNo(String taskNo) {
        QueryWrapper<BattWarehouse> query = Wrappers.query();
        query.eq("task_no",taskNo);
        query.eq("task_no",taskNo).or().eq("charge_task_no",taskNo).or().eq("discharge_task_no",taskNo);
        query.last(" limit 1");
        return mapper.selectOne(query);
    }
@@ -74,4 +106,22 @@
        update.eq("id",id);
        mapper.update((BattWarehouse) ActionUtil.objeNull,update);
    }
    public void finishChargeById(Integer id) {
        UpdateWrapper<BattWarehouse> update = Wrappers.update();
        update.set("charge_task_no",null);
        update.set("charge_on_plan",0);
        update.set("charge_time",Calendar.getInstance().getTime());
        update.eq("id",id);
        mapper.update((BattWarehouse) ActionUtil.objeNull,update);
    }
    public void finishDischargeById(Integer id) {
        UpdateWrapper<BattWarehouse> update = Wrappers.update();
        update.set("discharge_task_no",null);
        update.set("discharge_on_plan",0);
        update.set("discharge_time",Calendar.getInstance().getTime());
        update.eq("id",id);
        mapper.update((BattWarehouse) ActionUtil.objeNull,update);
    }
}
src/main/java/com/whyc/service/WmsService.java
@@ -241,7 +241,21 @@
                //开始取活化结束的电池,如果任务编号在更新电池仓库中存在,则更新活化时间为当前时间
                BattWarehouse battWarehouse =battWarehouseService.getByTaskNo(taskNo);
                if(battWarehouse != null){
                    battWarehouseService.finishActivationById(battWarehouse.getId());
                    String activateTaskNo = battWarehouse.getTaskNo();
                    String chargeTaskNo = battWarehouse.getChargeTaskNo();
                    String dischargeTaskNo = battWarehouse.getDischargeTaskNo();
                    if(activateTaskNo.equals(taskNo)) {
                        //如果是活化任务,则更新数据库中该任务完成时间
                        battWarehouseService.finishActivationById(battWarehouse.getId());
                    }
                    else if (chargeTaskNo.equals(taskNo)) {
                        //如果是充电任务,则更新数据库中该任务完成时间
                        battWarehouseService.finishChargeById(battWarehouse.getId());
                    }
                    else if (dischargeTaskNo.equals(taskNo)) {
                        //如果是放电任务,则更新数据库中该任务完成时间
                        battWarehouseService.finishDischargeById(battWarehouse.getId());
                    }
                }
                task.setActivationChamberPickUpTime(statusTime);break;
            case 24:
src/main/resources/mapper/BattWarehouseMapper.xml
@@ -3,7 +3,7 @@
<mapper namespace="com.whyc.mapper.BattWarehouseMapper" >
    <update id="updateBatchById">
    <update id="updateActivateBatchById">
        <foreach collection="list" item="item" index="index" separator=";">
            update tb_batt_warehouse
            <set>
@@ -17,4 +17,34 @@
            where id = #{item.id}
        </foreach>
    </update>
    <update id="updateChargeBatchById">
        <foreach collection="list" item="item" index="index" separator=";">
            update tb_batt_warehouse
            <set>
                <if test="item.chargeTaskNo != null">
                    charge_task_no = #{item.chargeTaskNo},
                </if>
                <if test="item.chargeOnPlan != null">
                    charge_on_plan = #{item.chargeOnPlan},
                </if>
            </set>
            where id = #{item.id}
        </foreach>
    </update>
    <update id="updateDischargeBatchById">
        <foreach collection="list" item="item" index="index" separator=";">
            update tb_batt_warehouse
            <set>
                <if test="item.dischargeTaskNo != null">
                    discharge_task_no = #{item.dischargeTaskNo},
                </if>
                <if test="item.dischargeOnPlan != null">
                    discharge_on_plan = #{item.dischargeOnPlan},
                </if>
            </set>
            where id = #{item.id}
        </foreach>
    </update>
</mapper>