skyouc
2025-03-27 5de7d78bc629f316749b9e11b9c6113d5e0d0b8f
新增站点初始化功能
5个文件已修改
1个文件已添加
153 ■■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeviceSiteService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeviceSiteController.java
@@ -4,14 +4,18 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.controller.params.DeviceSiteParame;
import com.vincent.rsf.server.manager.entity.DeviceSite;
import com.vincent.rsf.server.manager.service.DeviceSiteService;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -20,6 +24,7 @@
import java.util.*;
@RestController
@Api(tags = "站点管理")
public class DeviceSiteController extends BaseController {
    @Autowired
@@ -107,4 +112,14 @@
        ExcelUtil.build(ExcelUtil.create(deviceSiteService.list(), DeviceSite.class), response);
    }
    @PreAuthorize("hasAuthority('manager:deviceSite:save')")
    @ApiOperation("站点初始化")
    @PostMapping("/deviceSite/init")
    public R initDeviceSite(@RequestBody DeviceSiteParame param) {
        if (Objects.isNull(param)) {
            throw new CoolException("参数不能为空!!");
        }
        return R.ok(deviceSiteService.initSites(param));
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java
New file
@@ -0,0 +1,31 @@
package com.vincent.rsf.server.manager.controller.params;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class DeviceSiteParame {
    @ApiModelProperty("是否初始化")
    private Integer flagInit;
    @ApiModelProperty("设备类型")
    private String deviceType;
    @ApiModelProperty("作业类型")
    private List<Long> typeIds;
    @ApiModelProperty("作业站点")
    private List<String> sites;
    @ApiModelProperty("设备编号")
    private String deviceCode;
    @ApiModelProperty("设备作业站点")
    private List<String> deviceSites;
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
@@ -1,16 +1,23 @@
package com.vincent.rsf.server.manager.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.server.manager.service.LocTypeService;
import com.vincent.rsf.server.system.constant.DictTypeCode;
import com.vincent.rsf.server.system.entity.DictData;
import com.vincent.rsf.server.system.entity.DictType;
import com.vincent.rsf.server.system.service.DictDataService;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -20,8 +27,10 @@
import com.vincent.rsf.server.system.entity.User;
import java.io.Serializable;
import java.util.Date;
import java.util.stream.Collectors;
@Data
@Accessors(chain = true)
@TableName("man_device_site")
public class DeviceSite implements Serializable {
@@ -38,7 +47,7 @@
     * 入出库类型
     */
    @ApiModelProperty(value= "入出库类型")
    private Integer type;
    private String type;
    /**
     * 站点编号
@@ -127,6 +136,12 @@
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 作业类型
     */
    @TableField(exist = false)
    private String typeIds;
    /**
     * 备注
     */
@@ -135,7 +150,7 @@
    public DeviceSite() {}
    public DeviceSite(Integer type,String site,String name,String wcsCode,String label,String device,String deviceCode,String deviceSite,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
    public DeviceSite(String type,String site,String name,String wcsCode,String label,String device,String deviceCode,String deviceSite,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.type = type;
        this.site = site;
        this.name = name;
@@ -173,6 +188,25 @@
//            null    // 备注
//    );
    public String getType$(){
        if (null == this.type){ return null; }
        String[] split = this.type.split(",");
        List<String> asList = Arrays.asList(split);
        if (asList.isEmpty()) {
            return null;
        }
        DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
        List<DictData> dictDatas = dictDataService.list(new LambdaQueryWrapper<DictData>()
                .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_TASK_TYPE)
                .in(DictData::getId, asList));
        if (dictDatas.isEmpty()) {
            return null;
        }
        List<String> strings = dictDatas.stream().map(DictData::getLabel).collect(Collectors.toList());
        return StringUtils.join(strings, ",");
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeviceSiteService.java
@@ -1,8 +1,10 @@
package com.vincent.rsf.server.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.server.manager.controller.params.DeviceSiteParame;
import com.vincent.rsf.server.manager.entity.DeviceSite;
public interface DeviceSiteService extends IService<DeviceSite> {
    boolean initSites(DeviceSiteParame param);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
@@ -1,12 +1,61 @@
package com.vincent.rsf.server.manager.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.DeviceSiteParame;
import com.vincent.rsf.server.manager.mapper.DeviceSiteMapper;
import com.vincent.rsf.server.manager.entity.DeviceSite;
import com.vincent.rsf.server.manager.service.DeviceSiteService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@Service("deviceSiteService")
public class DeviceSiteServiceImpl extends ServiceImpl<DeviceSiteMapper, DeviceSite> implements DeviceSiteService {
    /**
     * 初始化站点
     * @param param
     * @return
     */
    @Override
    public boolean initSites(DeviceSiteParame param) {
        if (param.getFlagInit() == 1) {
            if (!this.remove(new LambdaQueryWrapper<>())) {
                throw new CoolException("初始化失败: 删除站点失败!!");
            }
        }
        if (Objects.isNull(param.getDeviceSites()) || param.getDeviceSites().isEmpty()) {
            throw new CoolException("初始化失败: 设备作业站点不能为空!!");
        }
        if (Objects.isNull(param.getSites()) || param.getSites().isEmpty()) {
            throw new CoolException("初始化失败: 作业站点不能为空!!");
        }
        if (Objects.isNull(param.getTypeIds()) || param.getTypeIds().isEmpty()) {
            throw new CoolException("初始化失败: 作业类型不能为空!!");
        }
        List<DeviceSite> deviceSites =  new ArrayList<>();
        for (String site : param.getSites()) {
            for (String deviceSite : param.getDeviceSites()) {
                for (Long id : param.getTypeIds()) {
                    DeviceSite site1 = new DeviceSite();
                    site1.setType(id + "")
                            .setSite(site)
                            .setDevice(param.getDeviceType())
                            .setDeviceSite(deviceSite)
                            .setDeviceCode(param.getDeviceCode());
                    deviceSites.add(site1);
                }
            }
        }
        if (!this.saveBatch(deviceSites)) {
            throw new CoolException("初始化失败: 数据保存失败!!");
        }
        return true;
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -9,6 +9,14 @@
 */
public class DictTypeCode {
    /**
     * 企业类型
     */
    public final static String DICT_COMPANY_TYPE = "sys_companys_type";
    /**
     * 任务类型
     */
    public final static String DICT_SYS_TASK_TYPE = "sys_task_type";
}