11/6 货架管理1.0

dev_unify
wangwei 8 months ago
parent efdc7cb70f
commit af8e236530

@ -0,0 +1,58 @@
package com.glxp.api.controller.auth;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.controller.BaseController;
import com.glxp.api.req.basic.SysWorkplaceLayerRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.basic.SysWorkplaceFreightResponse;
import com.glxp.api.res.basic.SysWorkplaceLayerResponse;
import com.glxp.api.service.basic.SysWorkplaceFreightService;
import com.glxp.api.service.basic.SysWorkplaceLayerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author : zhuzhu
* @date : 2024/11/6 10:14
* @modyified By :
*/
@Slf4j
@RestController
public class SysWorkplaceLayerController extends BaseController {
@Resource
SysWorkplaceLayerService sysWorkplaceLayerService;
@GetMapping("/udiwms/WorkplaceLayer/createCodeByFreightCode")
public BaseResponse createFreightCode(String freightCode) {
String code = sysWorkplaceLayerService.createCodeByFreightCode(freightCode);
return ResultVOUtils.success(code);
}
@GetMapping("/udiwms/WorkplaceLayer/getLayerPage")
public BaseResponse createFreightCode(SysWorkplaceLayerRequest request) {
List<SysWorkplaceLayerResponse> page = sysWorkplaceLayerService.filterList(request);
PageInfo<SysWorkplaceLayerResponse> pageInfo = new PageInfo<>(page);
PageSimpleResponse<SysWorkplaceLayerResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(page);
return ResultVOUtils.success(pageSimpleResponse);
}
@PostMapping("/udiwms/WorkplaceLayer/save")
public BaseResponse saveCode(@RequestBody SysWorkplaceLayerRequest request){
Boolean save = sysWorkplaceLayerService.addSysWorkplaceLayer(request,getUserId());
return ResultVOUtils.success();
}
}

@ -168,7 +168,7 @@ public class SysWorkplaceQueueController extends BaseController {
//后面做的搜索可能就得在这个接口进行修改了 //后面做的搜索可能就得在这个接口进行修改了
@GetMapping("/udiwms/sysWorkplaceQueue/getQueueListByFreightCode") @GetMapping("/udiwms/sysWorkplaceQueue/getQueueList")
public BaseResponse getQueueListByFreightCode(SysWorkplaceQueueRequest request) { public BaseResponse getQueueListByFreightCode(SysWorkplaceQueueRequest request) {
List<SysWorkplaceQueueResponse> page = sysWorkplaceQueueService.filterListFreightCode(request); List<SysWorkplaceQueueResponse> page = sysWorkplaceQueueService.filterListFreightCode(request);
PageInfo<SysWorkplaceQueueResponse> pageInfo = new PageInfo<>(page); PageInfo<SysWorkplaceQueueResponse> pageInfo = new PageInfo<>(page);

@ -0,0 +1,18 @@
package com.glxp.api.dao.basic;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.basic.SysWorkplaceLayer;
import com.glxp.api.req.basic.SysWorkplaceLayerRequest;
import com.glxp.api.res.basic.SysWorkplaceLayerResponse;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SysWorkplaceLayerMapper extends BaseMapper<SysWorkplaceLayer> {
SysWorkplaceLayer getMaxCodeByFreightCode(String freightCode);
List<SysWorkplaceLayerResponse> filterList(SysWorkplaceLayerRequest request);
}

@ -19,4 +19,8 @@ public interface SysWorkplaceQueueMapper extends BaseMapper<SysWorkplaceQueue> {
List<SysWorkplaceQueueResponse> filterListFreightCode(SysWorkplaceQueueRequest request); List<SysWorkplaceQueueResponse> filterListFreightCode(SysWorkplaceQueueRequest request);
Integer selectMaxGrid(@Param("freightCode") String freightCode,@Param("layer") Integer layer); Integer selectMaxGrid(@Param("freightCode") String freightCode,@Param("layer") Integer layer);
String selectMaxCode(String layerCode);
SysWorkplaceQueue selectByLayerCode(String layerCode);
} }

@ -40,6 +40,14 @@ public class SysWorkplaceFreight implements Serializable {
@ApiModelProperty(value = "工位ID") @ApiModelProperty(value = "工位ID")
private Long workPlaceIdFk; private Long workPlaceIdFk;
/**
*
*/
@TableField(value = "layerNum")
@ApiModelProperty(value = "摆货层数量")
private Long layerNum;
/** /**
* *
*/ */

@ -0,0 +1,70 @@
package com.glxp.api.entity.basic;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@ApiModel(description = "sys_workplace_layer")
@Data
@TableName(value = "sys_workplace_layer")
public class SysWorkplaceLayer implements Serializable {
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value = "")
private Integer id;
/**
* code
*/
@TableField(value = "code")
@ApiModelProperty(value = "货位编码")
private String code;
/**
*
*/
@TableField(value = "remark")
@ApiModelProperty(value = "备注")
private String remark;
@TableField(value = "createTime")
@ApiModelProperty(value = "")
private Date createTime;
@TableField(value = "updateTime")
@ApiModelProperty(value = "")
private Date updateTime;
@TableField(value = "`createUser`")
@ApiModelProperty(value = "")
private String createUser;
@TableField(value = "updateUser")
@ApiModelProperty(value = "")
private String updateUser;
/**
* code
*/
@TableField(value = "freightCode")
@ApiModelProperty(value = "")
private String freightCode;
/**
*
*/
@TableField(value = "queueNum")
@ApiModelProperty(value = "")
private Integer queueNum;
private static final long serialVersionUID = 1L;
}

@ -73,11 +73,11 @@ public class SysWorkplaceQueue implements Serializable {
private String freightCode; private String freightCode;
/** /**
* * code
*/ */
@TableField(value = "layer") @TableField(value = "layerCode")
@ApiModelProperty(value = "") @ApiModelProperty(value = "")
private Integer layer; private String layerCode;
/** /**
* *

@ -0,0 +1,33 @@
package com.glxp.api.req.basic;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
/**
* @author : zhangsan
* @date : 2024/10/30 10:42
* @modyified By :
*/
@Data
public class SysWorkplaceLayerRequest extends ListPageRequest {
/**
*
*/
private String code;
/**
*
*/
private Integer queueNum;
/**
* code
*/
private String freightCode;
private Long workPlaceIdFk;
private String remark;
}

@ -31,6 +31,13 @@ public class SysWorkplaceQueueRequest extends ListPageRequest {
*/ */
private String freightCode; private String freightCode;
/**
* code
*/
private String layerCode;

@ -52,6 +52,11 @@ public class SysWorkplaceFreightResponse {
*/ */
private String workPlaceName; private String workPlaceName;
/**
*
*/
private Integer layerCount;

@ -0,0 +1,69 @@
package com.glxp.api.res.basic;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author : zhuzhu
* @date : 2024/11/4 11:08
* @modyified By :
*/
@Data
public class SysWorkplaceLayerResponse {
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value = "")
private Integer id;
/**
* code
*/
@TableField(value = "code")
@ApiModelProperty(value = "货位编码")
private String code;
/**
*
*/
@TableField(value = "remark")
@ApiModelProperty(value = "备注")
private String remark;
@TableField(value = "createTime")
@ApiModelProperty(value = "")
private Date createTime;
@TableField(value = "updateTime")
@ApiModelProperty(value = "")
private Date updateTime;
@TableField(value = "`createUser`")
@ApiModelProperty(value = "")
private String createUser;
@TableField(value = "updateUser")
@ApiModelProperty(value = "")
private String updateUser;
/**
* code
*/
@TableField(value = "freightCode")
@ApiModelProperty(value = "")
private String freightCode;
/**
*
*/
@TableField(value = "queueNum")
@ApiModelProperty(value = "")
private Integer queueNum;
}

@ -0,0 +1,125 @@
package com.glxp.api.service.basic;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.basic.SysWorkplaceLayerMapper;
import com.glxp.api.dao.basic.SysWorkplaceQueueMapper;
import com.glxp.api.entity.basic.SysWorkplaceFreight;
import com.glxp.api.entity.basic.SysWorkplaceLayer;
import com.glxp.api.req.basic.SysWorkplaceLayerRequest;
import com.glxp.api.req.basic.SysWorkplaceQueueRequest;
import com.glxp.api.res.basic.SysWorkplaceLayerResponse;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Service
public class SysWorkplaceLayerService extends ServiceImpl<SysWorkplaceLayerMapper, SysWorkplaceLayer> {
@Resource
private SysWorkplaceLayerMapper sysWorkplaceLayerMapper;
@Resource
private SysWorkplaceQueueService sysWorkplaceQueueService;
@Resource
private SysWorkplaceFreightService sysWorkplaceFreightService;
public String createCodeByFreightCode(String freightCode) {
String code = "";
SysWorkplaceLayer sysWorkplaceLayer = sysWorkplaceLayerMapper.getMaxCodeByFreightCode(freightCode);
if (sysWorkplaceLayer == null) {
//该货架没有摆货层
int result = 1;
String sixDigitResult = String.format("%02d", result);
code = freightCode + sixDigitResult;
} else {
String code1 = sysWorkplaceLayer.getCode();
String withoutDMQ = code1.replace(freightCode, "");
Integer result = Integer.parseInt(withoutDMQ.trim());
result += 1;
String sixDigitResult = String.format("%02d", result);
code = freightCode + sixDigitResult;
}
return code;
}
@Transactional(rollbackFor = Exception.class)
public Boolean addSysWorkplaceLayer(SysWorkplaceLayerRequest request, Long userId) {
SysWorkplaceFreight sysWorkplaceFreight = sysWorkplaceFreightService.getOne(new LambdaQueryWrapper<SysWorkplaceFreight>().eq(SysWorkplaceFreight::getCode, request.getFreightCode()));
if (sysWorkplaceFreight == null) {
SysWorkplaceFreight freight = new SysWorkplaceFreight();
freight.setCode(request.getFreightCode());
freight.setWorkPlaceIdFk(request.getWorkPlaceIdFk());
freight.setRemark(request.getRemark());
freight.setCreateTime(new Date());
freight.setCreateUser(userId + "");
freight.setUpdateUser(userId + "");
freight.setUpdateTime(new Date());
sysWorkplaceFreightService.WorkplaceFreight(freight);
}
SysWorkplaceLayer workplaceLayer = this.getOne(new LambdaQueryWrapper<SysWorkplaceLayer>().eq(SysWorkplaceLayer::getCode, request.getCode()));
SysWorkplaceQueueRequest sysWorkplaceQueueRequest = new SysWorkplaceQueueRequest();
sysWorkplaceQueueRequest.setLayerCode(request.getCode());
Integer num = 0;
if (workplaceLayer != null) {
//已经有该编码的摆货层 可能根据原来的增加 也可能是根据原来的删减出货槽
Integer queueNum = workplaceLayer.getQueueNum();
Integer newQueueNum = request.getQueueNum();
if (queueNum == newQueueNum){
return true;
}
if (queueNum > newQueueNum) {
num = queueNum - newQueueNum;
//删减
sysWorkplaceQueueRequest.setGrids(num);
sysWorkplaceQueueService.deleteQueue(sysWorkplaceQueueRequest);
} else if (queueNum < request.getQueueNum()) {
//增加
num = newQueueNum - queueNum;
sysWorkplaceQueueRequest.setGrids(num);
sysWorkplaceQueueService.addLayer(sysWorkplaceQueueRequest, userId);
}
workplaceLayer.setQueueNum(newQueueNum);
this.updateById(workplaceLayer);
return true;
}else {
SysWorkplaceLayer sysWorkplaceLayer = new SysWorkplaceLayer();
BeanUtils.copyProperties(request, sysWorkplaceLayer);
initLayer(sysWorkplaceLayer, userId);
sysWorkplaceLayerMapper.insert(sysWorkplaceLayer);
//增加卡槽
Integer queueNum = request.getQueueNum();
sysWorkplaceQueueRequest.setGrids(queueNum);
sysWorkplaceQueueRequest.setLayerCode(request.getCode());
sysWorkplaceQueueService.addLayer(sysWorkplaceQueueRequest, userId);
return true;
}
}
private void initLayer(SysWorkplaceLayer sysWorkplaceLayer, Long userId) {
sysWorkplaceLayer.setCreateUser(userId + "");
sysWorkplaceLayer.setCreateTime(new Date());
sysWorkplaceLayer.setUpdateTime(new Date());
sysWorkplaceLayer.setCreateUser(userId + "");
}
public List<SysWorkplaceLayerResponse> filterList(SysWorkplaceLayerRequest request) {
if (null == request) {
return Collections.emptyList();
}
if (null != request.getPage() && null != request.getLimit()) {
PageHelper.offsetPage((request.getPage() - 1) * request.getLimit(), request.getLimit());
}
return sysWorkplaceLayerMapper.filterList(request);
}
}

@ -70,18 +70,14 @@ public class SysWorkplaceQueueService extends ServiceImpl<SysWorkplaceQueueMappe
public void addLayer(SysWorkplaceQueueRequest request, Long userId) { public void addLayer(SysWorkplaceQueueRequest request, Long userId) {
//获循需要插入的出货槽数量
Integer grid = request.getGrids(); Integer grid = request.getGrids();
// List<SysWorkplaceQueue> sysWorkplaceQueues = new ArrayList<>();
//当前最大层数
Integer layer = getLayer(request.getFreightCode());
for (int n = 1; n <= grid; n++) { for (int n = 1; n <= grid; n++) {
String result = String.format("%02d", layer); String code = getMaxCode(request.getLayerCode());
// String result = String.format("%02d", layer);
SysWorkplaceQueue sysWorkplaceQueue = new SysWorkplaceQueue(); SysWorkplaceQueue sysWorkplaceQueue = new SysWorkplaceQueue();
sysWorkplaceQueue.setFreightCode(request.getFreightCode()); sysWorkplaceQueue.setLayerCode(request.getLayerCode());
// sysWorkplaceQueue.setLayer(getLayer(request.getFreightCode())); sysWorkplaceQueue.setCode(code);
sysWorkplaceQueue.setLayer(layer);
sysWorkplaceQueue.setGrid(Integer.valueOf(createGrid(request.getFreightCode(), layer)));
sysWorkplaceQueue.setCode(request.getFreightCode() + result + createGrid(request.getFreightCode(), layer));
sysWorkplaceQueue.setCreateUser(userId + ""); sysWorkplaceQueue.setCreateUser(userId + "");
sysWorkplaceQueue.setCreateTime(new Date()); sysWorkplaceQueue.setCreateTime(new Date());
sysWorkplaceQueue.setUpdateTime(new Date()); sysWorkplaceQueue.setUpdateTime(new Date());
@ -93,6 +89,23 @@ public class SysWorkplaceQueueService extends ServiceImpl<SysWorkplaceQueueMappe
} }
private String getMaxCode(String layerCode) {
String code = sysWorkplaceQueueMapper.selectMaxCode(layerCode);
if (code == null) {
//该摆货层没有出货槽
int result = 1;
String sixDigitResult = String.format("%02d", result);
code = layerCode + sixDigitResult;
} else{
String withoutDMQ = code.replace(layerCode, "");
Integer result = Integer.parseInt(withoutDMQ.trim());
result += 1;
String sixDigitResult = String.format("%02d", result);
code = layerCode + sixDigitResult;
}
return code;
}
private String createGrid(String freightCode, Integer layer) { private String createGrid(String freightCode, Integer layer) {
Integer grid = sysWorkplaceQueueMapper.selectMaxGrid(freightCode, layer); Integer grid = sysWorkplaceQueueMapper.selectMaxGrid(freightCode, layer);
if (grid == null) { if (grid == null) {
@ -142,4 +155,14 @@ public class SysWorkplaceQueueService extends ServiceImpl<SysWorkplaceQueueMappe
// } // }
return sysWorkplaceQueueResponses; return sysWorkplaceQueueResponses;
} }
//删减卡槽
public void deleteQueue(SysWorkplaceQueueRequest sysWorkplaceQueueRequest) {
Integer grid = sysWorkplaceQueueRequest.getGrids();
//需要删减的次数
for (int n = 1; n <= grid; n++) {
SysWorkplaceQueue workplaceQueue = sysWorkplaceQueueMapper.selectByLayerCode(sysWorkplaceQueueRequest.getLayerCode());
sysWorkplaceQueueMapper.deleteById(workplaceQueue);
}
}
} }

@ -5,9 +5,11 @@
<select id="filterList" resultType="com.glxp.api.res.basic.SysWorkplaceFreightResponse"> <select id="filterList" resultType="com.glxp.api.res.basic.SysWorkplaceFreightResponse">
select swf.*, select swf.*,
sw.workplaceName workPlaceName sw.workplaceName workPlaceName,
COUNT(swl.freightCode) as layerCount
from sys_workplace_freight swf from sys_workplace_freight swf
left join sys_workplace sw on sw.workplaceId = swf.workPlaceIdFk left join sys_workplace sw on sw.workplaceId = swf.workPlaceIdFk
left join sys_workplace_layer swl on swl.freightCode = swf.code
<where> <where>
<if test="key != null and key != ''"> <if test="key != null and key != ''">
AND ( AND (
@ -19,5 +21,7 @@
AND swf.workPlaceIdFk = #{workPlaceIdFk} AND swf.workPlaceIdFk = #{workPlaceIdFk}
</if> </if>
</where> </where>
GROUP BY
swf.id
</select> </select>
</mapper> </mapper>

@ -0,0 +1,23 @@
<?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.glxp.api.dao.basic.SysWorkplaceLayerMapper">
<select id="getMaxCodeByFreightCode" resultType="com.glxp.api.entity.basic.SysWorkplaceLayer">
select max(code) as code from sys_workplace_layer
<where>
<if test=" freightCode != null and freightCode != ''">
AND freightCode = #{freightCode}
</if>
</where>
</select>
<select id="filterList" resultType="com.glxp.api.res.basic.SysWorkplaceLayerResponse">
select swl.*
from sys_workplace_layer swl
<where>
<if test=" freightCode != null and freightCode != ''">
AND freightCode = #{freightCode}
</if>
</where>
</select>
</mapper>

@ -51,10 +51,8 @@
</select> </select>
<select id="filterListFreightCode" resultType="com.glxp.api.res.basic.SysWorkplaceQueueResponse"> <select id="filterListFreightCode" resultType="com.glxp.api.res.basic.SysWorkplaceQueueResponse">
select swq.*, select swq.*
swf.name freightName
from sys_workplace_queue swq from sys_workplace_queue swq
left join sys_workplace_freight swf on swf.code = swq.freightCode
<where> <where>
<if test="key != null and key != ''"> <if test="key != null and key != ''">
AND ( AND (
@ -62,8 +60,8 @@
or swq.name like concat('%', #{key}, '%') or swq.name like concat('%', #{key}, '%')
) )
</if> </if>
<if test=" freightCode != null and freightCode != ''"> <if test=" layerCode != null and layerCode != ''">
AND freightCode = #{freightCode} AND layerCode = #{layerCode}
</if> </if>
</where> </where>
</select> </select>
@ -78,5 +76,23 @@
</if> </if>
</where> </where>
</select> </select>
<select id="selectMaxCode" resultType="java.lang.String">
select max(code) as code from sys_workplace_queue
<where>
<if test=" layerCode != null and layerCode != ''">
AND layerCode = #{layerCode}
</if>
</where>
</select>
<select id="selectByLayerCode" resultType="com.glxp.api.entity.basic.SysWorkplaceQueue">
select * from sys_workplace_queue
<where>
<if test=" layerCode != null and layerCode != ''">
AND layerCode = #{layerCode}
</if>
</where>
ORDER BY code DESC
LIMIT 1
</select>
</mapper> </mapper>

@ -4629,6 +4629,7 @@ CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'layer',
CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'grid', CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'grid',
'int NULL DEFAULT NULL COMMENT ''格层标记''', 'int NULL DEFAULT NULL COMMENT ''格层标记''',
1); 1);
# CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'layerCode', 'varchar(255)', 2);

Loading…
Cancel
Save