增加 盘点接口

master
wanghao 2 weeks ago
parent 3880c725fa
commit f4b17f985a

@ -1,11 +1,11 @@
package org.dromara.wms.controller;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.web.core.BaseController;
import org.dromara.wms.domain.ShiftChange;
import org.dromara.wms.domain.WmsInventory;
import org.dromara.wms.domain.WmsOutstockRecord;
import org.dromara.wms.domain.*;
import org.dromara.wms.domain.bo.WmsReturnOrderBo;
import org.dromara.wms.domain.vo.*;
import org.dromara.wms.service.*;
@ -93,23 +93,23 @@ public class WmsPdaApiController extends BaseController {
/**
*
*
* @return
*/
@PostMapping("/raw/selectInVentoryByBatchCode")
public R<Void> rawSelectInVentoryByBatchCode(WmsOutstockRecord outstockRecord) {
// 验证库存
WmsInventory wmsInventory=apiService.outSelectInVentoryByBatch(outstockRecord);
WmsInventory wmsInventory = apiService.outSelectInVentoryByBatch(outstockRecord);
// WmsInventoryVo wmsInventoryVo=apiService.selectInVentoryByBatchCode(outstockRecord.getBatchCode(),outstockRecord.getLocationCode());
if (wmsInventory == null) {
R.fail("物料不在待出库列表内");
}
if (wmsInventory.getInventoryQty().compareTo(outstockRecord.getOutstockQty())<0){
R.fail("当前库位库存为:"+wmsInventory.getInventoryQty());
if (wmsInventory.getInventoryQty().compareTo(outstockRecord.getOutstockQty()) < 0) {
R.fail("当前库位库存为:" + wmsInventory.getInventoryQty());
}
Boolean result = apiService.rawOutSubmit(outstockRecord,wmsInventory);
Boolean result = apiService.rawOutSubmit(outstockRecord, wmsInventory);
return result ? R.ok() : R.fail();
}
@ -218,11 +218,12 @@ public class WmsPdaApiController extends BaseController {
/**
*
*
* @return
*/
@PostMapping("/selectTeams")
public R<List<TeamInfoVo>> selectTeams() {
List<TeamInfoVo> teamList =apiService.selectTeams();
List<TeamInfoVo> teamList = apiService.selectTeams();
return R.ok(teamList);
}
@ -231,9 +232,51 @@ public class WmsPdaApiController extends BaseController {
Boolean result = apiService.shiftChangeSubmit(shiftChange);
return result ? R.ok() : R.fail();
}
@PostMapping("/selectStoreInfo")
public void selectStoreInfo(String type){
List<StoreInfoVo> list=apiService.selectStoreInfo(type);
public R<List<StoreInfoVo>> selectStoreInfo(String type) {
List<StoreInfoVo> list = apiService.selectStoreInfo(type);
if (list == null || list.isEmpty()) {
return R.fail(type + "仓库查询失败");
}
return R.ok(list);
}
/**
*
*
* @param type
* @param storeId
* @return
*/
@PostMapping("/storeCheck/selectInventorLocationList")
public R<List<WmsBaseLocationVo>> storeCheckSelectLocation(String type, Long storeId) {
List<WmsBaseLocationVo> list = apiService.storeCheckSelectLocation(type, storeId);
if (list == null || list.isEmpty()) {
return R.fail(type + "库位查询失败");
}
return R.ok(list);
}
@PostMapping("/storeCheck/submitOrder")
public R<WmsInventoryCheck> storeCheckSubmitOrder(@RequestParam("storeId") Long storeId,@RequestParam("location") List<String> list) {
WmsInventoryCheck wmsInventoryCheck= apiService.storeCheckSubmitOrder(storeId,list);
return R.ok(wmsInventoryCheck);
}
// 根据库位查询库存
@PostMapping("/storeCheck/selectInventory")
public R< List<WmsInventoryVo>> storeCheckSelectInventory(String locationCode) {
List<WmsInventoryVo> list=apiService.storeCheckSelectInventory(locationCode);
if (list == null || list.isEmpty()) {
return R.fail();
}
return R.ok(list);
}
@PostMapping("/storeCheck/submitCheckRecord")
public R< Void> storeCheckSubmitCheckRecord(@RequestBody WmsInventoryCheckRecord wmsInventoryCheckRecord) {
Boolean result=apiService.storeCheckSubmitCheckRecord(wmsInventoryCheckRecord);
return result ? R.ok() : R.fail();
}
}

@ -17,7 +17,7 @@ import java.io.Serial;
*/
@Data
@TableName("wms_inventory_check")
public class WmsInventoryCheck {
public class WmsInventoryCheck extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
@ -81,30 +81,8 @@ public class WmsInventoryCheck {
*
*/
private Date endTime;
/**
* id
*/
private String tenantId;
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist = false)
private String warehouseCode;//字段映射

@ -4,6 +4,8 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -65,12 +67,12 @@ public class WmsInventoryCheckRecord {
/**
*
*/
private String inventoryQty;
private BigDecimal inventoryQty;
/**
*
*/
private Long checkQty;
private BigDecimal checkQty;
/**
* (01)

@ -7,6 +7,8 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.wms.domain.WmsInventoryCheckRecord;
@ -65,12 +67,12 @@ public class WmsInventoryCheckRecordBo extends BaseEntity {
/**
*
*/
private String inventoryQty;
private BigDecimal inventoryQty;
/**
*
*/
private Long checkQty;
private BigDecimal checkQty;
/**
* (01)

@ -80,5 +80,5 @@ public class WmsBaseLocationVo implements Serializable {
*/
private String warehouseName;
private boolean state=false;
}

@ -1,5 +1,6 @@
package org.dromara.wms.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
@ -85,13 +86,13 @@ public class WmsInventoryCheckRecordVo implements Serializable {
*
*/
@ExcelProperty(value = "库存数量")
private String inventoryQty;
private BigDecimal inventoryQty;
/**
*
*/
@ExcelProperty(value = "盘点数量")
private Long checkQty;
private BigDecimal checkQty;
/**
* (01)

@ -1,8 +1,10 @@
package org.dromara.wms.mapper;
import org.apache.ibatis.annotations.Select;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.wms.domain.WmsInventoryCheck;
import org.dromara.wms.domain.vo.WmsInventoryCheckVo;
import org.springframework.stereotype.Repository;
/**
* Mapper
@ -10,6 +12,8 @@ import org.dromara.wms.domain.vo.WmsInventoryCheckVo;
* @author LionLi
* @date 2025-01-10
*/
@Repository
public interface WmsInventoryCheckMapper extends BaseMapperPlus<WmsInventoryCheck, WmsInventoryCheckVo> {
@Select("select top 1 check_code from wms_inventory_check where DateDiff(dd,create_time,getdate())=0 order by create_time desc")
WmsInventoryCheck selectInventoryCheckOrder();
}

@ -3,6 +3,7 @@ package org.dromara.wms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.wms.domain.WmsInventoryCheckRecord;
import org.dromara.wms.domain.vo.WmsInventoryCheckRecordVo;
import org.springframework.stereotype.Repository;
/**
* Mapper
@ -10,6 +11,7 @@ import org.dromara.wms.domain.vo.WmsInventoryCheckRecordVo;
* @author LionLi
* @date 2025-01-10
*/
@Repository
public interface WmsInventoryCheckRecordMapper extends BaseMapperPlus<WmsInventoryCheckRecord, WmsInventoryCheckRecordVo> {
}

@ -6,7 +6,9 @@ import org.dromara.wms.domain.ShiftChange;
import org.dromara.wms.domain.WmsPsmInLoad;
import org.dromara.wms.domain.WmsPsmInLoadDetail;
import org.dromara.wms.domain.WmsPsmInStock;
import org.dromara.wms.domain.vo.StoreInfoVo;
import org.dromara.wms.domain.vo.TeamInfoVo;
import org.dromara.wms.domain.vo.WmsBaseLocationVo;
import org.dromara.wms.domain.vo.WmsPsmInLoadVo;
import org.springframework.stereotype.Repository;
@ -33,4 +35,12 @@ public interface WmsPdaApiMapper {
List<TeamInfoVo> selectTeams();
int shiftChangeSubmit(ShiftChange shiftChange);
List<StoreInfoVo> selectRawStore();
/**
* @param storeId
* @return
*/
List<WmsBaseLocationVo> selectRawCheckLocationList(@Param("storeId") Long storeId);
}

@ -1,8 +1,6 @@
package org.dromara.wms.service;
import org.dromara.wms.domain.ShiftChange;
import org.dromara.wms.domain.WmsInventory;
import org.dromara.wms.domain.WmsOutstockRecord;
import org.dromara.wms.domain.*;
import org.dromara.wms.domain.vo.*;
import java.util.List;
@ -43,4 +41,13 @@ public interface IWmsPdaApiService {
WmsInventory outSelectInVentoryByBatch(WmsOutstockRecord outstockRecord);
List<StoreInfoVo> selectStoreInfo(String type);
List<WmsBaseLocationVo> storeCheckSelectLocation(String type, Long storeId);
WmsInventoryCheck storeCheckSubmitOrder(Long storeId, List<String> list);
List<WmsInventoryVo> storeCheckSelectInventory(String locationCode);
Boolean storeCheckSubmitCheckRecord(WmsInventoryCheckRecord wmsInventoryCheckRecord);
}

@ -82,7 +82,7 @@ public class WmsInventoryCheckRecordServiceImpl implements IWmsInventoryCheckRec
.like(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryCheckRecord::getLocationCode, bo.getLocationCode())
.like(StringUtils.isNotBlank(bo.getMaterialCode()), WmsInventoryCheckRecord::getMaterialCode, bo.getMaterialCode())
.like(StringUtils.isNotBlank(bo.getMaterialName()), WmsInventoryCheckRecord::getMaterialName, bo.getMaterialName())
.eq(StringUtils.isNotBlank(bo.getInventoryQty()), WmsInventoryCheckRecord::getInventoryQty, bo.getInventoryQty())
.eq(bo.getInventoryQty()!= null, WmsInventoryCheckRecord::getInventoryQty, bo.getInventoryQty())
.eq(bo.getCheckQty() != null, WmsInventoryCheckRecord::getCheckQty, bo.getCheckQty())
.eq(StringUtils.isNotBlank(bo.getCheckStatus()), WmsInventoryCheckRecord::getCheckStatus, bo.getCheckStatus())
.eq(StringUtils.isNotBlank(bo.getErpSynchronousStatus()), WmsInventoryCheckRecord::getErpSynchronousStatus, bo.getErpSynchronousStatus())

@ -146,7 +146,7 @@ public class WmsInventoryCheckServiceImpl implements IWmsInventoryCheckService {
String stockingOrder = order + orderDate + orderLast;
WmsInventoryCheck add = MapstructUtils.convert(bo, WmsInventoryCheck.class);
add.setCheckCode(stockingOrder);
add.setCreateBy(username);
add.setCreateBy(LoginHelper.getUserId());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
@ -174,7 +174,7 @@ public class WmsInventoryCheckServiceImpl implements IWmsInventoryCheckService {
public Boolean updateByBo(WmsInventoryCheckBo bo) {
WmsInventoryCheck update = MapstructUtils.convert(bo, WmsInventoryCheck.class);
validEntityBeforeSave(update);
update.setUpdateBy(LoginHelper.getUsername());
update.setUpdateBy(LoginHelper.getUserId());
return baseMapper.updateById(update) > 0;
}

@ -8,13 +8,11 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.wms.domain.*;
import org.dromara.wms.domain.vo.*;
import org.dromara.wms.mapper.*;
import org.dromara.wms.service.IWmsOutstockRecordService;
import org.dromara.wms.service.IWmsPdaApiService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -281,6 +279,55 @@ public class WmsPdaApiServiceImpl implements IWmsPdaApiService {
@Override
public List<StoreInfoVo> selectStoreInfo(String type) {
return List.of();
List<StoreInfoVo> list=apiMapper.selectRawStore();
return list;
}
@Override
public List<WmsBaseLocationVo> storeCheckSelectLocation(String type, Long storeId) {
List<WmsBaseLocationVo> list= apiMapper.selectRawCheckLocationList(storeId);
return list;
}
private final WmsInventoryCheckMapper wmsInventoryCheckMapper;
// 查询盘点工单
@Override
public WmsInventoryCheck storeCheckSubmitOrder(Long storeId, List<String> list) {
String tag = DateUtils.dateTime();
WmsInventoryCheck wmsInventoryCheck = wmsInventoryCheckMapper.selectInventoryCheckOrder();
WmsInventoryCheck insert = new WmsInventoryCheck();
if (wmsInventoryCheck == null) {
insert.setCheckCode("PD"+tag+"001");
}else {
String checkCode = wmsInventoryCheck.getCheckCode();
String lastThreeDigits = checkCode.substring(checkCode.length() - 3);
int nextNumber = Integer.parseInt(lastThreeDigits) + 1;
String formattedNumber = String.format("%03d", nextNumber);
insert.setCheckCode("PD"+tag+formattedNumber);
}
insert.setPlanWarehouseId(storeId);
insert.setCreateBy(LoginHelper.getUserId());
wmsInventoryCheckMapper.insert(insert);
return wmsInventoryCheck;
}
@Override
public List<WmsInventoryVo> storeCheckSelectInventory(String locationCode) {
MPJLambdaWrapper<WmsInventory> lqw = JoinWrappers.lambda(WmsInventory.class);
lqw.eq(WmsInventory::getLocationCode, locationCode);
return wmsInventoryMapper.selectVoList(lqw);
}
private final WmsInventoryCheckRecordMapper wmsInventoryCheckRecordMapper;
@Override
public Boolean storeCheckSubmitCheckRecord(WmsInventoryCheckRecord wmsInventoryCheckRecord) {
wmsInventoryCheckRecord.setCheckStatus(wmsInventoryCheckRecord.getInventoryQty().compareTo(wmsInventoryCheckRecord.getCheckQty())==0 ?"0":"1");
wmsInventoryCheckRecord.setCreateBy(LoginHelper.getUsername());
wmsInventoryCheckRecordMapper.insert(wmsInventoryCheckRecord);
return true;
}
}

@ -73,4 +73,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
INSERT INTO prod_shift_change (shift_id, class_team_id, user_id, user_name,shift_change_time,create_by,create_time)
VALUES (#{shiftId}, #{classTeamId}, #{userId}, #{userName},getdate(), #{userId},getdate());
</insert>
<resultMap id="storeMap" type="org.dromara.wms.domain.vo.StoreInfoVo">
<result column="warehouse_id" property="id"/>
<result column="warehouse_code" property="code"/>
<result column="warehouse_name" property="name"/>
</resultMap>
<select id="selectRawStore" resultMap="storeMap">
select warehouse_id,warehouse_code,warehouse_name,material_categories from wms_base_warehouse;
</select>
<resultMap id="locationMap" type="org.dromara.wms.domain.vo.WmsBaseLocationVo">
<result column="location_code" property="locationCode"/>
</resultMap>
<select id="selectRawCheckLocationList" resultMap="locationMap">
select location_code from wms_inventory where store_id=#{storeId} group by location_code
</select>
</mapper>

Loading…
Cancel
Save