增加 调拨

master
wanghao 4 months ago
parent e625217982
commit 2279184199

@ -0,0 +1,117 @@
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 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.WmsHppTransferVo;
import org.dromara.wms.domain.bo.WmsHppTransferBo;
import org.dromara.wms.service.IWmsHppTransferService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/wms/hppTransfer
*
* @author Yinq
* @date 2025-04-03
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hppTransfer")
public class WmsHppTransferController extends BaseController {
private final IWmsHppTransferService wmsHppTransferService;
/**
*
*/
@SaCheckPermission("wms:hppTransfer:list")
@GetMapping("/list")
public TableDataInfo<WmsHppTransferVo> list(WmsHppTransferBo bo, PageQuery pageQuery) {
return wmsHppTransferService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("wms:hppTransfer:export")
@Log(title = "半成品调拨", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsHppTransferBo bo, HttpServletResponse response) {
List<WmsHppTransferVo> list = wmsHppTransferService.queryList(bo);
ExcelUtil.exportExcel(list, "半成品调拨", WmsHppTransferVo.class, response);
}
/**
*
*
* @param transferId
*/
@SaCheckPermission("wms:hppTransfer:query")
@GetMapping("/{transferId}")
public R<WmsHppTransferVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long transferId) {
return R.ok(wmsHppTransferService.queryById(transferId));
}
/**
*
*/
@SaCheckPermission("wms:hppTransfer:add")
@Log(title = "半成品调拨", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsHppTransferBo bo) {
return toAjax(wmsHppTransferService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("wms:hppTransfer:edit")
@Log(title = "半成品调拨", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsHppTransferBo bo) {
return toAjax(wmsHppTransferService.updateByBo(bo));
}
/**
*
*
* @param transferIds
*/
@SaCheckPermission("wms:hppTransfer:remove")
@Log(title = "半成品调拨", businessType = BusinessType.DELETE)
@DeleteMapping("/{transferIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] transferIds) {
return toAjax(wmsHppTransferService.deleteWithValidByIds(List.of(transferIds), true));
}
/**
*
*/
@GetMapping("/getWmsHppTransferList")
public R<List<WmsHppTransferVo>> getWmsHppTransferList(WmsHppTransferBo bo) {
List<WmsHppTransferVo> list = wmsHppTransferService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,58 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* wms_hpp_transfer
*
* @author Yinq
* @date 2025-04-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_hpp_transfer")
public class WmsHppTransfer extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(type = IdType.AUTO)
private Long transferId;
/**
* ID
*/
private Long materialId;
/**
*
*/
private String cardNo;
/**
*
*/
private String shelfNo;
/**
*
*/
private String storePlaceCode;
/**
*
*/
private String transferPlaceCode;
}

@ -23,13 +23,13 @@ public class WmsHppStorePlaceBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "主键id不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotNull(message = "主键id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long objId;
/**
*
*/
@NotBlank(message = "库位名不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotBlank(message = "库位名不能为空", groups = { AddGroup.class, EditGroup.class })
private String storePlaceName;
/**

@ -0,0 +1,46 @@
package org.dromara.wms.domain.bo;
import org.dromara.wms.domain.WmsHppTransfer;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* wms_hpp_transfer
*
* @author Yinq
* @date 2025-04-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsHppTransfer.class, reverseConvertGenerate = false)
public class WmsHppTransferBo extends BaseEntity {
/**
* ID
*/
private Long materialId;
/**
*
*/
private String cardNo;
/**
*
*/
private String shelfNo;
/**
*
*/
private String storePlaceCode;
/**
*
*/
private String transferPlaceCode;
}

@ -0,0 +1,78 @@
package org.dromara.wms.domain.vo;
import org.dromara.wms.domain.WmsHppTransfer;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* wms_hpp_transfer
*
* @author Yinq
* @date 2025-04-03
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = WmsHppTransfer.class)
public class WmsHppTransferVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "表主键")
private Long transferId;
/**
* ID
*/
@ExcelProperty(value = "物料ID")
private Long materialId;
/**
*
*/
@ExcelProperty(value = "流水卡号")
private String cardNo;
/**
*
*/
@ExcelProperty(value = "工装架子号")
private String shelfNo;
/**
*
*/
@ExcelProperty(value = "库位编码")
private String storePlaceCode;
/**
*
*/
@ExcelProperty(value = "调拨库位")
private String transferPlaceCode;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
}

@ -0,0 +1,17 @@
package org.dromara.wms.mapper;
import org.dromara.wms.domain.WmsHppTransfer;
import org.dromara.wms.domain.vo.WmsHppTransferVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.springframework.stereotype.Repository;
/**
* Mapper
*
* @author Yinq
* @date 2025-04-03
*/
@Repository
public interface WmsHppTransferMapper extends BaseMapperPlus<WmsHppTransfer, WmsHppTransferVo> {
}

@ -3,6 +3,7 @@ package org.dromara.wms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.wms.domain.WmsInstockDetail;
import org.dromara.wms.domain.vo.WmsInstockDetailVo;
import org.springframework.stereotype.Repository;
/**
* -Mapper
@ -10,6 +11,7 @@ import org.dromara.wms.domain.vo.WmsInstockDetailVo;
* @author LionLi
* @date 2025-01-06
*/
@Repository
public interface WmsInstockDetailMapper extends BaseMapperPlus<WmsInstockDetail, WmsInstockDetailVo> {
int updateDetail(WmsInstockDetail update);

@ -0,0 +1,68 @@
package org.dromara.wms.service;
import org.dromara.wms.domain.vo.WmsHppTransferVo;
import org.dromara.wms.domain.bo.WmsHppTransferBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author Yinq
* @date 2025-04-03
*/
public interface IWmsHppTransferService {
/**
*
*
* @param transferId
* @return
*/
WmsHppTransferVo queryById(Long transferId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<WmsHppTransferVo> queryPageList(WmsHppTransferBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<WmsHppTransferVo> queryList(WmsHppTransferBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(WmsHppTransferBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(WmsHppTransferBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -7,9 +7,9 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.wms.domain.WmsHppStore;
import org.dromara.wms.domain.WmsHppStorePlace;
import org.dromara.wms.domain.bo.WmsHppStorePlaceBo;
import org.dromara.wms.domain.vo.WmsHppStorePlaceVo;
@ -18,7 +18,6 @@ import org.dromara.wms.service.IWmsHppStorePlaceService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
@ -40,7 +39,7 @@ public class WmsHppStorePlaceServiceImpl implements IWmsHppStorePlaceService {
* @return
*/
@Override
public WmsHppStorePlaceVo queryById(Long objId){
public WmsHppStorePlaceVo queryById(Long objId) {
return baseMapper.selectVoById(objId);
}
@ -71,18 +70,20 @@ public class WmsHppStorePlaceServiceImpl implements IWmsHppStorePlaceService {
}
private MPJLambdaWrapper<WmsHppStorePlace> buildQueryWrapper(WmsHppStorePlaceBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsHppStorePlace> lqw = JoinWrappers.lambda(WmsHppStorePlace.class)
.selectAll(WmsHppStorePlace.class)
.eq(bo.getObjId() != null, WmsHppStorePlace::getObjId, bo.getObjId())
.like(StringUtils.isNotBlank(bo.getStorePlaceName()), WmsHppStorePlace::getStorePlaceName, bo.getStorePlaceName())
.eq(StringUtils.isNotBlank(bo.getStorePlaceCode()), WmsHppStorePlace::getStorePlaceCode, bo.getStorePlaceCode())
.eq(bo.getStoreId() != null, WmsHppStorePlace::getStoreId, bo.getStoreId())
.eq(StringUtils.isNotBlank(bo.getUsedFlag()), WmsHppStorePlace::getUsedFlag, bo.getUsedFlag())
.eq(StringUtils.isNotBlank(bo.getSpecitialType()), WmsHppStorePlace::getSpecitialType, bo.getSpecitialType())
.eq(StringUtils.isNotBlank(bo.getPositionType()), WmsHppStorePlace::getPositionType, bo.getPositionType())
.orderByDesc(WmsHppStorePlace::getCreateTime);
return lqw;
// Map<String, Object> params = bo.getParams();
return JoinWrappers.lambda(WmsHppStorePlace.class)
.selectAll(WmsHppStorePlace.class)
.leftJoin(WmsHppStore.class,WmsHppStore::getObjId,WmsHppStorePlace::getStoreId)
.select(WmsHppStore::getStoreName)
// .eq(bo.getObjId() != null, WmsHppStorePlace::getObjId, bo.getObjId())
.like(StringUtils.isNotBlank(bo.getStorePlaceName()), WmsHppStorePlace::getStorePlaceName, bo.getStorePlaceName())
.eq(StringUtils.isNotBlank(bo.getStorePlaceCode()), WmsHppStorePlace::getStorePlaceCode, bo.getStorePlaceCode())
.eq(bo.getStoreId() != null, WmsHppStorePlace::getStoreId, bo.getStoreId())
.eq(StringUtils.isNotBlank(bo.getUsedFlag()), WmsHppStorePlace::getUsedFlag, bo.getUsedFlag())
.eq(StringUtils.isNotBlank(bo.getSpecitialType()), WmsHppStorePlace::getSpecitialType, bo.getSpecitialType())
.eq(StringUtils.isNotBlank(bo.getPositionType()), WmsHppStorePlace::getPositionType, bo.getPositionType())
.orderByDesc(WmsHppStorePlace::getCreateTime);
}
/**
@ -96,7 +97,7 @@ public class WmsHppStorePlaceServiceImpl implements IWmsHppStorePlaceService {
WmsHppStorePlace add = MapstructUtils.convert(bo, WmsHppStorePlace.class);
String username = LoginHelper.getUsername();
add.setCreateBy(username);
validEntityBeforeSave(add);
// validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setObjId(add.getObjId());
@ -115,16 +116,11 @@ public class WmsHppStorePlaceServiceImpl implements IWmsHppStorePlaceService {
WmsHppStorePlace update = MapstructUtils.convert(bo, WmsHppStorePlace.class);
String username = LoginHelper.getUsername();
update.setUpdateBy(username);
validEntityBeforeSave(update);
// validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(WmsHppStorePlace entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
@ -135,9 +131,9 @@ public class WmsHppStorePlaceServiceImpl implements IWmsHppStorePlaceService {
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
/* if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
}*/
return baseMapper.deleteByIds(ids) > 0;
}

@ -0,0 +1,129 @@
package org.dromara.wms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.wms.domain.bo.WmsHppTransferBo;
import org.dromara.wms.domain.vo.WmsHppTransferVo;
import org.dromara.wms.domain.WmsHppTransfer;
import org.dromara.wms.mapper.WmsHppTransferMapper;
import org.dromara.wms.service.IWmsHppTransferService;
import java.util.List;
import java.util.Collection;
/**
* Service
*
* @author Yinq
* @date 2025-04-03
*/
@RequiredArgsConstructor
@Service
public class WmsHppTransferServiceImpl implements IWmsHppTransferService {
private final WmsHppTransferMapper baseMapper;
/**
*
*
* @param transferId
* @return
*/
@Override
public WmsHppTransferVo queryById(Long transferId){
return baseMapper.selectVoById(transferId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<WmsHppTransferVo> queryPageList(WmsHppTransferBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<WmsHppTransfer> lqw = buildQueryWrapper(bo);
Page<WmsHppTransferVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<WmsHppTransferVo> queryList(WmsHppTransferBo bo) {
MPJLambdaWrapper<WmsHppTransfer> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<WmsHppTransfer> buildQueryWrapper(WmsHppTransferBo bo) {
// Map<String, Object> params = bo.getParams();
return JoinWrappers.lambda(WmsHppTransfer.class)
.selectAll(WmsHppTransfer.class)
.eq(bo.getMaterialId() != null, WmsHppTransfer::getMaterialId, bo.getMaterialId())
.eq(StringUtils.isNotBlank(bo.getCardNo()), WmsHppTransfer::getCardNo, bo.getCardNo())
.eq(StringUtils.isNotBlank(bo.getShelfNo()), WmsHppTransfer::getShelfNo, bo.getShelfNo())
.eq(StringUtils.isNotBlank(bo.getStorePlaceCode()), WmsHppTransfer::getStorePlaceCode, bo.getStorePlaceCode())
.eq(StringUtils.isNotBlank(bo.getTransferPlaceCode()), WmsHppTransfer::getTransferPlaceCode, bo.getTransferPlaceCode())
.orderByDesc(WmsHppTransfer::getCreateTime);
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(WmsHppTransferBo bo) {
WmsHppTransfer add = MapstructUtils.convert(bo, WmsHppTransfer.class);
// validEntityBeforeSave(add);
return baseMapper.insert(add) > 0;
// if (flag) {
// bo.setTransferId(add.getTransferId());
// }
// return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(WmsHppTransferBo bo) {
WmsHppTransfer update = MapstructUtils.convert(bo, WmsHppTransfer.class);
// validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
/* if(isValid){
}*/
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -247,7 +247,6 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
/**
*
*
*/
@Override
public WmsInventory outSelectInVentoryByBatch(WmsOutstockRecord outstockRecord) {
@ -257,9 +256,9 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
@Override
public List<StoreInfoVo> selectStoreInfo(String type) {
if (type.equals("原材料盘点")){
if (type.equals("原材料盘点")) {
return apiMapper.selectRawStore();
}else if (type.equals("半成品盘点")){
} else if (type.equals("半成品盘点")) {
return apiMapper.selectSemiStore();
}
return null;
@ -270,9 +269,9 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
public List<WmsBaseLocationVo> storeCheckSelectLocation(String type, Long storeId) {
if (type.equals("原材料盘点")){
if (type.equals("原材料盘点")) {
return apiMapper.selectRawCheckLocationList(storeId);
}else if (type.equals("半成品盘点")){
} else if (type.equals("半成品盘点")) {
return apiMapper.selectSemiCheckLocationList(storeId);
}
@ -284,11 +283,11 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
@Override
public WmsInventoryCheck storeCheckSubmitOrder(String type, Long storeId, List<String> list) {
String tag = DateUtils.dateTime();
String tabName=null;
String tabName = null;
if (type.equals("原材料盘点")) {
tabName="wms_inventory_check";
}else if (type.equals("半成品盘点")){
tabName="wms_inventory_check_2";
tabName = "wms_inventory_check";
} else if (type.equals("半成品盘点")) {
tabName = "wms_inventory_check_2";
}
WmsInventoryCheck wmsInventoryCheck = wmsInventoryCheckMapper.selectInventoryCheckOrder(tabName);
@ -305,7 +304,7 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
insert.setPlanWarehouseId(storeId);
insert.setCreateBy(LoginHelper.getUserId());
insert.setTenantId(LoginHelper.getTenantId());
wmsInventoryCheckMapper.insertTable(tabName,insert);
wmsInventoryCheckMapper.insertTable(tabName, insert);
return insert;
}
@ -315,10 +314,10 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
MPJLambdaWrapper<WmsInventory> lqw = JoinWrappers.lambda(WmsInventory.class);
lqw.eq(WmsInventory::getLocationCode, locationCode);
return wmsInventoryMapper.selectVoList(lqw);
}else if (type.equals("半成品盘点")){
} else if (type.equals("半成品盘点")) {
return wmsInventoryMapper.selectSemiInventoryListByLocation(locationCode);
}
return null;
return null;
}
@ -351,8 +350,18 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
}
private final WmsHppTransferMapper wmsHppTransferMapper;
@Override
public Boolean seimMoveSubmit(Long id, String placeId) {
// 查询
WmsHppStorageDetailVo wmsHppStorageDetailVo = hppStorageDetailMapper.selectVoById(id);
// 插入调拨
WmsHppTransfer wmsHppTransfer = new WmsHppTransfer();
BeanUtils.copyProperties(wmsHppStorageDetailVo, wmsHppTransfer);
wmsHppTransfer.setTransferPlaceCode(placeId);
wmsHppTransferMapper.insert(wmsHppTransfer);
// 修改台账
WmsHppStorageDetail hppStorageDetail = new WmsHppStorageDetail();
hppStorageDetail.setObjId(id);
hppStorageDetail.setStorePlaceCode(placeId);

@ -0,0 +1,7 @@
<?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.dromara.wms.mapper.WmsHppTransferMapper">
</mapper>
Loading…
Cancel
Save