Merge remote-tracking branch 'origin/main'

This commit is contained in:
1009473166@qq.com
2026-03-19 15:44:02 +08:00
13 changed files with 576 additions and 17 deletions

View File

@@ -12,4 +12,5 @@ public class AgvMoveParam {
private String endPoint;
private String containerCode;
private String taskNo;
private String type;
}

View File

@@ -45,4 +45,6 @@ public interface IToWcsService {
AjaxResult updateWcsPort(WcsPort wcsPort);
AjaxResult insertAgvMoveJob(AgvMoveParam agvMoveParam);
}

View File

@@ -42,6 +42,7 @@ public class ToWcsServiceImpl implements IToWcsService {
public static final String UPDATE_WCS_PORT = "http://localhost:8081/wcs2Wms/api/updateWcsPort";
@Override
@Scheduled(fixedDelay=1500)
public void pushOutMydoJob() {
@@ -152,4 +153,18 @@ public class ToWcsServiceImpl implements IToWcsService {
return AjaxResult.error();
}
@Override
public AjaxResult insertAgvMoveJob(AgvMoveParam agvMoveParam) {
Map<String,String> map = new HashMap<>();
map.put("startPoint", agvMoveParam.getStartPoint());
map.put("endPoint", agvMoveParam.getEndPoint());
map.put("type", agvMoveParam.getType());
map.put("jobId", UUID.randomUUID().toString());
RequestLog requestLog = requestLogService.getRequestLog(PUSH_AGV_MOVE_JOB, JSONUtil.toJsonStr(map), "修改缓存点状态","wms","wcs");
if ("1".equals(requestLog.getIsSuccessful())){
return AjaxResult.success();
}
return AjaxResult.error();
}
}

View File

@@ -0,0 +1,104 @@
package com.ruoyi.bas.agvPoint.controller;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.bas.agvPoint.domain.AgvPoint;
import com.ruoyi.bas.agvPoint.service.IAgvPointService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* agv站点Controller
*
* @author ruoyi
* @date 2026-03-17
*/
@RestController
@RequestMapping("/bas/agvPoint")
public class AgvPointController extends BaseController
{
@Autowired
private IAgvPointService agvPointService;
/**
* 查询agv站点列表
*/
@PreAuthorize("@ss.hasPermi('bas:agvPoint:list')")
@GetMapping("/list")
public TableDataInfo list(AgvPoint agvPoint)
{
startPage();
List<AgvPoint> list = agvPointService.selectAgvPointList(agvPoint);
return getDataTable(list);
}
/**
* 导出agv站点列表
*/
@PreAuthorize("@ss.hasPermi('bas:agvPoint:export')")
@Log(title = "agv站点", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, AgvPoint agvPoint)
{
List<AgvPoint> list = agvPointService.selectAgvPointList(agvPoint);
ExcelUtil<AgvPoint> util = new ExcelUtil<AgvPoint>(AgvPoint.class);
util.exportExcel(response, list, "agv站点数据");
}
/**
* 获取agv站点详细信息
*/
@PreAuthorize("@ss.hasPermi('bas:agvPoint:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
return success(agvPointService.selectAgvPointById(id));
}
/**
* 新增agv站点
*/
@PreAuthorize("@ss.hasPermi('bas:agvPoint:add')")
@Log(title = "agv站点", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody AgvPoint agvPoint)
{
return toAjax(agvPointService.insertAgvPoint(agvPoint));
}
/**
* 修改agv站点
*/
@PreAuthorize("@ss.hasPermi('bas:agvPoint:edit')")
@Log(title = "agv站点", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody AgvPoint agvPoint)
{
return toAjax(agvPointService.updateAgvPoint(agvPoint));
}
/**
* 删除agv站点
*/
@PreAuthorize("@ss.hasPermi('bas:agvPoint:remove')")
@Log(title = "agv站点", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids)
{
return toAjax(agvPointService.deleteAgvPointByIds(ids));
}
}

View File

@@ -0,0 +1,113 @@
package com.ruoyi.bas.agvPoint.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* agv站点对象 agv_point
*
* @author ruoyi
* @date 2026-03-17
*/
public class AgvPoint extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 序号 */
private String id;
/** 站点编号 */
@Excel(name = "站点编号")
private String station;
/** 类型 */
@Excel(name = "类型")
private String type;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String spare1;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String spare2;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String spare3;
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public void setStation(String station)
{
this.station = station;
}
public String getStation()
{
return station;
}
public void setType(String type)
{
this.type = type;
}
public String getType()
{
return type;
}
public void setSpare1(String spare1)
{
this.spare1 = spare1;
}
public String getSpare1()
{
return spare1;
}
public void setSpare2(String spare2)
{
this.spare2 = spare2;
}
public String getSpare2()
{
return spare2;
}
public void setSpare3(String spare3)
{
this.spare3 = spare3;
}
public String getSpare3()
{
return spare3;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("station", getStation())
.append("type", getType())
.append("remark", getRemark())
.append("spare1", getSpare1())
.append("spare2", getSpare2())
.append("spare3", getSpare3())
.toString();
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.bas.agvPoint.mapper;
import java.util.List;
import com.ruoyi.bas.agvPoint.domain.AgvPoint;
/**
* agv站点Mapper接口
*
* @author ruoyi
* @date 2026-03-17
*/
public interface AgvPointMapper
{
/**
* 查询agv站点
*
* @param id agv站点主键
* @return agv站点
*/
public AgvPoint selectAgvPointById(String id);
/**
* 查询agv站点列表
*
* @param agvPoint agv站点
* @return agv站点集合
*/
public List<AgvPoint> selectAgvPointList(AgvPoint agvPoint);
/**
* 新增agv站点
*
* @param agvPoint agv站点
* @return 结果
*/
public int insertAgvPoint(AgvPoint agvPoint);
/**
* 修改agv站点
*
* @param agvPoint agv站点
* @return 结果
*/
public int updateAgvPoint(AgvPoint agvPoint);
/**
* 删除agv站点
*
* @param id agv站点主键
* @return 结果
*/
public int deleteAgvPointById(String id);
/**
* 批量删除agv站点
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteAgvPointByIds(String[] ids);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.bas.agvPoint.service;
import java.util.List;
import com.ruoyi.bas.agvPoint.domain.AgvPoint;
/**
* agv站点Service接口
*
* @author ruoyi
* @date 2026-03-17
*/
public interface IAgvPointService
{
/**
* 查询agv站点
*
* @param id agv站点主键
* @return agv站点
*/
public AgvPoint selectAgvPointById(String id);
/**
* 查询agv站点列表
*
* @param agvPoint agv站点
* @return agv站点集合
*/
public List<AgvPoint> selectAgvPointList(AgvPoint agvPoint);
/**
* 新增agv站点
*
* @param agvPoint agv站点
* @return 结果
*/
public int insertAgvPoint(AgvPoint agvPoint);
/**
* 修改agv站点
*
* @param agvPoint agv站点
* @return 结果
*/
public int updateAgvPoint(AgvPoint agvPoint);
/**
* 批量删除agv站点
*
* @param ids 需要删除的agv站点主键集合
* @return 结果
*/
public int deleteAgvPointByIds(String[] ids);
/**
* 删除agv站点信息
*
* @param id agv站点主键
* @return 结果
*/
public int deleteAgvPointById(String id);
}

View File

@@ -0,0 +1,93 @@
package com.ruoyi.bas.agvPoint.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.bas.agvPoint.mapper.AgvPointMapper;
import com.ruoyi.bas.agvPoint.domain.AgvPoint;
import com.ruoyi.bas.agvPoint.service.IAgvPointService;
/**
* agv站点Service业务层处理
*
* @author ruoyi
* @date 2026-03-17
*/
@Service
public class AgvPointServiceImpl implements IAgvPointService
{
@Autowired
private AgvPointMapper agvPointMapper;
/**
* 查询agv站点
*
* @param id agv站点主键
* @return agv站点
*/
@Override
public AgvPoint selectAgvPointById(String id)
{
return agvPointMapper.selectAgvPointById(id);
}
/**
* 查询agv站点列表
*
* @param agvPoint agv站点
* @return agv站点
*/
@Override
public List<AgvPoint> selectAgvPointList(AgvPoint agvPoint)
{
return agvPointMapper.selectAgvPointList(agvPoint);
}
/**
* 新增agv站点
*
* @param agvPoint agv站点
* @return 结果
*/
@Override
public int insertAgvPoint(AgvPoint agvPoint)
{
return agvPointMapper.insertAgvPoint(agvPoint);
}
/**
* 修改agv站点
*
* @param agvPoint agv站点
* @return 结果
*/
@Override
public int updateAgvPoint(AgvPoint agvPoint)
{
return agvPointMapper.updateAgvPoint(agvPoint);
}
/**
* 批量删除agv站点
*
* @param ids 需要删除的agv站点主键
* @return 结果
*/
@Override
public int deleteAgvPointByIds(String[] ids)
{
return agvPointMapper.deleteAgvPointByIds(ids);
}
/**
* 删除agv站点信息
*
* @param id agv站点主键
* @return 结果
*/
@Override
public int deleteAgvPointById(String id)
{
return agvPointMapper.deleteAgvPointById(id);
}
}

View File

@@ -1,7 +1,10 @@
package com.ruoyi.pda.controller;
import com.ruoyi.api.domain.AgvMoveParam;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WcsPort;
import com.ruoyi.api.service.IToWcsService;
import com.ruoyi.bas.agvPoint.domain.AgvPoint;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -32,6 +35,8 @@ public class PdaController extends BaseController {
private PdaService pdaService;
@Autowired
private IInStockinDetailService iInStockinDetailService;
@Autowired
private IToWcsService iToWcsService;
/**
* 查询是否有半满托盘
@@ -129,9 +134,6 @@ public class PdaController extends BaseController {
}
/**
* 入库扫码生成作业
*/
@@ -149,10 +151,6 @@ public class PdaController extends BaseController {
return pdaService.selectDetailByPDTray(trayCodeMakeSure);
}
/**
* 盘点出库确认
*
@@ -179,6 +177,22 @@ public class PdaController extends BaseController {
return pdaService.updateWcsPort(wcsPort);
}
/**
* 根据类型查询AGV站点
*/
@RequestMapping("/selectAgvPointByType")
@ResponseBody
public AjaxResult selectAgvPointByType(String type) {
List<AgvPoint> list = pdaService.selectAgvPointByType(type);
return AjaxResult.success(list);
}
@RequestMapping("/insertAgvJob")
@ResponseBody
public AjaxResult insertAgvJob(@RequestBody AgvMoveParam agvMoveParam) {
return iToWcsService.insertAgvMoveJob(agvMoveParam);
}
}

View File

@@ -2,6 +2,7 @@ package com.ruoyi.pda.service;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WcsPort;
import com.ruoyi.bas.agvPoint.domain.AgvPoint;
import com.ruoyi.bas.container.domain.BasContainer;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.pda.domain.TrayCodeMakeSure;
@@ -55,5 +56,6 @@ public interface PdaService {
AjaxResult updateWcsPort(WcsPort wcsport);
List<AgvPoint> selectAgvPointByType(String type);
}

View File

@@ -6,6 +6,8 @@ import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WcsPort;
import com.ruoyi.api.service.IToWcsService;
import com.ruoyi.api.service.IToWmsService;
import com.ruoyi.bas.agvPoint.domain.AgvPoint;
import com.ruoyi.bas.agvPoint.service.IAgvPointService;
import com.ruoyi.check.commit.domain.CheckCommitRecord;
import com.ruoyi.check.commit.service.ICheckCommitRecordService;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -60,6 +62,8 @@ public class PdaServiceImp implements PdaService {
private BasStockMapper basStockMapper;
@Autowired
private IInStockinService inStockinService;
@Autowired
private IAgvPointService agvPointService;
@Override
@@ -199,9 +203,9 @@ public class PdaServiceImp implements PdaService {
@Override
public AjaxResult selectDetailByPDTray(TrayCodeMakeSure trayCodeMakeSure) {
MydoJob mydoJob = new MydoJob();
mydoJob.setExitId(trayCodeMakeSure.getExitId());
mydoJob.setTrayCode(trayCodeMakeSure.getTrayCode());
mydoJob.setStatus("3");
mydoJob.setInOrOut("26");
mydoJob.setInOrOut("28");
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectPdMydoJobDetailListByExit(mydoJob);
return AjaxResult.success(mydoJobDetails);
}
@@ -239,9 +243,9 @@ public class PdaServiceImp implements PdaService {
public AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
MydoJob mydoJob = new MydoJob();
mydoJob.setExitId(trayCodeMakeSure.getExitId());
mydoJob.setTrayCode(trayCodeMakeSure.getTrayCode());
mydoJob.setStatus("3");
mydoJob.setInOrOut("26");
mydoJob.setInOrOut("28");
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectPdMydoJobDetailListByExit(mydoJob);
if (mydoJobDetails.isEmpty()) {
return AjaxResult.error("该物料没有盘点出库作业,请检查");
@@ -251,7 +255,7 @@ public class PdaServiceImp implements PdaService {
if (CollUtil.isNotEmpty(mydoJobDetailList)) {
boolean flag = mydoJobDetailList.stream().anyMatch(x -> StrUtil.isEmpty(x.getStockId()) && "0".equals(x.getInQuantity()));
if (flag) {
return AjaxResult.warn(MessageUtils.message("warn.message8"));
return AjaxResult.warn(MessageUtils.message("数量不可为0"));
}
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
//插入盘点提交表
@@ -261,7 +265,7 @@ public class PdaServiceImp implements PdaService {
checkCommitRecord.setStockId(mydoJobDetail.getStockId());
checkCommitRecord.setSpare1(mydoJobDetail.getInOrOutDId());
checkCommitRecord.setSpare2(mydoJobDetail.getProductId());
checkCommitRecord.setSpare3(mydoJobDetail.getOutQuantity());
// checkCommitRecord.setSpare3(mydoJobDetail.getOutQuantity());
checkCommitRecordService.insertCheckCommitRecord(checkCommitRecord);
}
@@ -289,4 +293,11 @@ public class PdaServiceImp implements PdaService {
AjaxResult ajaxResult = toWcsService.updateWcsPort(wcsport);
return ajaxResult;
}
@Override
public List<AgvPoint> selectAgvPointByType(String type) {
AgvPoint agvPoint = new AgvPoint();
agvPoint.setType(type);
return agvPointService.selectAgvPointList(agvPoint);
}
}

View File

@@ -0,0 +1,82 @@
<?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.ruoyi.bas.agvPoint.mapper.AgvPointMapper">
<resultMap type="AgvPoint" id="AgvPointResult">
<result property="id" column="id" />
<result property="station" column="station" />
<result property="type" column="type" />
<result property="remark" column="remark" />
<result property="spare1" column="spare1" />
<result property="spare2" column="spare2" />
<result property="spare3" column="spare3" />
</resultMap>
<sql id="selectAgvPointVo">
select id, station, type, remark, spare1, spare2, spare3 from agv_point
</sql>
<select id="selectAgvPointList" parameterType="AgvPoint" resultMap="AgvPointResult">
<include refid="selectAgvPointVo"/>
<where>
<if test="station != null and station != ''"> and station = #{station}</if>
<if test="type != null and type != ''"> and type = #{type}</if>
<if test="spare1 != null and spare1 != ''"> and spare1 = #{spare1}</if>
<if test="spare2 != null and spare2 != ''"> and spare2 = #{spare2}</if>
<if test="spare3 != null and spare3 != ''"> and spare3 = #{spare3}</if>
</where>
</select>
<select id="selectAgvPointById" parameterType="String" resultMap="AgvPointResult">
<include refid="selectAgvPointVo"/>
where id = #{id}
</select>
<insert id="insertAgvPoint" parameterType="AgvPoint">
insert into agv_point
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="station != null">station,</if>
<if test="type != null">type,</if>
<if test="remark != null">remark,</if>
<if test="spare1 != null">spare1,</if>
<if test="spare2 != null">spare2,</if>
<if test="spare3 != null">spare3,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="station != null">#{station},</if>
<if test="type != null">#{type},</if>
<if test="remark != null">#{remark},</if>
<if test="spare1 != null">#{spare1},</if>
<if test="spare2 != null">#{spare2},</if>
<if test="spare3 != null">#{spare3},</if>
</trim>
</insert>
<update id="updateAgvPoint" parameterType="AgvPoint">
update agv_point
<trim prefix="SET" suffixOverrides=",">
<if test="station != null">station = #{station},</if>
<if test="type != null">type = #{type},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="spare1 != null">spare1 = #{spare1},</if>
<if test="spare2 != null">spare2 = #{spare2},</if>
<if test="spare3 != null">spare3 = #{spare3},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteAgvPointById" parameterType="String">
delete from agv_point where id = #{id}
</delete>
<delete id="deleteAgvPointByIds" parameterType="String">
delete from agv_point where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@@ -404,7 +404,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mjd.spare4,
mjd.pick_quantity,
mjd.out_quantity-mjd.pick_quantity as pick_quantity_real,
bp.product_name,
mjd.product_name,
mjd.spare5,
mjd.spare6,
mjd.spare7,
@@ -415,11 +415,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mj.tray_code
from mydo_job_detail mjd
left join bas_product bp on mjd.product_id = bp.product_id
left join mydo_job mj on mjd.job_id = mj.job_id
where mj.exit_id=#{exitId}
where tray_code=#{trayCode}
and mj.status='3'
and mj.execution_phase=2
and mj.in_or_out = #{inOrOut}
</select>
</mapper>