feat(wms): 出库修改出库状态,补录项目等

dev
wanghao 2 days ago
parent 4d089e9048
commit 82e71ba10a

@ -123,4 +123,11 @@ public class WmsOutStockBillController extends BaseController {
public R<Void> deliver(@PathVariable("outStockBillId") Long outStockBillId) {
return toAjax(wmsOutStockBillService.deliver(outStockBillId));
}
@GetMapping("/updateOutStockBillProject")
public R<Void> updateOutStockBillProject(WmsOutStockBillBo bo) {
return toAjax( wmsOutStockBillService.updateOutStockBillProject(bo));
}
}

@ -67,9 +67,6 @@ public class WmsOutStockBill extends TenantEntity {
*/
private String directions;
/**
* (1 2 3)
*/
private String outStockBillStatus;
/**

@ -87,6 +87,7 @@ public class WmsOutStockDetails extends TenantEntity {
* ID
*/
private Long inventoryDetailsId;
private String outState; //出库状态 0未出库 1已出库
@TableField(exist = false)
@ -108,4 +109,12 @@ public class WmsOutStockDetails extends TenantEntity {
*
*/
private String productSpe;
/**
*
*/
@TableField(exist = false)
private Double inventoryAmount;
}

@ -50,7 +50,7 @@ public class WmsOutStockDetailsBo extends BaseEntity {
*
*/
private Double outStockAmount;
private String outState; //出库状态 0未出库 1已出库
/**
*
*/

@ -155,5 +155,9 @@ public class WmsOutStockDetailsVo implements Serializable {
@ExcelProperty(value = "库存ID")
private Long inventoryDetailsId;
/**
*
*/
private Double inventoryAmount;
private String outState; //出库状态 0未出库 1已出库
}

@ -1,5 +1,6 @@
package org.dromara.wms.mapper;
import java.util.Collection;
import java.util.List;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
@ -36,4 +37,14 @@ public interface WmsOutStockDetailsMapper extends BaseMapperPlus<WmsOutStockDeta
*/
public List<WmsOutStockDetailsVo> selectCustomWmsOutStockDetailsVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<WmsOutStockDetails> queryWrapper);
/**
* ID
*
* @param outStockBillId ID
* @param projectId ID
* @param outStockBillStatus
*/
void updateOutProjectIdByBillsId(@Param("outStockBillId") Long outStockBillId, @Param("projectId") Long projectId,@Param("outStockBillStatus") String outStockBillStatus);
void deleteDetailsByBillIds(@Param("ids")Collection<Long> ids);
}

@ -69,4 +69,6 @@ public interface IWmsOutStockBillService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
Boolean deliver(@NotEmpty(message = "主键不能为空") Long outStockBillId);
Boolean updateOutStockBillProject(WmsOutStockBillBo bo);
}

@ -107,6 +107,7 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
.eq(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryDetails::getLocationCode, bo.getLocationCode())
.eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId())
.eq(bo.getMaterielId() != null, WmsInventoryDetails::getMaterielId, bo.getMaterielId())
.eq(bo.getProjectId() != null, WmsInventoryDetails::getProjectId, bo.getProjectId())
.eq(StringUtils.isNotBlank(bo.getBatchNumber()), WmsInventoryDetails::getBatchNumber, bo.getBatchNumber())
.eq(bo.getInventoryAmount() != null, WmsInventoryDetails::getInventoryAmount, bo.getInventoryAmount())
.eq(bo.getLockedAmount() != null, WmsInventoryDetails::getLockedAmount, bo.getLockedAmount())
@ -118,7 +119,7 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
.select(WmsBaseProduct::getProductCode, WmsBaseProduct::getProductName, WmsBaseProduct::getExternalBrand, WmsBaseProduct::getProductSpe)
.like(StringUtils.isNotBlank(bo.getProductCode()), WmsBaseProduct::getProductCode, bo.getProductCode())
.like(StringUtils.isNotBlank(bo.getProductName()), WmsBaseProduct::getProductName, bo.getProductName())
.eq(StringUtils.isNotBlank(bo.getExternalBrand()), WmsBaseProduct::getExternalBrand, bo.getExternalBrand());
.like(StringUtils.isNotBlank(bo.getExternalBrand()), WmsBaseProduct::getExternalBrand, bo.getExternalBrand());
return lqw;
}

@ -6,18 +6,15 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.RemoteCodeRuleService;
import org.dromara.wms.domain.*;
import org.dromara.wms.domain.WmsOutStockBill;
import org.dromara.wms.domain.WmsOutStockDetails;
import org.dromara.wms.domain.bo.WmsOutStockBillBo;
import org.dromara.wms.domain.vo.WmsOutStockBillVo;
import org.dromara.wms.mapper.WmsInventoryDetailsMapper;
import org.dromara.wms.mapper.WmsInventoryLedgerMapper;
import org.dromara.wms.mapper.WmsOutStockBillMapper;
import org.dromara.wms.mapper.WmsOutStockDetailsMapper;
import org.dromara.wms.service.IWmsInventoryDetailsService;
@ -25,8 +22,6 @@ import org.dromara.wms.service.IWmsOutStockBillService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -140,8 +135,22 @@ public class WmsOutStockBillServiceImpl implements IWmsOutStockBillService {
@Override
public Boolean updateByBo(WmsOutStockBillBo bo) {
WmsOutStockBill update = MapstructUtils.convert(bo, WmsOutStockBill.class);
boolean b = baseMapper.updateById(update) > 0;
if (b) {
// 更新出库单明细
Long outStockBillId = update.getOutStockBillId();
MPJLambdaWrapper<WmsOutStockDetails> lqw = JoinWrappers.lambda(WmsOutStockDetails.class)
.eq(WmsOutStockDetails::getOutStockBillId, outStockBillId);
wmsOutStockDetailsMapper.delete(lqw);
List<WmsOutStockDetails> outStockDetailsList = bo.getOutStockDetailsList();
outStockDetailsList.forEach(item -> {
item.setOutStockBillId(outStockBillId);
});
return baseMapper.updateById(update) > 0;
wmsOutStockDetailsMapper.insert(outStockDetailsList);
}
return b;
}
@ -155,27 +164,57 @@ public class WmsOutStockBillServiceImpl implements IWmsOutStockBillService {
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
return baseMapper.deleteByIds(ids) > 0;
boolean b = baseMapper.deleteByIds(ids) > 0;
if (b) {
// 删除出库单明细
wmsOutStockDetailsMapper.deleteDetailsByBillIds(ids);
}
return b;
}
@Override
public Boolean deliver(Long outStockBillId) {
WmsOutStockBill wmsOutStockBill = baseMapper.selectById(outStockBillId);
if (wmsOutStockBill == null) {
throw new ServiceException("出库单不存在");
}
wmsOutStockBill.setOutStockBillStatus(wmsOutStockBill.getProjectId() == null ? "1" : "2");//出库单状态 1出库 2已完成
baseMapper.updateById(wmsOutStockBill);
// 子表
MPJLambdaWrapper<WmsOutStockDetails> lqw = JoinWrappers.lambda(WmsOutStockDetails.class)
.selectAll(WmsOutStockDetails.class)
.eq(WmsOutStockDetails::getOutStockBillId, outStockBillId);
// 校验出库单是否存在
List<WmsOutStockDetails> outStockDetailsList = wmsOutStockDetailsMapper.selectList(lqw);
if (outStockDetailsList == null || outStockDetailsList.isEmpty()) {
throw new ServiceException("出库单不存在");
}
outStockDetailsList.forEach(item -> {
item.setOutStockBillId(outStockBillId);
// 更新出库状态
WmsOutStockDetails tag = new WmsOutStockDetails();
tag.setOutStockDetailsId(item.getOutStockDetailsId());
tag.setOutState("1");
wmsOutStockDetailsMapper.updateById(tag);
// 从出库明细中获取库存ID
Long inventoryId = item.getInventoryDetailsId();
inventoryDetailsService.outStoreLossInventoryAmount(inventoryId,
item.getOutStockAmount(),item.getWarehouseId(),item.getBatchNumber(),item.getMaterielId(),"3");
item.getOutStockAmount(), item.getWarehouseId(), item.getBatchNumber(), item.getMaterielId(), "3");
});
return true;
}
@Override
public Boolean updateOutStockBillProject(WmsOutStockBillBo bo) {
WmsOutStockBill update = MapstructUtils.convert(bo, WmsOutStockBill.class);
boolean b = baseMapper.updateById(update) > 0;
if (b) {
String outStockBillStatus = update.getOutStockBillStatus();
if (outStockBillStatus.equals("1")) {
outStockBillStatus = "2";
}
wmsOutStockDetailsMapper.updateOutProjectIdByBillsId(bo.getOutStockBillId(), bo.getProjectId(), outStockBillStatus);
}
return b;
}
}

@ -9,6 +9,7 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.wms.domain.WmsBaseProduct;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.wms.domain.WmsOutStockDetails;
import org.dromara.wms.domain.bo.WmsOutStockDetailsBo;
import org.dromara.wms.domain.vo.WmsOutStockDetailsVo;
@ -94,7 +95,10 @@ public class WmsOutStockDetailsServiceImpl implements IWmsOutStockDetailsService
.selectAll(WmsOutStockDetails.class)
.leftJoin(WmsBaseProduct.class, WmsBaseProduct::getProductId, WmsOutStockDetails::getMaterielId)
.select(WmsBaseProduct::getProductCode, WmsBaseProduct::getProductName, WmsBaseProduct::getExternalBrand, WmsBaseProduct::getProductSpe)
.eq(bo.getOutStockBillId() != null, WmsOutStockDetails::getOutStockBillId, bo.getOutStockBillId());
.eq(bo.getOutStockBillId() != null, WmsOutStockDetails::getOutStockBillId, bo.getOutStockBillId())
.leftJoin(WmsInventoryDetails.class, WmsInventoryDetails::getInventoryDetailsId, WmsOutStockDetails::getInventoryDetailsId)
.select( WmsInventoryDetails::getInventoryAmount/*, WmsInventoryDetails::getLockedAmount*/)
;
return lqw;
}

@ -11,4 +11,15 @@
${ew.getCustomSqlSegment}
</select>
<update id="updateOutProjectIdByBillsId">
update wms_out_stock_details set out_project_id = #{projectId}, out_stock_bill_status = #{outStockBillStatus} where out_stock_bill_id = #{outStockBillId}
</update>
<delete id="deleteDetailsByBillIds">
delete from wms_out_stock_details where out_stock_bill_id in
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
</mapper>

Loading…
Cancel
Save