出库单出库

This commit is contained in:
15066119699 2025-03-06 16:36:48 +08:00
parent bcdd994fcb
commit b357f62209
11 changed files with 129 additions and 60 deletions

View File

@ -132,6 +132,9 @@ public class AppPmsController extends BaseController {
appPmsOrderOut.setOrderStatus(0);
appPmsOrderOut.setCreateTime(new Date());
appPmsOrderOut.setUpdateTime(new Date());
appPmsOrderOut.setShelvesNum(BigDecimal.valueOf(orderOutRequest.getGoodsNum()));
appPmsOrderOut.setPickNum(BigDecimal.ZERO);
appPmsOrderOut.setTrNum(BigDecimal.ZERO);
appPmsOrderOut.setCreateBy("PMS出库接口");
insertRow += appPmsOrderOutService.insertAppPmsOrderOut(appPmsOrderOut);
}

View File

@ -97,13 +97,13 @@ public class AppPmsOrderOutController extends BaseController
}
/**
* 删除请填写功能名称
* 删除出库单
*/
@PreAuthorize("@ss.hasPermi('system:out:remove')")
@Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
@DeleteMapping("/{listIds}")
public AjaxResult remove(@PathVariable String[] listIds)
@PreAuthorize("@ss.hasPermi('app:pmsOrderOut:remove')")
@Log(title = "出库单", businessType = BusinessType.DELETE)
@DeleteMapping("/{recordIds}")
public AjaxResult remove(@PathVariable String[] recordIds)
{
return toAjax(appPmsOrderOutService.deleteAppPmsOrderOutByListIds(listIds));
return toAjax(appPmsOrderOutService.deleteAppPmsOrderOutByRecordIds(recordIds));
}
}

View File

@ -552,21 +552,21 @@ public class AppTaskController extends BaseController
BigDecimal shelvesNum = appPmsOrderOut.getShelvesNum();
BigDecimal total = BigDecimal.ZERO;
for(AppStock appStock : appStocks){
total = total.add(appStock.getOriginNum());
total = total.add(appStock.getRemainNum());
if(appPmsOrderOut.getPickNum() == null){
appPmsOrderOut.setPickNum(BigDecimal.ZERO);
}
if(shelvesNum.compareTo(total) == 0){
ctlMap.put(appStock.getVehicleId(),appStock.getOriginNum());
appPmsOrderOut.setPickNum(appPmsOrderOut.getPickNum().add(appStock.getOriginNum()));
ctlMap.put(appStock.getVehicleId(),appStock.getRemainNum());
appPmsOrderOut.setPickNum(appPmsOrderOut.getPickNum().add(appStock.getRemainNum()));
break;
}else if(shelvesNum.compareTo(total) > 0){
ctlMap.put(appStock.getVehicleId(),appStock.getOriginNum());
appPmsOrderOut.setPickNum(appPmsOrderOut.getPickNum().add(appStock.getOriginNum()));
ctlMap.put(appStock.getVehicleId(),appStock.getRemainNum());
appPmsOrderOut.setPickNum(appPmsOrderOut.getPickNum().add(appStock.getRemainNum()));
}else{
//小于0
BigDecimal subtract = total.subtract(shelvesNum);
BigDecimal subtract1 = appStock.getOriginNum().subtract(subtract);
BigDecimal subtract1 = appStock.getRemainNum().subtract(subtract);
ctlMap.put(appStock.getVehicleId(),subtract1);
appPmsOrderOut.setPickNum(appPmsOrderOut.getPickNum().add(subtract1));
break;
@ -797,8 +797,8 @@ public class AppTaskController extends BaseController
BigDecimal totalNum = BigDecimal.ZERO;
for (AppStock tMiStock1 : appStocks) {
if (tMiStock1.getGoodsId().equals(key)) {
BigDecimal availableStock = tMiStock1.getOriginNum(); // 当前库存数量
totalNum = totalNum.add(tMiStock1.getOriginNum());
BigDecimal availableStock = tMiStock1.getRemainNum(); // 当前库存数量
totalNum = totalNum.add(tMiStock1.getRemainNum());
// 判断是否达到或者超过所需出库数量
if (totalNum.compareTo(requiredNum) >= 0) {
// 如果累加的数量已经达到或超过所需数量
@ -815,7 +815,7 @@ public class AppTaskController extends BaseController
boolean isExist = false;
for (AppStock tMiStock1 : appStocks) {
if(tMiStock1.getPackingNum() != null) {
if (tMiStock1.getOriginNum().compareTo(tMiStock1.getPackingNum()) > 0) {
if (tMiStock1.getRemainNum().compareTo(tMiStock1.getPackingNum()) > 0) {
isExist = true;
break;
}
@ -854,14 +854,15 @@ public class AppTaskController extends BaseController
appTask.setOrigin(tMiStock1.getLocationId());
appTask.setLocationId(tMiStock1.getLocationId());
appTask.setOpNum(tMiStock1.getPackingNum());
appTask.setStockNum(tMiStock1.getOriginNum());
appTask.setStockNum(tMiStock1.getRemainNum());
appTask.setCkType(tMiStock1.getCkType());
appTask.setTaskPriority(1);
appTaskService.insertAppTask(appTask);
}
}
}
/**
* 请求出库
* @param outRequest 出库请求

View File

@ -44,22 +44,21 @@ public interface AppPmsOrderOutMapper
*/
public int updateAppPmsOrderOut(AppPmsOrderOut appPmsOrderOut);
public int deleteAppPmsOrderOutByOrderId(AppPmsOrderOut appPmsOrderOut);
/**
* 删除请填写功能名称
* 删除出库单
*
* @param recordId 请填写功能名称主键
* @param recordId 出库单主键
* @return 结果
*/
public int deleteAppPmsOrderOutByListId(String recordId);
public int deleteAppPmsOrderOutByRecordId(String recordId);
/**
* 批量删除请填写功能名称
* 批量删除出库单
*
* @param recordIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteAppPmsOrderOutByListIds(String[] recordIds);
public int deleteAppPmsOrderOutByOrderId(AppPmsOrderOut appPmsOrderOut);
public int deleteAppPmsOrderOutByRecordIds(String[] recordIds);
int updatePickNum(AppPmsOrderOut appPmsOrderOut);
}

View File

@ -67,4 +67,11 @@ public interface AppVehicleMapper
* @return 结果
*/
public List<AppVehicleInfo> selectVehicleList();
/**
* 根据容器编码查询容器
* @param vehicleCode
* @return
*/
AppVehicle selectAppVehicleByVehicleCode(String vehicleCode);
}

View File

@ -45,20 +45,20 @@ public interface IAppPmsOrderOutService
public int updateAppPmsOrderOut(AppPmsOrderOut appPmsOrderOut);
/**
* 批量删除请填写功能名称
* 批量删除出库单
*
* @param listIds 需要删除的请填写功能名称主键集合
* @param recordIds 需要删除的出库单主键集合
* @return 结果
*/
public int deleteAppPmsOrderOutByListIds(String[] listIds);
public int deleteAppPmsOrderOutByRecordIds(String[] recordIds);
/**
* 删除请填写功能名称信息
* 删除出库单信息
*
* @param listId 请填写功能名称主键
* @param recordId 出库单主键
* @return 结果
*/
public int deleteAppPmsOrderOutByListId(String listId);
public int deleteAppPmsOrderOutByRecordId(String recordId);
int updatePickNum(AppPmsOrderOut appPmsOrderOut);
}

View File

@ -11,8 +11,7 @@ import java.util.List;
* @author ruoyi
* @date 2025-01-15
*/
public interface IAppVehicleService
{
public interface IAppVehicleService {
/**
* 查询请填写功能名称
*
@ -65,4 +64,13 @@ public interface IAppVehicleService
* 获取状态为在库中的所有可用的载具
*/
public List<AppAvailVehicle> selectAppAvailVehicleList();
/**
* 容器凹入
*
* @param vehicleList
* @param updateSupport
* @return
*/
String importVehicle(List<AppVehicle> vehicleList, boolean updateSupport);
}

View File

@ -69,29 +69,31 @@ public class AppPmsOrderOutServiceImpl implements IAppPmsOrderOutService
}
/**
* 批量删除请填写功能名称
* 批量删除出库单
*
* @param listIds 需要删除的请填写功能名称主键
* @param recordIds 需要删除的出库单主键
* @return 结果
*/
@Override
public int deleteAppPmsOrderOutByListIds(String[] listIds)
public int deleteAppPmsOrderOutByRecordIds(String[] recordIds)
{
return appPmsOrderOutMapper.deleteAppPmsOrderOutByListIds(listIds);
return appPmsOrderOutMapper.deleteAppPmsOrderOutByRecordIds(recordIds);
}
/**
* 删除请填写功能名称信息
* 删除出库单信息
*
* @param listId 请填写功能名称主键
* @param recordId 出库单主键
* @return 结果
*/
@Override
public int deleteAppPmsOrderOutByListId(String listId)
public int deleteAppPmsOrderOutByRecordId(String recordId)
{
return appPmsOrderOutMapper.deleteAppPmsOrderOutByListId(listId);
return appPmsOrderOutMapper.deleteAppPmsOrderOutByRecordId(recordId);
}
@Override
public int updatePickNum(AppPmsOrderOut appPmsOrderOut) {
return appPmsOrderOutMapper.updatePickNum(appPmsOrderOut);

View File

@ -8,7 +8,13 @@ import com.ruoyi.app.domain.DAO.AppVehicleInfo;
import com.ruoyi.app.domain.DTO.AppAvailVehicle;
import com.ruoyi.app.mapper.AppVehicleMapper;
import com.ruoyi.app.service.IAppVehicleService;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanValidators;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -19,8 +25,8 @@ import org.springframework.stereotype.Service;
* @date 2025-01-15
*/
@Service
public class AppVehicleServiceImpl implements IAppVehicleService
{
public class AppVehicleServiceImpl implements IAppVehicleService {
private static final Logger log = LoggerFactory.getLogger(AppVehicleServiceImpl.class);
@Autowired
private AppVehicleMapper appVehicleMapper;
@ -31,8 +37,7 @@ public class AppVehicleServiceImpl implements IAppVehicleService
* @return 请填写功能名称
*/
@Override
public AppVehicle selectAppVehicleByVehicleId(String vehicleId)
{
public AppVehicle selectAppVehicleByVehicleId(String vehicleId) {
return appVehicleMapper.selectAppVehicleByVehicleId(vehicleId);
}
@ -43,8 +48,7 @@ public class AppVehicleServiceImpl implements IAppVehicleService
* @return 请填写功能名称
*/
@Override
public List<AppVehicle> selectAppVehicleList(AppVehicle appVehicle)
{
public List<AppVehicle> selectAppVehicleList(AppVehicle appVehicle) {
return appVehicleMapper.selectAppVehicleList(appVehicle);
}
@ -55,8 +59,7 @@ public class AppVehicleServiceImpl implements IAppVehicleService
* @return 结果
*/
@Override
public int insertAppVehicle(AppVehicle appVehicle)
{
public int insertAppVehicle(AppVehicle appVehicle) {
return appVehicleMapper.insertAppVehicle(appVehicle);
}
@ -67,8 +70,7 @@ public class AppVehicleServiceImpl implements IAppVehicleService
* @return 结果
*/
@Override
public int updateAppVehicle(AppVehicle appVehicle)
{
public int updateAppVehicle(AppVehicle appVehicle) {
return appVehicleMapper.updateAppVehicle(appVehicle);
}
@ -79,8 +81,7 @@ public class AppVehicleServiceImpl implements IAppVehicleService
* @return 结果
*/
@Override
public int deleteAppVehicleByVehicleIds(String[] vehicleIds)
{
public int deleteAppVehicleByVehicleIds(String[] vehicleIds) {
return appVehicleMapper.deleteAppVehicleByVehicleIds(vehicleIds);
}
@ -91,13 +92,13 @@ public class AppVehicleServiceImpl implements IAppVehicleService
* @return 结果
*/
@Override
public int deleteAppVehicleByVehicleId(String vehicleId)
{
public int deleteAppVehicleByVehicleId(String vehicleId) {
return appVehicleMapper.deleteAppVehicleByVehicleId(vehicleId);
}
/**
* 获取状态为在库中的所有可用的载具
*
* @return 结果
*/
public List<AppAvailVehicle> selectAppAvailVehicleList() {
@ -118,4 +119,45 @@ public class AppVehicleServiceImpl implements IAppVehicleService
}
return response;
}
@Override
public String importVehicle(List<AppVehicle> vehicleList, boolean isUpdateSupport) {
if (StringUtils.isNull(vehicleList) || vehicleList.size() == 0) {
throw new ServiceException("导入容器数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (AppVehicle appVehicle : vehicleList) {
try {
// 验证是否存在这个容器编码
AppVehicle u = appVehicleMapper.selectAppVehicleByVehicleCode(appVehicle.getVehicleCode());
if (StringUtils.isNull(u)) {
appVehicleMapper.insertAppVehicle(appVehicle);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + appVehicle.getVehicleCode() + " 导入成功");
} else if (isUpdateSupport) {
appVehicleMapper.updateAppVehicle(appVehicle);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + appVehicle.getVehicleCode() + " 更新成功");
} else {
failureNum++;
failureMsg.append("<br/>" + failureNum + "、容器 " + appVehicle.getVehicleCode() + " 已存在");
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、容器 " + appVehicle.getVehicleCode() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
}

View File

@ -115,16 +115,18 @@
where record_id = #{recordId}
</update>
<delete id="deleteAppPmsOrderOutByListId" parameterType="String">
delete from app_pms_order_out where record_id = #{recordId}
</delete>
<delete id="deleteAppPmsOrderOutByOrderId" parameterType="AppPmsOrderOut">
delete from app_pms_order_out where order_id = #{orderId}
</delete>
<delete id="deleteAppPmsOrderOutByListIds" parameterType="String">
<delete id="deleteAppPmsOrderOutByRecordId" parameterType="String">
delete from app_pms_order_out where record_id = #{recordId}
</delete>
<delete id="deleteAppPmsOrderOutByRecordIds" parameterType="String">
delete from app_pms_order_out where record_id in
<foreach item="record_id" collection="array" open="(" separator="," close=")">
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</delete>

View File

@ -107,4 +107,9 @@
<select id="selectVehicleList" resultMap="AppVehicleInfoResult">
select vehicle_id,vehicle_code, vehicle_status, is_empty, is_lock, location_id from app_vehicle
</select>
<select id="selectAppVehicleByVehicleCode" parameterType="String" resultMap="AppVehicleResult">
<include refid="selectAppVehicleVo"/>
where vehicle_code = #{vehicleCode}
</select>
</mapper>