zjj
8 天以前 e26a08269c24077cdac7ca3992fc068edd5971aa
#AGV站点绑定
4个文件已添加
2个文件已修改
155 ■■■■■ 已修改文件
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
@@ -140,7 +140,7 @@
                        label="table.field.basStation.outAble"
                        render={record => record.inAble === 1 ? '是' : '否'}
                    />
                    <TextField source="useStatus" label="table.field.basStation.useStatus" />
                    <TextField source="useStatus$" label="table.field.basStation.useStatus" />
                    <NumberField source="area$" label="table.field.basStation.area" />                    
                    <FunctionField
                        source="isCrossZone"
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java
New file
@@ -0,0 +1,45 @@
package com.vincent.rsf.server.api.controller.pda;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.api.service.AgvService;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
import java.util.Objects;
@Api(tags = "PDA操作接口")
@RequestMapping("/pda")
@RestController
public class AgvController extends BaseController {
    @Autowired
    private AgvService agvService;
    @PreAuthorize("hasAuthority('manager:basStation:list')")
    @ApiOperation("获取拖盘明细")
    @PostMapping("/AGV/staBind")
    public R getAGVStaBind(@RequestBody Map<String, Object> params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        return agvService.getAGVStaBind(params);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItem:list')")
    @ApiOperation("获取拖盘明细")
    @PostMapping("/AGV/staUnBind")
    public R getAGVStaUnBind(@RequestBody Map<String, Object> params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        return agvService.getAGVStaBind(params);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
New file
@@ -0,0 +1,9 @@
package com.vincent.rsf.server.api.service;
import com.vincent.rsf.framework.common.R;
import java.util.Map;
public interface AgvService {
    R getAGVStaBind(Map<String, Object> params);
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
New file
@@ -0,0 +1,77 @@
package com.vincent.rsf.server.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.api.service.AgvService;
import com.vincent.rsf.server.manager.entity.BasStation;
import com.vincent.rsf.server.manager.entity.WaitPakin;
import com.vincent.rsf.server.manager.enums.PakinIOStatus;
import com.vincent.rsf.server.manager.enums.StaUseStatusType;
import com.vincent.rsf.server.manager.service.BasStationService;
import com.vincent.rsf.server.manager.service.WaitPakinService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Service
public class AgvServiceImpl implements AgvService {
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private BasStationService basStationService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R getAGVStaBind(Map<String, Object> params) {
        String barcode = params.get("barcode").toString();
        String sta = params.get("sta").toString();
        //验证基础信息
        BasStation basStation = checkStaStatus(barcode, sta);
        //更新站点状态
        basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
        basStation.setBarcode(barcode);
        if (!basStationService.updateById(basStation)){
            throw new CoolException("更新站点状态失败");
        }
        return R.ok("绑定成功");
    }
    private BasStation checkStaStatus(String barcode, String sta){
        if (Cools.isEmpty(barcode)){
            throw new CoolException("容器码不能为空");
        }
        if (Cools.isEmpty(sta)){
            throw new CoolException("接驳位条码不能为空");
        }
        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                .eq(WaitPakin::getBarcode, barcode)
                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
        );
        if (Cools.isEmpty(waitPakin)){
            throw new CoolException("容器码未找到组托信息,请检查组托状态");
        }
        BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                        .eq(BasStation::getBarcode, barcode)
                ,false
        );
        if (!Cools.isEmpty(isBarcodeSta)){
            throw new CoolException("该条码已被"+isBarcodeSta.getStationName()+"站绑定");
        }
        BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                .eq(BasStation::getStationName, sta)
        );
        if (Cools.isEmpty(basStation)){
            throw new CoolException("未找到站点信息");
        }
        if (!basStation.getUseStatus().equals("O")){
            throw new CoolException("站点状态不为空闲");
        }
        return basStation;
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
@@ -80,6 +80,10 @@
        basStation.setCreateTime(new Date());
        basStation.setUpdateBy(getLoginUserId());
        basStation.setUpdateTime(new Date());
        BasStation serviceOne = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, basStation.getStationName()));
        if (!Cools.isEmpty(serviceOne)) {
            return R.error(basStation.getStationName()+"站已被初始化");
        }
        if (!basStationService.save(basStation)) {
            return R.error("保存失败");
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java
New file
@@ -0,0 +1,18 @@
package com.vincent.rsf.server.manager.enums;
public enum StaUseStatusType {
    //订单类型
    TYPE_O("O", "空闲"),
    TYPE_F("F", "占用"),
    TYPE_X("X", "禁用"),
    ;
    StaUseStatusType(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
    public String type;
    public String desc;
}