opt:越南富佳优化
This commit is contained in:
@@ -136,10 +136,17 @@
|
||||
|
||||
<if test="param.material_code != null and param.material_code != ''">
|
||||
AND
|
||||
(mater.material_code LIKE #{param.material_code} or
|
||||
mater.material_name LIKE #{param.material_code} )
|
||||
(mater.material_code LIKE CONCAT('%', #{param.material_code} , '%') or
|
||||
mater.material_name LIKE CONCAT('%', #{param.material_code} , '%'))
|
||||
</if>
|
||||
|
||||
|
||||
<if test="param.storagevehicle_code != null and param.storagevehicle_code != ''">
|
||||
AND
|
||||
ext.storagevehicle_code LIKE CONCAT('%', #{param.storagevehicle_code} , '%')
|
||||
</if>
|
||||
|
||||
|
||||
<if test="param.pcsn != null and param.pcsn != ''">
|
||||
AND
|
||||
ext.pcsn LIKE #{param.pcsn}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package org.nl.wms.decision_manage.service.strategyConfig.decisioner.impl.base;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
@@ -16,8 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
@@ -50,7 +49,7 @@ public class FIFORuleHandler extends Decisioner<StrategyStructMaterialVO, Strate
|
||||
, "order_by", "gro.update_time asc, gro.qty asc")
|
||||
);
|
||||
if (ObjectUtils.isEmpty(vechielDtos)) {
|
||||
throw new BadRequestException(LangBehavior.language("decision_manage.fifo_rule_inventory_shortage"));
|
||||
throw new BadRequestException(LangBehavior.language("wms.decision_manage.fifo_rule_inventory_shortage"));
|
||||
}
|
||||
List<StrategyStructMaterialVO> divStruct = new ArrayList<>();
|
||||
for (StructattrVechielDto vechielDto : vechielDtos) {
|
||||
|
||||
@@ -35,9 +35,10 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -261,9 +262,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
"该任务申请托盘["+vehicle_code+"]为空,无法申请任务!");
|
||||
}
|
||||
//判断该子托盘是否存在未完成任务
|
||||
Integer sub_tray_lists = iSchBaseTaskService.findUnFinishTasksBySub_tray(vehicle_code);
|
||||
Assert.isFalse(sub_tray_lists>0,
|
||||
"该任务申请托盘["+vehicle_code+"]已存在未完成的任务,无法申请任务!");
|
||||
// Integer sub_tray_lists = iSchBaseTaskService.findUnFinishTasksBySub_tray(vehicle_code);
|
||||
// Assert.isFalse(sub_tray_lists>0,
|
||||
// "该任务申请托盘["+vehicle_code+"]已存在未完成的任务,无法申请任务!");
|
||||
|
||||
//todo 仅生成任务,不生成单据
|
||||
// 校验数据
|
||||
@@ -275,44 +276,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.start_point_not_exist"));
|
||||
}
|
||||
|
||||
//查询是否有执行中的点位
|
||||
//找到空点位正在执行的任务
|
||||
List<SchBaseTask> taskingSchBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
|
||||
List<String> pointList = Optional.ofNullable(taskingSchBaseTaskList)
|
||||
.orElse(Collections.emptyList())
|
||||
.stream()
|
||||
.flatMap(task -> Stream.of(task.getPoint_code1(), task.getPoint_code2()))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//计算终点点位
|
||||
List<Structattr> end_point_code_list = iStructattrService.list(new LambdaUpdateWrapper<Structattr>()
|
||||
.eq(Structattr::getSect_code,"FJError")
|
||||
.eq(Structattr::getIs_used, 1)
|
||||
.isNull(Structattr::getStoragevehicle_code)
|
||||
.notIn(CollectionUtils.isNotEmpty(pointList),Structattr::getStruct_code,pointList)
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.orderByDesc(Structattr::getUpdate_time));
|
||||
.orderByDesc(Structattr::getUpdate_time)
|
||||
.last("LIMIT 1"));
|
||||
|
||||
if(CollectionUtils.isEmpty(end_point_code_list)){
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.end_point_not_exist"));
|
||||
}
|
||||
|
||||
|
||||
// 校验终点
|
||||
Structattr end_point = end_point_code_list.get(0);
|
||||
|
||||
//查询是否有执行中的点位
|
||||
//找到空点位正在执行的任务
|
||||
List<SchBaseTask> taskingSchBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.and(wp -> wp
|
||||
.eq(SchBaseTask::getPoint_code1, end_point.getStruct_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, end_point.getStruct_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code1, start_point.getStruct_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, start_point.getStruct_code())
|
||||
)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
if (CollectionUtils.isNotEmpty(taskingSchBaseTaskList)) {
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.ongoing_task_at_point"));
|
||||
}
|
||||
start_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(start_point);
|
||||
end_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(end_point);
|
||||
start_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(start_point);
|
||||
end_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(end_point);
|
||||
// 创建任务
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("config_code", IOSConstant.ACS_ERROR_TASK);
|
||||
|
||||
@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import static org.nl.common.utils.ValidationUtil.assertNotBlankJson;
|
||||
|
||||
/**
|
||||
* 手持出库管理
|
||||
*
|
||||
@@ -64,6 +66,26 @@ public class PdaIosOutController {
|
||||
return new ResponseEntity<>(pdaIosOutService.callMaterialConfirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* 出库分拣提交
|
||||
*/
|
||||
@PostMapping("/outSortingSubmit")
|
||||
@Log("出库分拣提交")
|
||||
public ResponseEntity<Object> outSortingSubmit(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "out_struct_code", "out_vehicle_code","return_vehicle_code");
|
||||
return new ResponseEntity<>(pdaIosOutService.outSortingSubmit(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* 出库分拣
|
||||
*/
|
||||
@PostMapping("/getOutAndReturnNumByReturnVehicleCode")
|
||||
@Log("根据回库托盘码获取回库数量和出库数量")
|
||||
public ResponseEntity<Object> getOutAndReturnNumByReturnVehicleCode(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "return_vehicle_code");
|
||||
return new ResponseEntity<>(pdaIosOutService.getOutAndReturnNumByReturnVehicleCode(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 出库确认获取物料明细
|
||||
|
||||
@@ -23,6 +23,16 @@ public interface PdaIosOutService {
|
||||
*/
|
||||
PdaResponse getDtl(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 获取库存明细
|
||||
*
|
||||
* @param whereJson {
|
||||
* vehicle_code: 载具码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
JSONObject getOutAndReturnNumByReturnVehicleCode(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 获取物料库存明细
|
||||
@@ -58,5 +68,17 @@ public interface PdaIosOutService {
|
||||
*/
|
||||
JSONObject callMaterialConfirm(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 出库分拣提交
|
||||
*
|
||||
* @param whereJson {
|
||||
* return_vehicle_code: 载具码
|
||||
* out_vehicle_code: 点位编码,
|
||||
* out_struct_code: 楼层
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
JSONObject outSortingSubmit(JSONObject whereJson);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -6,26 +6,43 @@ import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.*;
|
||||
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
|
||||
import org.nl.wms.pda_manage.ios_manage.service.PdaIosOutService;
|
||||
import org.nl.wms.pda_manage.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.MovePointTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.IOutBillService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.service.dao.IOStorInv;
|
||||
import org.nl.wms.warehouse_manage.service.dao.IOStorInvDis;
|
||||
@@ -34,11 +51,14 @@ import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
import static org.nl.wms.warehouse_manage.enums.IOSEnum.GROUP_PLATE_STATUS;
|
||||
|
||||
@@ -62,6 +82,16 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
@Resource
|
||||
private ISectattrService iSectattrService;
|
||||
|
||||
/**
|
||||
* 仓库实物表服务
|
||||
*/
|
||||
@Autowired
|
||||
private IBsrealStorattrService iBsrealStorattrService;
|
||||
|
||||
/**
|
||||
* 出入库单主表
|
||||
*/
|
||||
@@ -73,12 +103,21 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
*/
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
|
||||
|
||||
@Resource
|
||||
private IOutBillService outBillService;
|
||||
/**
|
||||
* 载具扩展属性服务
|
||||
*/
|
||||
@Resource
|
||||
private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
|
||||
|
||||
@Resource
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService schBaseTaskService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@@ -102,6 +141,41 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.getIosDtl(whereJson));
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getOutAndReturnNumByReturnVehicleCode(JSONObject whereJson) {
|
||||
if(StringUtils.isBlank(whereJson.getString("return_vehicle_code"))){
|
||||
throw new BadRequestException("未传入载具编码");
|
||||
}
|
||||
|
||||
List<GroupPlate> groupPlates = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>()
|
||||
.eq("storagevehicle_code", whereJson.getString("return_vehicle_code"))
|
||||
.eq("status", IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
|
||||
if(CollectionUtils.isEmpty(groupPlates)){
|
||||
throw new BadRequestException("回库托盘码"+whereJson.getString("return_vehicle_code")+"不存在,请核对!");
|
||||
}
|
||||
|
||||
List<Structattr> structattrList = iStructattrService.list(new LambdaUpdateWrapper<Structattr>()
|
||||
.eq(Structattr::getSect_code,"FJOutboundSorting")
|
||||
.eq(Structattr::getIs_used, 1)
|
||||
.eq(Structattr::getStoragevehicle_code, whereJson.getString("return_vehicle_code"))
|
||||
);
|
||||
|
||||
if(CollectionUtils.isEmpty(structattrList)){
|
||||
throw new BadRequestException("回库托盘码"+whereJson.getString("return_vehicle_code")+"在分拣库区不存在,请核对!");
|
||||
}
|
||||
|
||||
Map<String,String> outMap = new HashMap<>();
|
||||
outMap.put("out_num",groupPlates.get(0).getFrozen_qty().toString());
|
||||
outMap.put("return_num",(groupPlates.get(0).getQty().subtract(groupPlates.get(0).getFrozen_qty())).toString());
|
||||
|
||||
JSONObject ret = new JSONObject();
|
||||
ret.put("status", String.valueOf(HttpStatus.HTTP_OK));
|
||||
ret.put("message","查询成功");
|
||||
ret.put("data",outMap);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public JSONObject getMaterialDtl(JSONObject whereJson) {
|
||||
@@ -205,6 +279,196 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject outSortingSubmit(JSONObject whereJson) {
|
||||
String return_vehicle_code = whereJson.getString("return_vehicle_code");
|
||||
String out_vehicle_code = whereJson.getString("out_vehicle_code");
|
||||
String out_struct_code = whereJson.getString("out_struct_code");
|
||||
|
||||
List<Structattr> structattrList = iStructattrService.list(new LambdaUpdateWrapper<Structattr>()
|
||||
.eq(Structattr::getStoragevehicle_code, return_vehicle_code)
|
||||
.eq(Structattr::getSect_code,"FJOutboundSorting"));
|
||||
if(CollectionUtils.isEmpty(structattrList)){
|
||||
throw new BadRequestException("回库点位,请核对");
|
||||
}
|
||||
Structattr structattr = structattrList.get(0);
|
||||
|
||||
|
||||
|
||||
//找到空点位正在执行的任务
|
||||
List<SchBaseTask> taskingSchBaseTaskList = schBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.and(wp -> wp
|
||||
.eq(SchBaseTask::getPoint_code1, out_struct_code)
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, out_struct_code)
|
||||
.or()
|
||||
.eq(SchBaseTask::getVehicle_code, out_vehicle_code)
|
||||
.or()
|
||||
.eq(SchBaseTask::getVehicle_code, return_vehicle_code)
|
||||
)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
if (CollectionUtils.isNotEmpty(taskingSchBaseTaskList)) {
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.ongoing_task_at_point"));
|
||||
}
|
||||
|
||||
//根据旧的托盘查找组盘表
|
||||
List<GroupPlate> groupPlates = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>()
|
||||
.eq("storagevehicle_code", whereJson.getString("return_vehicle_code"))
|
||||
.eq("status", IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
|
||||
if(CollectionUtils.isEmpty(groupPlates)){
|
||||
throw new BadRequestException("回库托盘码"+whereJson.getString("return_vehicle_code")+"不存在,请核对!");
|
||||
}
|
||||
|
||||
GroupPlate newGroupPlate = new GroupPlate();
|
||||
|
||||
//插入新的组盘表
|
||||
BeanUtils.copyProperties(groupPlates.get(0),newGroupPlate);
|
||||
newGroupPlate.setGroup_id(IdUtil.getStringId());
|
||||
newGroupPlate.setStoragevehicle_code(out_vehicle_code);
|
||||
newGroupPlate.setQty(newGroupPlate.getFrozen_qty());
|
||||
|
||||
//判断是否存在这个托盘
|
||||
List<GroupPlate> outGroupPlates = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>()
|
||||
.eq("storagevehicle_code", whereJson.getString("out_vehicle_code"))
|
||||
.eq("status", IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
|
||||
if(CollectionUtils.isNotEmpty(outGroupPlates)){
|
||||
throw new BadRequestException("出库托盘码"+whereJson.getString("out_vehicle_code")+"重复,请核对!");
|
||||
}
|
||||
iMdPbGroupplateService.save(newGroupPlate);
|
||||
|
||||
//修改旧的组盘表的数量
|
||||
GroupPlate oldGroupPlate = groupPlates.get(0);
|
||||
oldGroupPlate.setQty(oldGroupPlate.getQty().subtract(oldGroupPlate.getFrozen_qty()));
|
||||
oldGroupPlate.setFrozen_qty(new BigDecimal(0));
|
||||
iMdPbGroupplateService.updateById(oldGroupPlate);
|
||||
|
||||
//1、下发一个回去任务,通过接口查询回库点位
|
||||
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", structattr.getStruct_code());
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("config_code", IOSConstant.MOVE_POINT_CONFIG_TASK);
|
||||
jsonTask.put("point_code1", structattr.getStruct_code());
|
||||
//计算
|
||||
|
||||
// 查询所有库区
|
||||
// 查询所有库区
|
||||
List<Sectattr> allSects = iSectattrService.list(new LambdaQueryWrapper<>(Sectattr.class)
|
||||
.eq(Sectattr::getIs_delete,"0")
|
||||
.eq(Sectattr::getSect_code,"FJ01")
|
||||
.ne(Sectattr::getSect_code,"SSX")
|
||||
.ne(Sectattr::getSect_code,"FJOutboundSorting")
|
||||
.ne(Sectattr::getSect_code,"FJError")
|
||||
.ne(Sectattr::getSect_code,"FJWaitingMaterial"));
|
||||
|
||||
if (CollectionUtils.isEmpty(allSects)) {
|
||||
throw new BadRequestException(LangBehavior.language("warehouse_manage.cannot_find_available_sector"));
|
||||
}
|
||||
|
||||
// 判断库区货位占有率
|
||||
Map<Sectattr, BigDecimal> sectOccupancyRateMap = new HashMap<>();
|
||||
for (Sectattr sect : allSects) {
|
||||
BigDecimal occupancyRate = iStructattrService.calculateSectOccupancyRate(sect.getSect_code());
|
||||
sectOccupancyRateMap.put(sect, occupancyRate);
|
||||
}
|
||||
|
||||
JSONObject dis_form = new JSONObject();
|
||||
|
||||
// 选择占有率小的库区
|
||||
Optional<Map.Entry<Sectattr, BigDecimal>> minEntry = sectOccupancyRateMap.entrySet().stream()
|
||||
.min(Map.Entry.comparingByValue());
|
||||
if (minEntry.isPresent()) {
|
||||
dis_form.put("sect_id", minEntry.get().getKey().getSect_id());
|
||||
dis_form.put("stor_id", minEntry.get().getKey().getStor_id());
|
||||
dis_form.put("sect_code", minEntry.get().getKey().getSect_id());
|
||||
dis_form.put("stor_code", minEntry.get().getKey().getStor_id());
|
||||
} else {
|
||||
throw new BadRequestException(LangBehavior.language("warehouse_manage.cannot_select_suitable_sector"));
|
||||
}
|
||||
|
||||
BsrealStorattr stor = iBsrealStorattrService.findById(dis_form.getString("stor_code"));
|
||||
Sectattr sect = iSectattrService.findById(dis_form.getString("sect_code"));
|
||||
MdMeMaterialbase mdMeMaterialbase = iMdMeMaterialbaseService.getByCode(oldGroupPlate.getMaterial_id());
|
||||
List<Structattr> structattrs = iStructattrService.inBoundSectDiv(
|
||||
StrategyStructParam.builder()
|
||||
.ioType(StatusEnum.STRATEGY_TYPE.code("入库"))
|
||||
.sect_code(sect.getSect_code())
|
||||
.stor_code(stor.getStor_code())
|
||||
.material_code(mdMeMaterialbase.getMaterial_code())
|
||||
.qty(oldGroupPlate.getQty())
|
||||
.pcsn(oldGroupPlate.getPcsn())
|
||||
.build());
|
||||
Structattr struct = structattrs.get(0);
|
||||
|
||||
lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", struct.getStruct_code());
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
|
||||
jsonTask.put("point_code2", struct.getStruct_code());
|
||||
jsonTask.put("vehicle_code", oldGroupPlate.getStoragevehicle_code());
|
||||
jsonTask.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
MovePointTask movePointTask = SpringContextHolder.getBean("MovePointTask");
|
||||
String task_id = movePointTask.create(jsonTask);
|
||||
|
||||
//2、下发出库任务,需要将旧托盘
|
||||
//需要修改IOS分配表(看一下三张表是否都需要修改)、 出库区的当前托盘码,需要加锁,需要修改分配表的库区出库点位,需要更新TASKID
|
||||
//需要修改IOS分配表(看一下三张表是否都需要修改)、 需要修改分配表的库区出库点位,需要更新TASKID
|
||||
List<IOStorInvDis> disList = ioStorInvDisMapper.selectList(
|
||||
new QueryWrapper<IOStorInvDis>().lambda()
|
||||
.eq(IOStorInvDis::getStoragevehicle_code, oldGroupPlate.getStoragevehicle_code()
|
||||
)
|
||||
.eq(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("生成")
|
||||
)
|
||||
);
|
||||
|
||||
if(CollectionUtils.isEmpty(disList)){
|
||||
throw new BadRequestException("托盘编码为空");
|
||||
}
|
||||
IOStorInvDis updateDis = disList.get(0);
|
||||
|
||||
lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", out_struct_code);
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
|
||||
JSONObject task_form = new JSONObject();
|
||||
task_form.put("task_type", "STOutTask");
|
||||
task_form.put("TaskCode",CodeUtil.getNewCode("TASK_CODE"));
|
||||
task_form.put("PickingLocation", out_struct_code);
|
||||
task_form.put("PlacedLocation", updateDis.getPoint_code());
|
||||
task_form.put("floor_code",updateDis.getFloor_code());
|
||||
task_form.put("vehicle_code", out_vehicle_code);
|
||||
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
|
||||
String out_task_id = stOutTask.create(task_form);
|
||||
|
||||
Structattr outStructattr = iStructattrService.getByCode(out_struct_code);
|
||||
|
||||
updateDis.setSect_id(outStructattr.getSect_id());
|
||||
updateDis.setSect_code(outStructattr.getSect_code());
|
||||
updateDis.setSect_name(outStructattr.getSect_name());
|
||||
updateDis.setStruct_id(outStructattr.getStruct_id());
|
||||
updateDis.setStruct_code(outStructattr.getStruct_code());
|
||||
updateDis.setStruct_name(outStructattr.getStruct_name());
|
||||
updateDis.setTask_id(out_task_id);
|
||||
updateDis.setStoragevehicle_code(out_vehicle_code);
|
||||
ioStorInvDisMapper.updateById(updateDis);
|
||||
|
||||
JSONObject ret = new JSONObject();
|
||||
ret.put("status", String.valueOf(HttpStatus.HTTP_OK));
|
||||
ret.put("message","提交成功");
|
||||
ret.put("data",null);
|
||||
return ret;
|
||||
}
|
||||
|
||||
private String createOutBills(JSONObject whereJson) {
|
||||
String now = DateUtil.now();
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
|
||||
@@ -4,7 +4,9 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
@@ -39,12 +41,22 @@ public class PdaSchPointServiceImpl implements PdaSchPointService {
|
||||
public JSONObject getPoint(JSONObject whereJson) {
|
||||
// 载具号
|
||||
List<JSONObject> list = stIvtMoveinvdtlMapper.querydtl(whereJson);
|
||||
|
||||
JSONObject ret = new JSONObject();
|
||||
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
List<Structattr> structattrList = iStructattrService.list(new LambdaUpdateWrapper<Structattr>()
|
||||
.eq(Structattr::getStruct_code, whereJson.getString("struct_code")));
|
||||
if (CollectionUtils.isNotEmpty(structattrList)){
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("group_id","1");
|
||||
jsonObject.put("storagevehicle_code",structattrList.get(0).getStoragevehicle_code());
|
||||
list.add(jsonObject);
|
||||
}
|
||||
}
|
||||
ret.put("data",list);
|
||||
ret.put("status", String.valueOf(HttpStatus.HTTP_OK));
|
||||
ret.put("message","查询成功");
|
||||
ret.put("data",list);
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -107,7 +119,7 @@ public class PdaSchPointServiceImpl implements PdaSchPointService {
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.point_not_found", struct_code));
|
||||
}
|
||||
if(ObjectUtil.isEmpty(struct.getStoragevehicle_code())){
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.point_no_vehicle_need_unbind", struct_code, vehicle_code));
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.point_no_vehicle_need_unbind", struct_code, ""));
|
||||
}
|
||||
|
||||
iStructattrService.update(
|
||||
|
||||
@@ -179,6 +179,9 @@
|
||||
<if test="query.search != null and query.search != ''">
|
||||
and form_data LIKE '%${query.search}%'
|
||||
</if>
|
||||
<if test="query.vehicle_code != null and query.vehicle_code != ''">
|
||||
and vehicle_code LIKE '%${query.vehicle_code}%'
|
||||
</if>
|
||||
<if test="query.form_type != null and query.form_type != ''">
|
||||
and form_type = #{query.form_type}
|
||||
</if>
|
||||
|
||||
@@ -26,6 +26,7 @@ public class FormDataQuery extends BaseQuery<PmFormData> {
|
||||
private String[] status;
|
||||
private String start_time;
|
||||
private String end_time;
|
||||
private String vehicle_code;
|
||||
private Map<String,String> form_query;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,14 +7,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.language.LangProcess;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseRegion;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
|
||||
@@ -57,6 +57,11 @@ public class IOSConstant {
|
||||
*/
|
||||
public final static String MOVE_CONFIG_TASK = "MoveTask";
|
||||
|
||||
/**
|
||||
* 移库点位任务类编码
|
||||
*/
|
||||
public final static String MOVE_POINT_CONFIG_TASK = "MovePointTask";
|
||||
|
||||
/**
|
||||
* 余料回库任务类编码
|
||||
*/
|
||||
|
||||
@@ -12,35 +12,35 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.language.LangProcess;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
|
||||
import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto;
|
||||
import org.nl.wms.pm_manage.service.IPmFormDataService;
|
||||
import org.nl.wms.pm_manage.service.dao.PmFormData;
|
||||
import org.nl.wms.pm_manage.service.dao.mapper.PmFormDataMapper;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.MovePointTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
@@ -53,10 +53,8 @@ import org.nl.wms.warehouse_manage.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.nl.wms.warehouse_manage.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_manage.service.dto.IOStorInvDtlDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -437,14 +435,19 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
lock_map.put("inv_type", ioStorInv.getBill_type());
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
|
||||
iStructattrService.updateStatusByCode("0",lock_map);
|
||||
//更新组盘表冻结数量状态
|
||||
iMdPbGroupPlateService.update(new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getFrozen_qty, outAllocation.getFrozen_qty())
|
||||
.set(GroupPlate::getUpdate_time, now)
|
||||
.eq(GroupPlate::getStoragevehicle_code, outAllocation.getStoragevehicle_code())
|
||||
.eq(GroupPlate::getPcsn, outAllocation.getPcsn())
|
||||
.eq(GroupPlate::getMaterial_id, outAllocation.getMaterial_id())
|
||||
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
//更新库存 加冻结减可用
|
||||
List<JSONObject> updateIvtList = new ArrayList<>();
|
||||
JSONObject jsonIvt = new JSONObject();
|
||||
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_FROZEN);
|
||||
jsonIvt.put("storagevehicle_code", outAllocation.getStoragevehicle_code());
|
||||
jsonIvt.put("material_id", outAllocation.getMaterial_id());
|
||||
jsonIvt.put("pcsn",outAllocation.getPcsn());
|
||||
jsonIvt.put("qty_unit_id", dtl.getQty_unit_id());
|
||||
jsonIvt.put("qty_unit_name", dtl.getQty_unit_name());
|
||||
jsonIvt.put("change_qty", outAllocation.getFrozen_qty());
|
||||
updateIvtList.add(jsonIvt);
|
||||
iMdPbGroupPlateService.updateIvt(updateIvtList);
|
||||
|
||||
//生成分配明细
|
||||
ioStorInvDisMapper.insert(ioStorInvDis);
|
||||
allocation_canuse_qty = allocation_canuse_qty.add(outAllocation.getFrozen_qty());
|
||||
@@ -994,17 +997,61 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
task_form.put("floor_code",floor_code);
|
||||
task_form.put("vehicle_code", ioStorInvDis.getStoragevehicle_code());
|
||||
|
||||
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
|
||||
|
||||
String task_id = stOutTask.create(task_form);
|
||||
iMdPbGroupPlateService.update(new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.set(GroupPlate::getUpdate_time, DateUtil.now())
|
||||
.eq(GroupPlate::getStoragevehicle_code, ioStorInvDis.getStoragevehicle_code()));
|
||||
|
||||
//分配明细表更新任务相关数据
|
||||
//通过托盘编码查询,如果冻结数<总数,则表明需要去分拣区
|
||||
List<GroupPlate> groupPlates = iMdPbGroupPlateService.list(new QueryWrapper<GroupPlate>()
|
||||
.eq("storagevehicle_code", ioStorInvDis.getStoragevehicle_code())
|
||||
.eq("status",IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
if(CollectionUtils.isEmpty(groupPlates)){
|
||||
throw new BadRequestException("找不到托盘"+ioStorInvDis.getStoragevehicle_code());
|
||||
}
|
||||
if(groupPlates.get(0).getQty().compareTo(ioStorInvDis.getPlan_qty())>0) {
|
||||
ioStorInvDis.setIs_issued(BaseDataEnum.IS_YES_NOT.code("是"));
|
||||
}
|
||||
|
||||
String task_id ="";
|
||||
if(BaseDataEnum.IS_YES_NOT.code("否").equals(ioStorInvDis.getIs_issued())) {
|
||||
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
|
||||
task_id = stOutTask.create(task_form);
|
||||
}
|
||||
else { //如果出库数量和托盘数量不相同,则移库到分拣区
|
||||
MovePointTask movePointTask = SpringContextHolder.getBean("MovePointTask");
|
||||
task_form.put("config_code", IOSConstant.MOVE_POINT_CONFIG_TASK);
|
||||
task_form.put("point_code1",ioStorInvDis.getStruct_code());
|
||||
//通过方法计算
|
||||
//todo
|
||||
List<Structattr> structattrList = iStructattrService.list(new LambdaUpdateWrapper<Structattr>()
|
||||
.eq(Structattr::getSect_code,"FJOutboundSorting")
|
||||
.eq(Structattr::getIs_used, 1)
|
||||
.isNull(Structattr::getStoragevehicle_code)
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.orderByDesc(Structattr::getUpdate_time));
|
||||
if(CollectionUtils.isEmpty(structattrList)){
|
||||
throw new BadRequestException("出库分拣区库位不足,请先清理后再执行");
|
||||
}
|
||||
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", structattrList.get(0).getStruct_code());
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
|
||||
task_form.put("point_code2",structattrList.get(0).getStruct_code());
|
||||
task_form.put("vehicle_code", ioStorInvDis.getStoragevehicle_code());
|
||||
task_form.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
task_id = movePointTask.create(task_form);
|
||||
}
|
||||
IOStorInvDis dis = new IOStorInvDis();
|
||||
dis.setIostorinvdis_id(ioStorInvDis.getIostorinvdis_id());
|
||||
//分配明细表更新任务相关数据
|
||||
dis.setPoint_code(point_code);
|
||||
dis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("生成"));
|
||||
dis.setTask_id(task_id);
|
||||
dis.setIs_issued(BaseDataEnum.IS_YES_NOT.code("是"));
|
||||
dis.setPoint_code(point_code);
|
||||
dis.setFloor_code(floor_code);
|
||||
ioStorInvDisMapper.updateById(dis);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.config.language.LangProcess;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
|
||||
@@ -872,7 +871,11 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
// 查询所有库区
|
||||
List<Sectattr> allSects = iSectattrService.list(new LambdaQueryWrapper<>(Sectattr.class)
|
||||
.eq(Sectattr::getIs_delete,"0")
|
||||
.ne(Sectattr::getSect_code,"SSX"));
|
||||
.eq(Sectattr::getSect_code,"FJ01")
|
||||
.ne(Sectattr::getSect_code,"SSX")
|
||||
.ne(Sectattr::getSect_code,"FJOutboundSorting")
|
||||
.ne(Sectattr::getSect_code,"FJError")
|
||||
.ne(Sectattr::getSect_code,"FJWaitingMaterial"));
|
||||
if (CollectionUtils.isEmpty(allSects)) {
|
||||
throw new BadRequestException(LangBehavior.language("warehouse_manage.cannot_find_available_sector"));
|
||||
}
|
||||
|
||||
@@ -928,7 +928,33 @@ var config = {
|
||||
"task_code": "任务号"
|
||||
},
|
||||
"outbill": {
|
||||
"outbound_weight":"出库重量",
|
||||
"edit_out_bill":"出库单编辑",
|
||||
"out_detail":"出库明细",
|
||||
"quantity":"数量",
|
||||
"material_list":"用料清单物料",
|
||||
"manual_add_material":"手工添加物料",
|
||||
"divide_allocation":"出库分配",
|
||||
"outbound_details":"出库明细",
|
||||
"allocation_area":"分配库区",
|
||||
"allocation_all":"全部分配",
|
||||
"cancel_all":"全部取消",
|
||||
"auto_allocation":"自动分配",
|
||||
"auto_cancel":"自动取消",
|
||||
"manual_allocation":"手工分配",
|
||||
"set_all":"一键设置",
|
||||
"assigned_qty":"已分配重量",
|
||||
"unassigned_qty":"未分配重量",
|
||||
"allocation_details":"分配明细",
|
||||
"to_be_allocated":"待分配",
|
||||
"allocated":"已分配",
|
||||
"outbound_point":"出库点",
|
||||
"target_floor":"目的楼层",
|
||||
"vehicle_material_details":"载具物料明细",
|
||||
"allocation_success":"分配成功",
|
||||
"please_select_point":"请先选择站点",
|
||||
"please_select_floor":"请先选择楼层",
|
||||
"set_success":"设置成功",
|
||||
"warehouse_area":"库区",
|
||||
"auto_allocate_location":"自动分配货位",
|
||||
"allocate_location":"分配货位",
|
||||
@@ -1053,6 +1079,14 @@ var config = {
|
||||
"operation": "操作"
|
||||
},
|
||||
"common": {
|
||||
"Close":"关闭",
|
||||
"material_code":"物料编码",
|
||||
"material_name":"物料名称",
|
||||
"vehicle_code":"托盘号",
|
||||
"position_code":"仓位编码",
|
||||
"position_name":"仓位名称",
|
||||
"storage_time":"入库时间",
|
||||
"task_code":"任务号",
|
||||
"status": "状态",
|
||||
"unit":"单位",
|
||||
"all":"全部",
|
||||
|
||||
Reference in New Issue
Block a user