This commit is contained in:
parent
5cb28944f3
commit
3f31859e45
File diff suppressed because it is too large
Load Diff
|
@ -8,7 +8,7 @@ spring:
|
|||
master:
|
||||
url: jdbc:mysql://localhost:3306/wms_chongqing_kafu?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: root
|
||||
password: 21#nS@NjJK20
|
||||
# 从库数据源
|
||||
slave:
|
||||
# 从数据源开关/默认关闭
|
||||
|
|
|
@ -56,6 +56,7 @@ spring:
|
|||
basename: i18n/messages
|
||||
profiles:
|
||||
active: druid
|
||||
# active: test
|
||||
# 文件上传
|
||||
servlet:
|
||||
multipart:
|
||||
|
|
|
@ -5,14 +5,12 @@ import com.wms.basic.domain.TbArticle;
|
|||
import com.wms.basic.domain.TbArticleExt;
|
||||
import com.wms.basic.domain.result.BasicArticle;
|
||||
import com.wms.basic.mapper.TbArticleMapper;
|
||||
import com.wms.basic.service.ITbArticleExtService;
|
||||
import com.wms.basic.service.ITbArticleService;
|
||||
import com.wms.common.annotation.Log;
|
||||
import com.wms.common.core.controller.BaseController;
|
||||
import com.wms.common.core.domain.AjaxResult;
|
||||
import com.wms.common.core.page.TableDataInfo;
|
||||
import com.wms.common.enums.BusinessType;
|
||||
import com.wms.common.utils.DateUtils;
|
||||
import com.wms.common.utils.StringUtils;
|
||||
import com.wms.common.utils.poi.ExcelUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
|
@ -23,10 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -43,8 +39,7 @@ public class TbArticleController extends BaseController {
|
|||
|
||||
private final ITbArticleService tbArticleService;
|
||||
private final TbArticleMapper articleMapper;
|
||||
@Resource
|
||||
private ITbArticleExtService articleExtService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询商品档案列表
|
||||
|
@ -105,17 +100,7 @@ public class TbArticleController extends BaseController {
|
|||
@PreAuthorize("@ss.hasPermi('basic:article:query')")
|
||||
@GetMapping(value = "/{articleId}")
|
||||
public AjaxResult getInfo(@ApiParam(value = "主键", required = true) @PathVariable("articleId") String articleId) {
|
||||
final TbArticle tbArticle = tbArticleService.getById(articleId);
|
||||
final TbArticleExt articleExt = articleExtService.getById(articleId);
|
||||
tbArticle.setData1(articleExt.getData1());
|
||||
tbArticle.setData2(articleExt.getData2());
|
||||
tbArticle.setData3(articleExt.getData3());
|
||||
tbArticle.setData4(articleExt.getData4());
|
||||
tbArticle.setData5(articleExt.getData5());
|
||||
tbArticle.setData6(articleExt.getData6());
|
||||
tbArticle.setData7(articleExt.getData7());
|
||||
tbArticle.setData8(articleExt.getData8());
|
||||
return AjaxResult.success(tbArticle);
|
||||
return AjaxResult.success(tbArticleService.getById(articleId));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,18 +111,6 @@ public class TbArticleController extends BaseController {
|
|||
@Log(title = "商品档案", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody TbArticle tbArticle) {
|
||||
final TbArticleExt articleExt = TbArticleExt.builder().articleId(tbArticle.getArticleId())
|
||||
.data1(tbArticle.getData1())
|
||||
.data2(tbArticle.getData2())
|
||||
.data3(tbArticle.getData3())
|
||||
.data4(tbArticle.getData4())
|
||||
.data5(tbArticle.getData5())
|
||||
.data6(tbArticle.getData6())
|
||||
.data7(tbArticle.getData7())
|
||||
.data8(tbArticle.getData8())
|
||||
.data9(DateUtils.getNowDate())
|
||||
.build();
|
||||
articleExtService.save(articleExt);
|
||||
return toAjax(tbArticleService.save(tbArticle));
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import java.util.Date;
|
|||
|
||||
/**
|
||||
* 商品档案对象 tb_basic_article
|
||||
*
|
||||
*
|
||||
* @author zf
|
||||
* @date 2024-01-10
|
||||
*/
|
||||
|
@ -52,20 +52,12 @@ public class TbArticle extends BaseEntityPlus implements Serializable{
|
|||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
/** 计量单位 */
|
||||
@ApiModelProperty("计量单位")
|
||||
@TableField(exist = false)
|
||||
private String data1;
|
||||
|
||||
/** 物料分组 */
|
||||
@ApiModelProperty("物料分组")
|
||||
@TableField(exist = false)
|
||||
private String data2;
|
||||
|
||||
/** 规格 */
|
||||
@ApiModelProperty("规格")
|
||||
@TableField(exist = false)
|
||||
private String data3;
|
||||
|
||||
/** 物料类型 */
|
||||
@ApiModelProperty("物料类型")
|
||||
|
@ -77,20 +69,5 @@ public class TbArticle extends BaseEntityPlus implements Serializable{
|
|||
@TableField(exist = false)
|
||||
private String data5;
|
||||
|
||||
/** 安全库存 */
|
||||
@ApiModelProperty("安全库存")
|
||||
@TableField(exist = false)
|
||||
private BigDecimal data6;
|
||||
|
||||
/** 包装单位 */
|
||||
@ApiModelProperty("包装单位")
|
||||
@TableField(exist = false)
|
||||
private String data7;
|
||||
|
||||
/** 包装容量 */
|
||||
@ApiModelProperty("包装容量")
|
||||
@TableField(exist = false)
|
||||
private BigDecimal data8;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ import java.util.Date;
|
|||
|
||||
/**
|
||||
* 物料扩展对象 tb_basic_article_ext
|
||||
*
|
||||
*
|
||||
* @author wms
|
||||
* @date 2024-01-10
|
||||
*/
|
||||
|
|
|
@ -126,7 +126,7 @@ public class TbDeliveryDetail extends BaseEntityPlus implements Serializable{
|
|||
/** 拣选状态::10-待拣, 20-已检 */
|
||||
@ApiModelProperty("拣选状态::10-待拣, 20-已检")
|
||||
@Excel(name = "拣选状态::10-待拣, 20-已检")
|
||||
private String data4 = "10";
|
||||
private String data4;
|
||||
|
||||
/** 标识::0-未下发, 10-已下发 */
|
||||
@ApiModelProperty("标识::0-未下发, 10-已下发")
|
||||
|
|
|
@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.wms.basic.domain.TbArticle;
|
||||
import com.wms.basic.domain.TbArticleExt;
|
||||
import com.wms.basic.domain.TbLabelCode;
|
||||
import com.wms.basic.domain.TbSku;
|
||||
import com.wms.basic.domain.vo.TbArticleVo;
|
||||
import com.wms.basic.mapper.TbArticleExtMapper;
|
||||
import com.wms.basic.mapper.TbArticleMapper;
|
||||
import com.wms.basic.mapper.TbLabelCodeMapper;
|
||||
import com.wms.basic.mapper.TbSkuMapper;
|
||||
|
@ -18,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -36,6 +39,9 @@ public class TbArticleServiceImpl extends ServiceImpl<TbArticleMapper, TbArticle
|
|||
@Resource
|
||||
private TbLabelCodeMapper tbLabelCodeMapper;
|
||||
|
||||
@Resource
|
||||
private TbArticleExtMapper tbArticleExtMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 获取物料下拉框(取10条,防止卡死)
|
||||
|
@ -80,11 +86,18 @@ public class TbArticleServiceImpl extends ServiceImpl<TbArticleMapper, TbArticle
|
|||
*/
|
||||
@Override
|
||||
public AjaxResult getSpecSelect(String articleId) {
|
||||
List<TbLabelCode> tbLabelCodes = tbLabelCodeMapper.selectList(Wrappers.<TbLabelCode>lambdaQuery().eq(TbLabelCode::getData2, articleId));
|
||||
List<String> specList = tbLabelCodes.stream()
|
||||
.map(TbLabelCode::getData5)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
List<String> specList = new ArrayList<>();
|
||||
TbArticleExt tbArticleExt = tbArticleExtMapper.selectById(articleId);
|
||||
String data4 = tbArticleExt.getData4();
|
||||
if ("成品".equals(data4)){
|
||||
specList.add(tbArticleExt.getData3());
|
||||
} else {
|
||||
List<TbLabelCode> tbLabelCodes = tbLabelCodeMapper.selectList(Wrappers.<TbLabelCode>lambdaQuery().eq(TbLabelCode::getData2, articleId));
|
||||
specList = tbLabelCodes.stream()
|
||||
.map(TbLabelCode::getData5)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
return AjaxResult.success(specList);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,54 +56,59 @@ public class TbWarehouseStockServiceImpl extends MPJBaseServiceImpl<TbWarehouseS
|
|||
*/
|
||||
@Override
|
||||
public List<TbWarehouseStockVo> getStockList(TbWarehouseStock tbWarehouseStock) {
|
||||
//和Mybatis plus一致,MPJLambdaWrapper的泛型必须是主表的泛型,并且要用主表的Mapper来调用
|
||||
MPJLambdaWrapper<TbWarehouseStock> wrapper = new MPJLambdaWrapper<TbWarehouseStock>()
|
||||
//查询主表全部字段
|
||||
.selectAll(TbWarehouseStock.class)
|
||||
//查询外表字段
|
||||
.select(TbArticle::getArticleName)
|
||||
.select(TbArticle::getArticleId)
|
||||
.select(TbArticleExt::getData1)
|
||||
.select(TbArticleExt::getData7)
|
||||
.select(TbWarehouse::getDisplayName)
|
||||
.select(TbSku::getBatch)
|
||||
//别名
|
||||
.selectAs(TbLabelCode::getData5, TbWarehouseStockVo::getSpec)
|
||||
.selectAs(TbArticle::getArticleName, TbWarehouseStockVo::getArticleName)
|
||||
.selectAs(TbArticleExt::getData1, TbWarehouseStockVo::getUnit)
|
||||
.selectAs(TbArticleExt::getData7, TbWarehouseStockVo::getPackagingUnit)
|
||||
.selectAs(TbWarehouse::getDisplayName, TbWarehouseStockVo::getWarehouseName)
|
||||
.leftJoin(TbSku.class, TbSku::getSku, TbWarehouseStock::getSku)
|
||||
.leftJoin(TbArticle.class, TbArticle::getArticleId, TbSku::getArticleId)
|
||||
.leftJoin(TbArticleExt.class, TbArticleExt::getArticleId, TbSku::getArticleId)
|
||||
.leftJoin(TbWarehouse.class, TbWarehouse::getWarehouseId, TbWarehouseStock::getWarehouseId)
|
||||
.leftJoin(TbLabelCode.class, TbLabelCode::getLabelCodeId, TbWarehouseStock::getData7)
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getWarehouseId()), TbWarehouseStock::getWarehouseId, tbWarehouseStock.getWarehouseId())
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getIsExpired()), TbWarehouseStock::getIsExpired, tbWarehouseStock.getIsExpired())
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getIsTemporary()), TbWarehouseStock::getIsTemporary, tbWarehouseStock.getIsTemporary())
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getIsSluggish()), TbWarehouseStock::getIsSluggish, tbWarehouseStock.getIsSluggish())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getArticleId()), TbArticle::getArticleId, tbWarehouseStock.getArticleId())
|
||||
.and(StringUtils.isNotEmpty(tbWarehouseStock.getSku()),
|
||||
MPJLambdaWrapper -> MPJLambdaWrapper.like(TbWarehouseStock::getSku, tbWarehouseStock.getSku())
|
||||
.or().like(TbArticle::getArticleName, tbWarehouseStock.getSku())
|
||||
.or().like(TbArticle::getArticleId, tbWarehouseStock.getSku()))
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getContainer()), TbWarehouseStock::getContainer, tbWarehouseStock.getContainer())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getEntryNo()), TbWarehouseStock::getEntryNo, tbWarehouseStock.getEntryNo())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getDeliveryNo()), TbWarehouseStock::getDeliveryNo, tbWarehouseStock.getDeliveryNo())
|
||||
// CASE WHEN 使用 alias:ext 与 lc
|
||||
.select("CASE WHEN ext.data4 = '成品' THEN ext.data3 ELSE lc.data5 END AS spec")
|
||||
.selectAs(TbArticle::getArticleName, TbWarehouseStockVo::getArticleName)
|
||||
.selectAs(TbArticleExt::getData1, TbWarehouseStockVo::getUnit)
|
||||
.selectAs(TbArticleExt::getData7, TbWarehouseStockVo::getPackagingUnit)
|
||||
.selectAs(TbWarehouse::getDisplayName, TbWarehouseStockVo::getWarehouseName)
|
||||
// 使用带 alias 的 join
|
||||
.leftJoin(TbSku.class, TbSku::getSku, TbWarehouseStock::getSku)
|
||||
.leftJoin(TbArticle.class, TbArticle::getArticleId, TbSku::getArticleId)
|
||||
.leftJoin(TbArticleExt.class, "ext", TbArticleExt::getArticleId, TbSku::getArticleId)
|
||||
.leftJoin(TbLabelCode.class, "lc", TbLabelCode::getLabelCodeId, TbWarehouseStock::getData7)
|
||||
.leftJoin(TbWarehouse.class, TbWarehouse::getWarehouseId, TbWarehouseStock::getWarehouseId)
|
||||
// dynamic where
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getWarehouseId()), TbWarehouseStock::getWarehouseId, tbWarehouseStock.getWarehouseId())
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getIsExpired()), TbWarehouseStock::getIsExpired, tbWarehouseStock.getIsExpired())
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getIsTemporary()), TbWarehouseStock::getIsTemporary, tbWarehouseStock.getIsTemporary())
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getIsSluggish()), TbWarehouseStock::getIsSluggish, tbWarehouseStock.getIsSluggish())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getArticleId()), TbArticle::getArticleId, tbWarehouseStock.getArticleId())
|
||||
.and(StringUtils.isNotEmpty(tbWarehouseStock.getSku()), wrapper2 -> wrapper2
|
||||
.like(TbWarehouseStock::getSku, tbWarehouseStock.getSku())
|
||||
.or().like(TbArticle::getArticleName, tbWarehouseStock.getSku())
|
||||
.or().like(TbArticle::getArticleId, tbWarehouseStock.getSku())
|
||||
)
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getContainer()), TbWarehouseStock::getContainer, tbWarehouseStock.getContainer())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getEntryNo()), TbWarehouseStock::getEntryNo, tbWarehouseStock.getEntryNo())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getDeliveryNo()), TbWarehouseStock::getDeliveryNo, tbWarehouseStock.getDeliveryNo())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getStorageBinId()), TbWarehouseStock::getStorageBinId, tbWarehouseStock.getStorageBinId())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getContainer()), TbWarehouseStock::getContainer, tbWarehouseStock.getContainer())
|
||||
.like(StringUtils.isNotEmpty(tbWarehouseStock.getSpec()), TbLabelCode::getData5, tbWarehouseStock.getSpec())
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getStockStatus()), TbWarehouseStock::getStockStatus, tbWarehouseStock.getStockStatus())
|
||||
.eq(Objects.nonNull(tbWarehouseStock.getPriority()), TbWarehouseStock::getPriority, tbWarehouseStock.getPriority());
|
||||
.and(StringUtils.isNotEmpty(tbWarehouseStock.getSpec()), wrapper2 -> wrapper2.like(TbLabelCode::getData5,tbWarehouseStock.getSpec())
|
||||
.or().like(TbArticleExt::getData3,tbWarehouseStock.getSpec()))
|
||||
.eq(StringUtils.isNotEmpty(tbWarehouseStock.getStockStatus()), TbWarehouseStock::getStockStatus, tbWarehouseStock.getStockStatus())
|
||||
.eq(Objects.nonNull(tbWarehouseStock.getPriority()), TbWarehouseStock::getPriority, tbWarehouseStock.getPriority());
|
||||
|
||||
if (Objects.nonNull(tbWarehouseStock.getParams())) {
|
||||
wrapper.ge(Objects.nonNull(tbWarehouseStock.getParams().get("beginTime")), TbWarehouseStock::getCreateTime, tbWarehouseStock.getParams().get("beginTime"));
|
||||
wrapper.le(Objects.nonNull(tbWarehouseStock.getParams().get("endTime")), TbWarehouseStock::getCreateTime, tbWarehouseStock.getParams().get("endTime"));
|
||||
wrapper.ge(tbWarehouseStock.getParams().get("beginTime") != null,
|
||||
TbWarehouseStock::getCreateTime,
|
||||
tbWarehouseStock.getParams().get("beginTime"));
|
||||
wrapper.le(tbWarehouseStock.getParams().get("endTime") != null,
|
||||
TbWarehouseStock::getCreateTime,
|
||||
tbWarehouseStock.getParams().get("endTime"));
|
||||
}
|
||||
|
||||
//连表查询
|
||||
return this.selectJoinList(TbWarehouseStockVo.class, wrapper);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TbWarehouseStock> articleNumStatistics(String curDate, String oneMonth) {
|
||||
return this.baseMapper.articleNumStatistics(curDate, oneMonth);
|
||||
|
@ -212,6 +217,11 @@ public class TbWarehouseStockServiceImpl extends MPJBaseServiceImpl<TbWarehouseS
|
|||
*/
|
||||
@Override
|
||||
public AjaxResult frozen(String articleId, String spec) {
|
||||
TbArticleExt tbArticleExt = articleExtMapper.selectById(articleId);
|
||||
if ("成品".equals(tbArticleExt.getData4())){
|
||||
return AjaxResult.error("只能冻结原材料");
|
||||
}
|
||||
|
||||
List<TbLabelCode> tbLabelCodes = tbLabelCodeMapper.selectList(Wrappers.<TbLabelCode>lambdaQuery()
|
||||
.eq(TbLabelCode::getData2, articleId)
|
||||
.eq(TbLabelCode::getData5, spec)
|
||||
|
@ -222,10 +232,14 @@ public class TbWarehouseStockServiceImpl extends MPJBaseServiceImpl<TbWarehouseS
|
|||
.in(TbWarehouseStock::getData7, labelCodeIds)
|
||||
);
|
||||
// 全正常库存
|
||||
boolean allNormal = tbWarehouseStocks.stream().allMatch(tbWarehouseStock -> EnumStockStatus.NORMAL.getCode().equals(tbWarehouseStock.getStockStatus()));
|
||||
boolean allNormal = tbWarehouseStocks.stream()
|
||||
.allMatch(tbWarehouseStock -> EnumStockStatus.NORMAL.getCode()
|
||||
.equals(tbWarehouseStock.getStockStatus()));
|
||||
|
||||
// 全冻结库存
|
||||
boolean allFreeze = tbWarehouseStocks.stream().allMatch(tbWarehouseStock -> EnumStockStatus.FREEZE.getCode().equals(tbWarehouseStock.getStockStatus()));
|
||||
boolean allFreeze = tbWarehouseStocks.stream()
|
||||
.allMatch(tbWarehouseStock -> EnumStockStatus.FREEZE.getCode()
|
||||
.equals(tbWarehouseStock.getStockStatus()));
|
||||
|
||||
String stockStatus = "";
|
||||
if (allNormal){
|
||||
|
|
0
wms-message/src/main/java/com/wms/message/mail/domain/vo/MailLogRespVO.java
Normal file → Executable file
0
wms-message/src/main/java/com/wms/message/mail/domain/vo/MailLogRespVO.java
Normal file → Executable file
|
@ -4,14 +4,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||
import com.wms.basic.domain.*;
|
||||
import com.wms.basic.domain.vo.BasicSkuInfoVo;
|
||||
import com.wms.basic.mapper.*;
|
||||
import com.wms.basic.service.ITbContainerService;
|
||||
import com.wms.basic.service.ITbSkuService;
|
||||
import com.wms.basic.service.ITbWarehouseStockLogService;
|
||||
import com.wms.basic.utils.ParameterValidationUtils;
|
||||
import com.wms.common.core.domain.AjaxResult;
|
||||
import com.wms.common.enums.basic.EnumInUsing;
|
||||
import com.wms.common.enums.basic.EnumLock;
|
||||
import com.wms.common.enums.basic.EnumSceneMode;
|
||||
import com.wms.common.enums.basic.EnumSceneType;
|
||||
import com.wms.common.enums.basic.*;
|
||||
import com.wms.common.enums.basic.delivery.EnumDeliveryType;
|
||||
import com.wms.common.enums.basic.delivery.detail.EnumDeliveryDetailCarryStatus;
|
||||
import com.wms.common.enums.basic.stock.EnumStockStatus;
|
||||
|
@ -92,6 +90,9 @@ public class PdaPickingServiceImpl implements IPdaPickingService {
|
|||
@Resource
|
||||
private TbDeliveryMapper tbDeliveryMapper;
|
||||
|
||||
@Resource
|
||||
private ITbContainerService containerService;
|
||||
|
||||
/**
|
||||
* 拣货详情
|
||||
*
|
||||
|
@ -138,6 +139,7 @@ public class PdaPickingServiceImpl implements IPdaPickingService {
|
|||
*/
|
||||
@Override
|
||||
public AjaxResult pickingConfirm(String deliveryDetailId) {
|
||||
//2025-2-15 变动
|
||||
TbDeliveryDetail tbDeliveryDetail = tbDeliveryDetailMapper.selectById(deliveryDetailId);
|
||||
TbDelivery tbDelivery = tbDeliveryMapper.selectById(tbDeliveryDetail.getDeliveryNo());
|
||||
if (EnumPickingStatus.B.getCode().equals(tbDeliveryDetail.getData4())){
|
||||
|
@ -153,29 +155,37 @@ public class PdaPickingServiceImpl implements IPdaPickingService {
|
|||
// 更新出库单数量表的已出库数量
|
||||
Integer numId = tbDeliveryDetail.getNumId();
|
||||
TbDeliveryNumber tbDeliveryNumber = tbDeliveryNumberMapper.selectById(numId);
|
||||
BigDecimal alreadyOutNum = tbDeliveryNumber.getAlreadyOutNum();
|
||||
BigDecimal actualPickNum = tbDeliveryDetail.getData7();
|
||||
alreadyOutNum = alreadyOutNum.add(actualPickNum);
|
||||
tbDeliveryNumberMapper.update(
|
||||
new TbDeliveryNumber(), Wrappers.<TbDeliveryNumber>lambdaUpdate()
|
||||
.set(TbDeliveryNumber::getAlreadyOutNum, alreadyOutNum)
|
||||
.eq(TbDeliveryNumber::getNumId, numId)
|
||||
);
|
||||
String container = tbDeliveryDetail.getContainer();
|
||||
// BigDecimal alreadyOutNum = tbDeliveryNumber.getAlreadyOutNum();
|
||||
// BigDecimal actualPickNum = tbDeliveryDetail.getData7();
|
||||
// alreadyOutNum = alreadyOutNum.add(actualPickNum);
|
||||
// tbDeliveryNumberMapper.update(
|
||||
// new TbDeliveryNumber(), Wrappers.<TbDeliveryNumber>lambdaUpdate()
|
||||
// .set(TbDeliveryNumber::getAlreadyOutNum, alreadyOutNum)
|
||||
// .eq(TbDeliveryNumber::getNumId, numId)
|
||||
// );
|
||||
|
||||
// 更新或删除 库存
|
||||
TbWarehouseStock tbWarehouseStock = tbWarehouseStockMapper.selectById(tbDeliveryDetail.getSequenceNo());
|
||||
|
||||
if (tbDeliveryDetail.getDetailOutNum().compareTo(tbDeliveryDetail.getData7()) == 0){
|
||||
// 实发和实拣数量相同,删除库存,添加库存日志
|
||||
// 出库数量和实拣数量相同,删除库存,添加库存日志,容器空闲
|
||||
tbWarehouseStockMapper.deleteById(tbWarehouseStock.getSequenceNo());
|
||||
tbWarehouseStockLogService.addStockLog(tbWarehouseStock, EnumStockLogBizType.A.getCode(), EnumDeliveryType.getValue(tbDelivery.getDeliveryType()), tbWarehouseStock.getStockNum().negate(), tbDeliveryDetail.getDeliveryNo());
|
||||
// 更新明细拣货状态为无需回库
|
||||
|
||||
// 更新明细拣货状态为无需回库,搬运状态为已拣
|
||||
tbDeliveryDetailMapper.update(
|
||||
new TbDeliveryDetail(), Wrappers.<TbDeliveryDetail>lambdaUpdate()
|
||||
.set(TbDeliveryDetail::getData4, EnumPickingStatus.D.getCode())
|
||||
.set(TbDeliveryDetail::getDetailCarryStatus, EnumDeliveryDetailCarryStatus.E.getCode())
|
||||
.eq(TbDeliveryDetail::getDeliveryDetailId, deliveryDetailId)
|
||||
);
|
||||
//修改料箱(容器)状态
|
||||
containerService.update(new TbContainer(), Wrappers.<TbContainer>lambdaUpdate().eq(TbContainer::getContainer, container).set(TbContainer::getContainerStatus, EnumContainerStatus.EMPTY.getCode()));
|
||||
|
||||
} else if (tbDeliveryDetail.getDetailOutNum().compareTo(tbDeliveryDetail.getData7()) > 0){
|
||||
// 实发小于实拣数量,更新库存,添加库存日志
|
||||
// 出库数量大于实拣数量,容器存储
|
||||
// 更新库存,添加库存日志,剩余库存数为出库数减实拣数
|
||||
tbWarehouseStockMapper.update(
|
||||
new TbWarehouseStock(), Wrappers.<TbWarehouseStock>lambdaUpdate()
|
||||
.set(TbWarehouseStock::getStockNum, tbDeliveryDetail.getDetailOutNum().subtract(tbDeliveryDetail.getReceiveQty()))
|
||||
|
@ -184,9 +194,24 @@ public class PdaPickingServiceImpl implements IPdaPickingService {
|
|||
);
|
||||
tbWarehouseStockLogService.addStockLog(tbWarehouseStock, EnumStockLogBizType.A.getCode(), EnumDeliveryType.getValue(tbDelivery.getDeliveryType()), tbDeliveryDetail.getReceiveQty().negate(), tbDeliveryDetail.getDeliveryNo());
|
||||
|
||||
// 打印标签
|
||||
// 打印标签,
|
||||
pdaPrintService.printLabels(tbDeliveryDetail.getDetailOutNum().subtract(tbDeliveryDetail.getData7()), tbWarehouseStock);
|
||||
}
|
||||
//更新出库单数量
|
||||
List<TbDeliveryDetail> tbDeliveryDetails = tbDeliveryDetailMapper.
|
||||
selectList(Wrappers.<TbDeliveryDetail>lambdaQuery()
|
||||
.eq(TbDeliveryDetail::getNumId,numId ));
|
||||
|
||||
BigDecimal alreadyOutNum = BigDecimal.ZERO;
|
||||
for (TbDeliveryDetail tbDeliveryDetail1 : tbDeliveryDetails) {
|
||||
alreadyOutNum = alreadyOutNum.add(tbDeliveryDetail1.getReceiveQty());
|
||||
}
|
||||
|
||||
tbDeliveryNumberMapper.update(
|
||||
new TbDeliveryNumber(), Wrappers.<TbDeliveryNumber>lambdaUpdate()
|
||||
.set(TbDeliveryNumber::getAlreadyOutNum, alreadyOutNum)
|
||||
.eq(TbDeliveryNumber::getNumId, numId)
|
||||
);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
@ -200,6 +225,7 @@ public class PdaPickingServiceImpl implements IPdaPickingService {
|
|||
*/
|
||||
@Override
|
||||
public AjaxResult reportProfitAndLoss(String deliveryDetailId, String type, BigDecimal number) {
|
||||
//2025-2-15 变动
|
||||
TbDeliveryDetail tbDeliveryDetail = tbDeliveryDetailMapper.selectById(deliveryDetailId);
|
||||
String sequenceNo = tbDeliveryDetail.getSequenceNo();
|
||||
TbWarehouseStock tbWarehouseStock = tbWarehouseStockMapper.selectById(sequenceNo);
|
||||
|
@ -225,16 +251,23 @@ public class PdaPickingServiceImpl implements IPdaPickingService {
|
|||
.set(TbWarehouseStock::getStockNum, physicalInventory)
|
||||
.eq(TbWarehouseStock::getSequenceNo, sequenceNo)
|
||||
);
|
||||
BigDecimal receiveQty = tbDeliveryDetail.getReceiveQty();
|
||||
if (physicalInventory.compareTo(receiveQty) < 0){
|
||||
receiveQty = physicalInventory;
|
||||
}
|
||||
tbDeliveryDetailMapper.update(
|
||||
new TbDeliveryDetail(), Wrappers.<TbDeliveryDetail>lambdaUpdate()
|
||||
.set(TbDeliveryDetail::getDetailOutNum, physicalInventory)
|
||||
.eq(TbDeliveryDetail::getDeliveryDetailId, deliveryDetailId)
|
||||
);
|
||||
BigDecimal receiveQty = tbDeliveryDetail.getReceiveQty();
|
||||
if (physicalInventory.compareTo(receiveQty) < 0){
|
||||
receiveQty = physicalInventory;
|
||||
|
||||
tbDeliveryDetailMapper.update(
|
||||
new TbDeliveryDetail(), Wrappers.<TbDeliveryDetail>lambdaUpdate()
|
||||
.set(TbDeliveryDetail::getReceiveQty, physicalInventory)
|
||||
.set(TbDeliveryDetail::getData7, receiveQty)
|
||||
.eq(TbDeliveryDetail::getDeliveryDetailId, deliveryDetailId)
|
||||
);
|
||||
}
|
||||
|
||||
tbErpStockDifference.setBreakeven("2");
|
||||
}
|
||||
// 插入差异表数据
|
||||
|
|
|
@ -253,8 +253,12 @@ public class TbThirdPartyOpenServiceImpl implements ITbThirdPartyOpenService {
|
|||
);
|
||||
// 添加库存日志
|
||||
TbEntry tbEntry = tbEntryMapper.selectById(tbThirdPartyCarryTask.getBizNo());
|
||||
String taskType = "多余退库";
|
||||
if (Objects.nonNull(tbEntry)){
|
||||
taskType = EnumEntryType.getValue(tbEntry.getEntryType());
|
||||
}
|
||||
TbWarehouseStock tbWarehouseStock = tbWarehouseStockMapper.selectById(tbThirdPartyCarryTaskDetail.getSequenceNo());
|
||||
tbWarehouseStockLogService.addStockLog(tbWarehouseStock, EnumStockLogBizType.B.getCode(), EnumEntryType.getValue(tbEntry.getEntryType()), tbWarehouseStock.getStockNum(), tbThirdPartyCarryTask.getBizNo());
|
||||
tbWarehouseStockLogService.addStockLog(tbWarehouseStock, EnumStockLogBizType.B.getCode(), taskType, tbWarehouseStock.getStockNum(), tbThirdPartyCarryTask.getBizNo());
|
||||
//如果是退料入库 调用关闭入库单接口
|
||||
if (EnumCarryTaskBizType.IN_STORAGE_A.getCode().equals(tbThirdPartyCarryTask.getBizType())){
|
||||
erpService.entryClose(tbThirdPartyCarryTask.getBizNo());
|
||||
|
|
Loading…
Reference in New Issue