看板实现

This commit is contained in:
psh
2024-06-14 17:08:44 +08:00
parent d2dc32778e
commit f138b214e4
13 changed files with 327 additions and 7 deletions

View File

@@ -0,0 +1,50 @@
package org.nl.wms.board.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.board.service.BoardService;
import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
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 javax.annotation.Resource;
@Slf4j
@RestController
@Api(tags = "看板接口")
@RequestMapping("/api/board" +
"")
@SaIgnore
@Lazy
public class BoardController {
@Resource
private BoardService boardService;
@PostMapping("/point")
@Log("点位详情")
@ApiOperation("点位详情")
@SaIgnore
public ResponseEntity<Object> point(){
return new ResponseEntity<>(boardService.point(), HttpStatus.OK);
}
@PostMapping("/kc")
@Log("库存状态")
@ApiOperation("库存状态")
@SaIgnore
public ResponseEntity<Object> kc(){
return new ResponseEntity<>(boardService.kc(), HttpStatus.OK);
}
}

View File

@@ -0,0 +1,10 @@
package org.nl.wms.board.service;
import com.alibaba.fastjson.JSONObject;
public interface BoardService {
JSONObject point();
JSONObject kc();
}

View File

@@ -0,0 +1,14 @@
package org.nl.wms.board.service.dao.dto;
import lombok.Data;
@Data
public class Detail {
private Integer sum1;
private Integer use1;
private Integer empty1;
private Integer sum2;
private Integer use2;
private Integer empty2;
}

View File

@@ -0,0 +1,12 @@
package org.nl.wms.board.service.dao.dto;
import lombok.Data;
import java.util.List;
@Data
public class KCDto {
private List<KCFX> kcfx;
private List<QS> qs;
private List<Today> today;
}

View File

@@ -0,0 +1,9 @@
package org.nl.wms.board.service.dao.dto;
import lombok.Data;
@Data
public class KCFX {
private String material_name;
private Integer sum;
}

View File

@@ -0,0 +1,10 @@
package org.nl.wms.board.service.dao.dto;
import lombok.Data;
@Data
public class Point {
private String point_code;
private String material_name;
private String point_status;
}

View File

@@ -0,0 +1,11 @@
package org.nl.wms.board.service.dao.dto;
import lombok.Data;
import java.util.List;
@Data
public class PointDto {
private Detail detail;
private List<Point> pointList;
}

View File

@@ -0,0 +1,9 @@
package org.nl.wms.board.service.dao.dto;
import lombok.Data;
@Data
public class QS {
private String direction;
private String date;
private Integer num;
}

View File

@@ -0,0 +1,11 @@
package org.nl.wms.board.service.dao.dto;
import lombok.Data;
@Data
public class Today {
private String time;
private String point_code;
private String material_name;
private String direction;
private String number;
}

View File

@@ -0,0 +1,19 @@
package org.nl.wms.board.service.dao.mapper;
import org.nl.wms.board.service.dao.dto.*;
import java.util.List;
public interface BoardMapper {
Detail detail();
List<Point> point();
List<KCFX> kcfx();
List<QS> qs();
List<Today> today();
}

View File

@@ -0,0 +1,92 @@
<?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="org.nl.wms.board.service.dao.mapper.BoardMapper">
<select id="point" resultType="org.nl.wms.board.service.dao.dto.Point">
SELECT
p.point_code,
m.material_name,
p.point_status
FROM
sch_base_point p
LEFT JOIN sch_base_vehiclematerialgroup v ON p.vehicle_code = v.vehicle_code
LEFT JOIN md_base_material m ON v.material_id = m.material_id
WHERE
p.region_code = 'ZC'
</select>
<select id="detail" resultType="org.nl.wms.board.service.dao.dto.Detail">
SELECT
SUM(CASE WHEN row_num BETWEEN 1 AND 18 THEN 1 ELSE 0 END) AS sum2,
SUM(CASE WHEN row_num BETWEEN 1 AND 18 AND point_status = 2 THEN 1 ELSE 0 END) AS use2,
SUM(CASE WHEN row_num BETWEEN 1 AND 18 AND point_status = 1 THEN 1 ELSE 0 END) AS empty2,
SUM(CASE WHEN row_num BETWEEN 19 AND 30 THEN 1 ELSE 0 END) AS sum1,
SUM(CASE WHEN row_num BETWEEN 19 AND 30 AND point_status = 2 THEN 1 ELSE 0 END) AS use1,
SUM(CASE WHEN row_num BETWEEN 19 AND 30 AND point_status = 1 THEN 1 ELSE 0 END) AS empty1
FROM
sch_base_point p
where p.region_code='ZC'
</select>
<select id="kcfx" resultType="org.nl.wms.board.service.dao.dto.KCFX">
SELECT
m.material_name,
SUM( v.material_qty ) AS sum
FROM
sch_base_point p
LEFT JOIN sch_base_vehiclematerialgroup v ON p.vehicle_code = v.vehicle_code
LEFT JOIN md_base_material m ON v.material_id = m.material_id
WHERE
p.region_code = 'ZC'
AND material_name IS NOT NULL
GROUP BY
material_name
</select>
<select id="qs" resultType="org.nl.wms.board.service.dao.dto.QS">
SELECT
CASE WHEN process_action = '固化室出口到暂存区' THEN 0 ELSE 1 END as direction,
DATE_FORMAT(record_time, '%m-%d') AS date,
COUNT(*) AS num
FROM
pdm_bd_production_process_tracking
WHERE
record_time >= CURDATE() - INTERVAL 7 DAY
and (process_action='固化室出口到暂存区' or process_action='暂存区人工出库')
GROUP BY
process_action,
date
ORDER BY
process_action,
date
</select>
<select id="today" resultType="org.nl.wms.board.service.dao.dto.Today">
SELECT
*
FROM
(
SELECT
pt.record_time AS time,
pt.process_location AS point_code,
m.material_name,
CASE
WHEN process_action = '固化室出口到暂存区' THEN
0 ELSE 1
END AS direction,
v.material_qty AS number
FROM
pdm_bd_production_process_tracking pt
LEFT JOIN sch_base_vehiclematerialgroup v ON pt.buss_move_id = v.buss_move_id
LEFT JOIN md_base_material m ON v.material_id = m.material_id
WHERE
process_action = '固化室出口到暂存区'
OR process_action = '暂存区人工出库'
) a
WHERE
DATE( a.time ) = CURDATE()
</select>
</mapper>

View File

@@ -0,0 +1,42 @@
package org.nl.wms.board.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.RedisUtils;
import org.nl.wms.board.service.BoardService;
import org.nl.wms.board.service.dao.dto.*;
import org.nl.wms.board.service.dao.mapper.BoardMapper;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class BoardServiceImpl implements BoardService {
@Autowired
private BoardMapper boardMapper;
@Autowired
private ISchBasePointService pointService;
public JSONObject point() {
PointDto pointDto = new PointDto();
pointDto.setPointList(boardMapper.point());
pointDto.setDetail(boardMapper.detail());
return JSONObject.parseObject(JSON.toJSONString(pointDto, SerializerFeature.WriteNullStringAsEmpty));
}
public JSONObject kc() {
KCDto kcdto = new KCDto();
kcdto.setKcfx(boardMapper.kcfx());
kcdto.setQs(boardMapper.qs());
kcdto.setToday(boardMapper.today());
return JSONObject.parseObject(JSON.toJSONString(kcdto, SerializerFeature.WriteNullStringAsEmpty));
}
}

View File

@@ -1,13 +1,21 @@
package org.nl.wms.sch.point.service.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.RedisUtils;
import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService;
import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -24,6 +32,11 @@ public class SyncPoint {
@Autowired
private ISchBasePointService schBasePointService;
@Autowired
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Autowired
private IPdmBdProductionProcessTrackingService processTrackingService;
public void run() throws Exception {
try {
@@ -40,14 +53,32 @@ public class SyncPoint {
List<SchBasePoint> schBasePointList = schBasePointService.getPointList(schBasePoint);
JSONArray jsonArray = JSONArray.parseArray(result.body());
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject=jsonArray.getJSONObject(i);
for(SchBasePoint temp:schBasePointList){
if (temp.getPoint_code().equals(jsonObject.getString("binNo"))){
if(jsonObject.getInteger("pred")==0&&"2".equals(temp.getPoint_status())
||jsonObject.getInteger("pred")==1&&"1".equals(temp.getPoint_status())){
log.info("检测到点位{}当前库存有变动pred={}更新lms库存",jsonObject.getString("binNo"),jsonObject.getInteger("pred"));
temp.setPoint_status(String.valueOf(jsonObject.getInteger("pred")+1));
JSONObject jsonObject = jsonArray.getJSONObject(i);
for (SchBasePoint temp : schBasePointList) {
if (temp.getPoint_code().equals(jsonObject.getString("binNo"))) {
if (jsonObject.getInteger("pred") == 0 && "2".equals(temp.getPoint_status())
|| jsonObject.getInteger("pred") == 1 && "1".equals(temp.getPoint_status())) {
log.info("检测到点位{}当前库存有变动pred={}更新lms库存", jsonObject.getString("binNo"), jsonObject.getInteger("pred"));
temp.setPoint_status(String.valueOf(jsonObject.getInteger("pred") + 1));
temp.setVehicle_type("");
temp.setVehicle_code("");
temp.setIng_task_code("");
temp.setVehicle_qty(0);
temp.setUpdate_time(DateUtil.now());
schBasePointService.update(temp);
SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getVehicleGroupInfo(
temp.getVehicle_code(),
temp.getVehicle_type(),
GroupBindMaterialStatusEnum.BOUND.getValue());
groupInfo.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
vehiclematerialgroupService.update(groupInfo);
// 插入生产过程跟踪表
PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking();
processTracking.setBuss_move_id(groupInfo.getBuss_move_id());
processTracking.setProcess_action("暂存区人工出库");
processTracking.setProcess_location(temp.getPoint_code());
processTracking.setRecord_time(DateUtil.now());
processTrackingService.create(processTracking);
break;
}
}