add:新增 缓存区一键移库 功能

This commit is contained in:
zds
2024-08-21 13:29:40 +08:00
parent 78176aa862
commit c1624606e8
15 changed files with 454 additions and 7 deletions

View File

@@ -49,6 +49,14 @@ public class ReportController {
return new ResponseEntity<>(TableDataInfo.build(reportService.queryYlOutDetail(whereJson,page)),HttpStatus.OK);
}
@GetMapping("/yl/movedetail")
@Log("原料库工单库存明细")
@ApiOperation("原料库工单库存明细")
//@SaCheckPermission("@el.check('material:list')")
public ResponseEntity<Object> queryMoveDetail(ReportQuery whereJson, PageQuery page){
return new ResponseEntity<>(TableDataInfo.build(reportService.queryMoveDetail(whereJson,page)),HttpStatus.OK);
}
@GetMapping("/yl/in")
@Log("原材入库明细")
@ApiOperation("原材入库明细")

View File

@@ -40,6 +40,14 @@ public interface IReportService extends IService<ReportDto> {
*/
IPage<YCLKCDto> queryYlOutDetail(ReportQuery whereJson, PageQuery pageable);
/**
* 查询原料缓存区库存
* @param whereJson
* @param pageable
* @return
*/
IPage<YCLKCDto> queryMoveDetail(ReportQuery whereJson, PageQuery pageable);
IPage<YlDto> queryYlIn(ReportQuery whereJson, PageQuery pageable);
IPage<YlDto> queryYlOut(ReportQuery whereJson, PageQuery pageable);

View File

@@ -27,6 +27,8 @@ public interface ReportMapper extends BaseMapper<ReportDto> {
IPage<YCLKCDto> queryYlOutDetail(IPage<YCLKCDto> pages, ReportQuery query);
IPage<YCLKCDto> queryMoveDetail(IPage<YCLKCDto> pages, ReportQuery query);
IPage<YlDto> queryYlIn(IPage<YlDto> pages, ReportQuery query);
IPage<YlDto> queryYlOut(IPage<YlDto> pages, ReportQuery query);

View File

@@ -121,6 +121,7 @@
AND p.vehicle_code2 IS NOT NULL
AND t.STATUS IN ( '0','1')
AND p.region_code IN ( 'YL','YLHC','KJHC' )
AND (p.ing_task_code IS NULL or p.ing_task_code = '')
<if test="query.supplierName != null">
and m2.supplierName like CONCAT('%', #{query.supplierName}, '%')
</if>
@@ -147,6 +148,36 @@
ORDER BY point_code ASC
</select>
<select id="queryMoveDetail" resultType="org.nl.wms.sch.report.service.dto.YCLKCDto">
SELECT
a.*
FROM
(
SELECT
p.point_code AS pointCode,
p.region_name AS regionName,
p.vehicle_code2 AS subTray,
p.vehicle_code AS motherTray,
( CASE WHEN ( p.ing_task_code = '' OR p.ing_task_code IS NULL ) THEN 0 ELSE 1 END ) AS STATUS,
p.update_time AS updateTime
FROM
sch_base_point p
WHERE
p.vehicle_code2 != ''
AND p.vehicle_code2 IS NOT NULL
AND p.is_used = '1'
AND P.vehicle_code2 NOT LIKE '%YBHC%'
AND (p.ing_task_code IS NULL or p.ing_task_code = '')
AND p.region_code IN ( 'YLHC' )) a
<if test="query.point_code != null">
and a.point_code like CONCAT('%', #{query.point_code}, '%')
</if>
<if test="query.status != null">
and a.status = #{query.point_code}
</if>
ORDER BY a.pointCode ASC
</select>
<select id="queryYlIn" resultType="org.nl.wms.sch.report.service.dto.YlDto">
SELECT
m.lotSN,

View File

@@ -54,6 +54,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, ReportDto> impl
return pages;
}
@Override
public IPage<YCLKCDto> queryMoveDetail(ReportQuery query, PageQuery pageQuery){
IPage<YCLKCDto> pages = new Page<>(pageQuery.getPage() + 1, pageQuery.getSize());
pages = reportMapper.queryMoveDetail(pages, query);
return pages;
}
@Override
public IPage<YlDto> queryYlIn(ReportQuery query, PageQuery pageQuery){
IPage<YlDto> pages = new Page<>(pageQuery.getPage() + 1, pageQuery.getSize());

View File

@@ -59,6 +59,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
@Autowired
private AcsToWmsService acsToWmsService;
@Autowired
private ISchBasePointService pointService;
@Override
public IPage<SchBaseTask> queryAll(Map whereJson, PageQuery page) {
@@ -293,6 +295,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
.eq(SchBasePoint::getRegion_code, "YL")
.eq(SchBasePoint::getIs_used, true)
.eq(SchBasePoint::getVehicle_qty, 0)
.and(slam -> slam.isNull(SchBasePoint::getVehicle_code2)
.or()
.eq(SchBasePoint::getVehicle_code2, ""))
.and(slam -> slam.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, "")));
@@ -302,13 +307,23 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
return;
}
JSONObject param = new JSONObject();
SchBasePoint nexSchBasePoint = nextList.get(0);
param.put("start_point", schBasePoint.getPoint_code());
param.put("next_point", nextList.get(0).getPoint_code());
param.put("next_point", nexSchBasePoint.getPoint_code());
param.put("request_medthod_code", "POINTTask");
param.put("request_medthod_name", "点对点任务");
param.put("device_code", param.getString("start_point"));
param.put("vehicle_code",schBasePoint.getVehicle_code());
param.put("vehicle_code2",schBasePoint.getVehicle_code2());
param.put("device_code", schBasePoint.getPoint_code());
acsToWmsService.pdaApply(param);
//发起任务时先把点位占用,防止发起重复任务
schBasePoint.setIng_task_code("1");
pointService.update(schBasePoint);
nexSchBasePoint.setIng_task_code("1");
pointService.update(nexSchBasePoint);
nextList.remove(0);
}
}
}

View File

@@ -68,4 +68,13 @@ public class WorkorderController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/batchCreate")
@Log("批量生成移库任务")
@ApiOperation("批量生成移库任务")
public ResponseEntity<Object> batchCreate(@RequestBody PointDetailAdd pointDetailAdd){
log.info("批量生成移库任务:"+pointDetailAdd.toString());
workorderService.batchCreate(pointDetailAdd);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -53,6 +53,12 @@ public interface IWorkorderService extends IService<Workorder> {
*/
void batchChange( PointDetailAdd pointDetailAdd);
/**
* 批量生成移库任务
* @param pointDetailAdd
*/
void batchCreate( PointDetailAdd pointDetailAdd);
/**
* 批量生成工单出库任务
*/

View File

@@ -57,6 +57,7 @@
AND p.vehicle_code2 IS NOT NULL
AND t.STATUS = '1'
AND p.region_code IN ( 'YL','YLHC','KJHC' )
AND (p.ing_task_code IS NULL or p.ing_task_code = '')
GROUP BY
pointCode
ORDER BY point_code ASC
@@ -105,6 +106,7 @@
AND p.vehicle_code2 IS NOT NULL
AND t.STATUS IN ( '0' )
AND p.region_code IN ( 'YL','YLHC','KJHC' )
AND (p.ing_task_code IS NULL or p.ing_task_code = '')
GROUP BY
pointCode
ORDER BY point_code ASC

View File

@@ -12,8 +12,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.ext.service.AcsToWmsService;
import org.nl.wms.pda.service.PdaService;
import org.nl.wms.pdm.service.dao.PointDetailAdd;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.report.service.dto.YCLKCDto;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
@@ -44,6 +47,12 @@ public class WorkorderServiceImpl extends ServiceImpl<WorkorderMapper, Workorder
private ISchBaseTaskService taskService;
@Autowired
private PdaService pdaService;
@Autowired
private ISchBasePointService schBasePointService;
@Autowired
private AcsToWmsService acsToWmsService;
@Autowired
private ISchBasePointService pointService;
@Override
public IPage<Workorder> queryAll(WorkorderQuery whereJson, PageQuery page){
@@ -111,6 +120,63 @@ public class WorkorderServiceImpl extends ServiceImpl<WorkorderMapper, Workorder
//更新工单状态和回温模式
workorderMapper.batchChange(pointCodes,mode,status);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchCreate( PointDetailAdd pointDetailAdd){
log.info("管理端发起一键移库!");
//点位集合
List<String> pointCodes = pointDetailAdd.getPointCodes();
//下发状态
String status = pointDetailAdd.getStatus();
if("1".equals(status)){
for(String pointCode : pointCodes){
//查询当前点位最新信息
SchBasePoint schBasePoint =schBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getIs_used, true)
.eq(SchBasePoint::getRegion_code, "YLHC")
.eq(SchBasePoint::getPoint_code, pointCode)
.notLike(SchBasePoint::getVehicle_code2, "YBHC")
.and(slam -> slam.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, "")
));
if(ObjectUtil.isNull(schBasePoint)){
continue;
}
//查询是否有目的空点位
SchBasePoint nexSchBasePoint = schBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, "YL")
.eq(SchBasePoint::getIs_used, true)
.eq(SchBasePoint::getVehicle_qty, 0)
.and(slam -> slam.isNull(SchBasePoint::getVehicle_code2)
.or()
.eq(SchBasePoint::getVehicle_code2, ""))
.and(slam -> slam.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, "")));
if(ObjectUtil.isNull(nexSchBasePoint)){
log.info("原料库存区无可用点位,取消后续循环");
break;
}
JSONObject param = new JSONObject();
param.put("start_point", schBasePoint.getPoint_code());
param.put("next_point", nexSchBasePoint.getPoint_code());
param.put("request_medthod_code", "POINTTask");
param.put("request_medthod_name", "点对点任务");
param.put("vehicle_code",schBasePoint.getVehicle_code());
param.put("vehicle_code2",schBasePoint.getVehicle_code2());
param.put("device_code", schBasePoint.getPoint_code());
acsToWmsService.pdaApply(param);
//发起任务时先把点位占用,防止发起重复任务
schBasePoint.setIng_task_code("1");
pointService.update(schBasePoint);
nexSchBasePoint.setIng_task_code("1");
pointService.update(nexSchBasePoint);
}
}
}
@Override
//@Transactional(rollbackFor = Exception.class)
public void batchCreateTask(){