Compare commits

...

5 Commits

@ -117,5 +117,9 @@ public class WmsInventoryDetailsController extends BaseController {
List<WmsInventoryDetailsVo> list = wmsInventoryDetailsService.queryList(bo);
return R.ok(list);
}
@GetMapping("/getWmsInventoryDetailbyProductId")
public R<WmsInventoryDetailsVo> getWmsInventoryDetailbyProductId(@RequestParam("productId") Long productId) {
WmsInventoryDetailsVo vo = wmsInventoryDetailsService.getWmsInventoryDetailbyProductId(productId);
return R.ok(vo);
}
}

@ -1,26 +1,27 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.wms.domain.vo.WmsOutStockBillVo;
import org.dromara.wms.domain.bo.WmsOutStockBillBo;
import org.dromara.wms.service.IWmsOutStockBillService;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.wms.domain.bo.WmsOutStockBillBo;
import org.dromara.wms.domain.vo.WmsOutStockBillVo;
import org.dromara.wms.service.IWmsOutStockBillService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
@ -65,7 +66,7 @@ public class WmsOutStockBillController extends BaseController {
@SaCheckPermission("wms:outStockBill:query")
@GetMapping("/{outStockBillId}")
public R<WmsOutStockBillVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("outStockBillId") Long outStockBillId) {
@PathVariable("outStockBillId") Long outStockBillId) {
return R.ok(wmsOutStockBillService.queryById(outStockBillId));
}
@ -113,4 +114,20 @@ public class WmsOutStockBillController extends BaseController {
return R.ok(list);
}
/**
*
* @param outStockBillId
* @return
*/
@PutMapping("/deliver/{outStockBillId}")
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));
}
}

@ -80,6 +80,8 @@ public class WmsBaseProduct extends TenantEntity {
@TableField(exist = false)
private String createByName;
@TableField(exist = false)
private String deptName;//部门名称
@TableField(exist = false)
private String updateByName;

@ -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;
}

@ -69,5 +69,4 @@ public class WmsBaseProductBo extends BaseEntity {
private String activeFlag;
private String externalBrand;
}

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

@ -126,4 +126,6 @@ public class WmsBaseProductVo implements Serializable {
private String unitName;
private String createByName;
private String updateByName;
private String deptName;//部门名称
}

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

@ -1,15 +1,18 @@
package org.dromara.wms.mapper;
import java.util.List;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.wms.domain.WmsBaseProduct;
import org.dromara.wms.domain.vo.WmsBaseProductVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Mapper
*
@ -35,5 +38,10 @@ public interface WmsBaseProductMapper extends BaseMapperPlus<WmsBaseProduct, Wms
* @return
*/
public List<WmsBaseProductVo> selectCustomWmsBaseProductVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<WmsBaseProduct> queryWrapper);
//
// @DataPermission({@DataColumn(key = "deptName", value = "t.dept_id")})
// default List<WmsBaseProductVo> selectVoList(MPJLambdaWrapper<WmsBaseProduct> lqw) {
// System.out.println("lqw = " + lqw);
// return BaseMapperPlus.super.selectVoList(lqw);
// }
}

@ -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);
}

@ -80,4 +80,6 @@ public interface IWmsInventoryDetailsService {
Boolean inStoreAddInventoryAmount(Long warehouseId, Long projectId, String batchNumber, Long materialId, Double unitPrice, String unitName, Double inStockAmount,String changeType);
Boolean outStoreLossInventoryAmount(Long inventoryId, Double outStockAmount, Long warehouseId, String batchNumber, Long materielId, String changeType);
WmsInventoryDetailsVo getWmsInventoryDetailbyProductId(Long productId);
}

@ -1,5 +1,6 @@
package org.dromara.wms.service;
import jakarta.validation.constraints.NotEmpty;
import org.dromara.wms.domain.WmsOutStockBill;
import org.dromara.wms.domain.vo.WmsOutStockBillVo;
import org.dromara.wms.domain.bo.WmsOutStockBillBo;
@ -66,4 +67,8 @@ public interface IWmsOutStockBillService {
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
Boolean deliver(@NotEmpty(message = "主键不能为空") Long outStockBillId);
Boolean updateOutStockBillProject(WmsOutStockBillBo bo);
}

@ -6,10 +6,12 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
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.wms.domain.BaseUnitInfo;
import org.dromara.wms.domain.SysDept;
import org.dromara.wms.domain.SysUser;
import org.dromara.wms.domain.WmsBaseProduct;
import org.dromara.wms.domain.bo.WmsBaseProductBo;
@ -51,6 +53,7 @@ public class WmsBaseProductServiceImpl implements IWmsBaseProductService {
* @param pageQuery
* @return
*/
@DataPermission({@DataColumn(key = "deptName", value = "t.create_dept")})
@Override
public TableDataInfo<WmsBaseProductVo> queryPageList(WmsBaseProductBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<WmsBaseProduct> lqw = buildQueryWrapper(bo);
@ -64,7 +67,7 @@ public class WmsBaseProductServiceImpl implements IWmsBaseProductService {
* @param bo
* @return
*/
@Override
@Override
public List<WmsBaseProductVo> queryList(WmsBaseProductBo bo) {
MPJLambdaWrapper<WmsBaseProduct> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
@ -79,11 +82,16 @@ public class WmsBaseProductServiceImpl implements IWmsBaseProductService {
.like(StringUtils.isNotBlank(bo.getProductName()), WmsBaseProduct::getProductName, bo.getProductName())
.like(StringUtils.isNotBlank(bo.getExternalBrand()), WmsBaseProduct::getExternalBrand, bo.getExternalBrand())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), WmsBaseProduct::getActiveFlag, bo.getActiveFlag())
.eq(bo.getCreateDept() !=null, WmsBaseProduct::getCreateDept, bo.getCreateDept())
// 创建人
.leftJoin(SysUser.class, SysUser::getUserId, WmsBaseProduct::getCreateBy)
.selectAs(SysUser::getNickName, WmsBaseProduct::getCreateByName)
// 更新人
.leftJoin(SysUser.class, SysUser::getUserId, WmsBaseProduct::getUpdateBy)
.selectAs(SysUser::getNickName, WmsBaseProduct::getUpdateByName)
;
// 部门
.leftJoin(SysDept.class, SysDept::getDeptId, WmsBaseProduct::getCreateDept)
.selectAs(SysDept::getDeptName, WmsBaseProduct::getDeptName);
}

@ -78,7 +78,7 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
.leftJoin(WmsBaseProduct.class, WmsBaseProduct::getProductId, WmsInventoryDetails::getMaterielId) // 物料
.select(WmsBaseProduct::getProductName, WmsBaseProduct::getProductCode, WmsBaseProduct::getExternalBrand, WmsBaseProduct::getProductSpe) // 物料名称、编码、品牌
.leftJoin(WmsWarehouseInfo.class, WmsWarehouseInfo::getWarehouseId, WmsInventoryDetails::getWarehouseId) // 仓库
.select(WmsWarehouseInfo::getWarehouseName)
.select(WmsWarehouseInfo::getWarehouseName, WmsWarehouseInfo::getWarehouseCode)
.eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId()) // 仓库id
.like(StringUtils.isNotBlank(bo.getProductCode()), WmsBaseProduct::getProductCode, bo.getProductCode()) // 物料编码
.like(StringUtils.isNotBlank(bo.getProductName()), WmsBaseProduct::getProductName, bo.getProductName()) // 物料名称
@ -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;
}
@ -268,4 +269,15 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
wmsInventoryLedgerMapper.insert(wmsInventoryLedger);
return true;
}
@Override
public WmsInventoryDetailsVo getWmsInventoryDetailbyProductId(Long productId) {
MPJLambdaWrapper<WmsInventoryDetails> lqw = JoinWrappers.lambda(WmsInventoryDetails.class)
.select(WmsInventoryDetails::getMaterielId)
.selectSum(WmsInventoryDetails::getInventoryAmount, "inventoryAmount")
.eq(WmsInventoryDetails::getDelFlag, "0")
.eq(WmsInventoryDetails::getMaterielId, productId);
return baseMapper.selectVoOne(lqw);
}
}

@ -5,21 +5,16 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.exception.ServiceException;
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.WmsInventoryDetails;
import org.dromara.wms.domain.WmsInventoryLedger;
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;
@ -27,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;
@ -113,18 +106,18 @@ public class WmsOutStockBillServiceImpl implements IWmsOutStockBillService {
public Boolean insertByBo(WmsOutStockBillBo bo) {
WmsOutStockBill add = MapstructUtils.convert(bo, WmsOutStockBill.class);
add.setOutStockCode(remoteCodeRuleService.selectCodeRuleCode("1006"));
add.setOutStockBillStatus("3");
add.setOutStockBillStatus("0");//备货
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
Long outStockBillId = add.getOutStockBillId();
List<WmsOutStockDetails> outStockDetailsList = bo.getOutStockDetailsList();
List<WmsInventoryLedger> wmsInventoryLedgers = new ArrayList<>();
// List<WmsInventoryLedger> wmsInventoryLedgers = new ArrayList<>();
outStockDetailsList.forEach(item -> {
item.setOutStockBillId(outStockBillId);
// 从出库明细中获取库存ID
Long inventoryId = item.getInventoryDetailsId();
inventoryDetailsService.outStoreLossInventoryAmount(inventoryId,
item.getOutStockAmount(),item.getWarehouseId(),item.getBatchNumber(),item.getMaterielId(),"3");
// // 从出库明细中获取库存ID
// Long inventoryId = item.getInventoryDetailsId();
// inventoryDetailsService.outStoreLossInventoryAmount(inventoryId,
// item.getOutStockAmount(),item.getWarehouseId(),item.getBatchNumber(),item.getMaterielId(),"3");
});
//插入出库明细
wmsOutStockDetailsMapper.insert(outStockDetailsList);
@ -142,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;
}
@ -157,6 +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);
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");
});
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