Commit d878bfe6 LN

增加转储出库代码

1 个父辈 692aa07b
正在显示 20 个修改的文件 包含 748 行增加62 行删除
......@@ -8,6 +8,7 @@ import com.neotel.smfcore.core.message.service.manager.IMessageManager;
import com.neotel.smfcore.core.message.service.po.Message;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import com.neotel.smfcore.core.order.util.OrderFileWatch;
import com.neotel.smfcore.core.outList.util.OutListCache;
import com.neotel.smfcore.hikvision.bean.api.ResponseParam;
import com.neotel.smfcore.hikvision.util.JsonUtil;
import com.neotel.smfcore.security.service.manager.IMenuManager;
......@@ -52,6 +53,8 @@ public class DataInitManager {
@Autowired
private InListCache inListCache;
@Autowired
private OutListCache outListCache;
@Autowired
private IMessageManager messageManager;
/**
* 当前版本
......@@ -116,6 +119,8 @@ public class DataInitManager {
inListCache.loadMap();
outListCache.loadMap();
Message message=Message.newMsg(MessageType.INFO ,"server", "", "", "smfcore.messages.serverStart","服务器启动",null);
messageManager.save(message);
} catch (Exception exception) {
......
......@@ -128,8 +128,10 @@ public class LiteOrderCache implements ITaskListener {
try {
//只有任务完成或取消时才处理,任务未完成直接返回
if (task.isFinished() || task.isCancel()) {
finishedOrderTask(task);
//判断是否是工单任务
if(OP.CHECKOUT == task.getType()&&task.getOutType()==10){
finishedOrderTask(task);
}
}
} catch (Exception e) {
log.error("更新工单状态出错", e);
......@@ -163,41 +165,39 @@ public class LiteOrderCache implements ITaskListener {
* 更新工单状态信息
*/
private synchronized void finishedOrderTask(DataLog task) throws ValidateException {
if (OP.CHECKOUT == task.getType()) {
//更新工单状态
String orderNo = task.getSourceName();
if (!Strings.isNullOrEmpty(orderNo)) {
LiteOrder order = liteOrderMap.get(orderNo);
if (order == null) {
log.info("缓存中未找到[" + orderNo + "],从数据库中重新加载");
order = liteOrderManager.findByOrderNo(orderNo);
if(order != null){
List<LiteOrderItem> items = liteOrderItemManager.findOrderItems(orderNo);
order.setOrderItems(items);
}
}
//更新工单状态
String orderNo = task.getSourceName();
if (!Strings.isNullOrEmpty(orderNo)) {
LiteOrder order = liteOrderMap.get(orderNo);
if (order == null) {
log.info("缓存中未找到[" + orderNo + "],从数据库中重新加载");
order = liteOrderManager.findByOrderNo(orderNo);
if (order != null) {
//任务是取消的,需要将总待出库数量-1
if (task.isCancel()) {
order.setTaskReelCount(order.getTaskReelCount() - 1);
order.setTotalTaskReelCount(order.getTotalTaskReelCount()-1);
log.info("工单[" + orderNo + "]的任务" + task.getPartNumber() + "[" + task.getBarcode() + "]已取消,任务数-1=" + order.getFinishedReelCount() + "/" + order.getTaskReelCount());
}
else if (task.isFinished()) {
order.setFinishedReelCount(order.getFinishedReelCount() + 1);
order.setTotalFinishedReelCount(order.getTotalFinishedReelCount()+1);
String orderItemId = task.getSubSourceId();
List<LiteOrderItem> items = new ArrayList<>();
for (LiteOrderItem liteOrderItem : order.getOrderItems()) {
if (liteOrderItem.getId().equals(orderItemId)) {
log.info("工单[" + orderNo + "]的任务" + task.getPartNumber() + "[" + task.getBarcode() + "]出库完成,已完成数量+1=" + order.getFinishedReelCount() + "/" + order.getTaskReelCount());
//更新对应条目的已出库数量和出库盘数
liteOrderItem.setOutNum(liteOrderItem.getOutNum() + task.getNum());
liteOrderItem.setOutReelCount(liteOrderItem.getOutReelCount() + 1);
liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum()+task.getNum());
liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount()+1);
liteOrderItem = liteOrderItemManager.save(liteOrderItem);
List<LiteOrderItem> items = liteOrderItemManager.findOrderItems(orderNo);
order.setOrderItems(items);
}
}
if (order != null) {
//任务是取消的,需要将总待出库数量-1
if (task.isCancel()) {
order.setTaskReelCount(order.getTaskReelCount() - 1);
order.setTotalTaskReelCount(order.getTotalTaskReelCount() - 1);
log.info("工单[" + orderNo + "]的任务" + task.getPartNumber() + "[" + task.getBarcode() + "]已取消,任务数-1=" + order.getFinishedReelCount() + "/" + order.getTaskReelCount());
} else if (task.isFinished()) {
order.setFinishedReelCount(order.getFinishedReelCount() + 1);
order.setTotalFinishedReelCount(order.getTotalFinishedReelCount() + 1);
String orderItemId = task.getSubSourceId();
List<LiteOrderItem> items = new ArrayList<>();
for (LiteOrderItem liteOrderItem : order.getOrderItems()) {
if (liteOrderItem.getId().equals(orderItemId)) {
log.info("工单[" + orderNo + "]的任务" + task.getPartNumber() + "[" + task.getBarcode() + "]出库完成,已完成数量+1=" + order.getFinishedReelCount() + "/" + order.getTaskReelCount());
//更新对应条目的已出库数量和出库盘数
liteOrderItem.setOutNum(liteOrderItem.getOutNum() + task.getNum());
liteOrderItem.setOutReelCount(liteOrderItem.getOutReelCount() + 1);
liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum() + task.getNum());
liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount() + 1);
liteOrderItem = liteOrderItemManager.save(liteOrderItem);
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) {
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
......@@ -213,40 +213,40 @@ public class LiteOrderCache implements ITaskListener {
// e.printStackTrace();
// }
// }
}
items.add(liteOrderItem);
}
order.setOrderItems(items);
if (!order.isClosed()) {
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean closed = true;
for (LiteOrderItem liteOrderItem : order.getOrderItems()) {
if (!liteOrderItem.isOutFinished()) {
closed = false;
break;
}
}
if(closed){
order.setClosed(closed);
//工单出库完成,调用7.11订单发料完成通知接口
boolean result=HikApi.orderEndApi(order.getOperateUser(),order.getJobNo());
items.add(liteOrderItem);
}
order.setOrderItems(items);
if (!order.isClosed()) {
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean closed = true;
for (LiteOrderItem liteOrderItem : order.getOrderItems()) {
if (!liteOrderItem.isOutFinished()) {
closed = false;
break;
}
}
} else {
log.error("工单[" + orderNo + "]的任务[" + task.getBarcode() + "]完成时,状态为:" + task.getStatus());
}
if (order.getFinishedReelCount() >= order.getTaskReelCount()) {
log.info("工单[" + orderNo + "]的出库任务已完成,共出库:" + order.getFinishedReelCount() + " 盘");
order.finishedTasks();
if (closed) {
order.setClosed(closed);
//工单出库完成,调用7.11订单发料完成通知接口
boolean result = HikApi.orderEndApi(order.getOperateUser(), order.getJobNo());
}
}
liteOrderManager.save(order);
liteOrderMap.put(orderNo, order);
} else {
log.error("完成任务时,未找到工单[" + orderNo + "]信息");
log.error("工单[" + orderNo + "]的任务[" + task.getBarcode() + "]完成时,状态为:" + task.getStatus());
}
if (order.getFinishedReelCount() >= order.getTaskReelCount()) {
log.info("工单[" + orderNo + "]的出库任务已完成,共出库:" + order.getFinishedReelCount() + " 盘");
order.finishedTasks();
}
liteOrderManager.save(order);
liteOrderMap.put(orderNo, order);
} else {
log.error("完成任务时,未找到工单[" + orderNo + "]信息");
}
}
}
public ORDER_COLOR getNextColor() {
......
package com.neotel.smfcore.core.outList.bean.dto;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class OutListDto implements Serializable {
@ApiModelProperty(value = "ID")
private String id;
@ApiModelProperty(value = "单据类型(0 线边仓间转储)")
private Integer docType=0;
@ApiModelProperty(value = "出库单名称")
private String name;
@ApiModelProperty(value = "转出库位")
private String outLgort="";
@ApiModelProperty(value = "转入库位")
private String inLgort="";
@ApiModelProperty(value = "基地编号")
private String baseCode="";
@ApiModelProperty(value = "订单状态")
private int status = LITEORDER_STATUS.NEW;
@ApiModelProperty(value = "当前任务盘数")
private int taskReelCount = 0;
@ApiModelProperty(value = "当前任务已完成盘数")
private int finishedReelCount = 0;
@ApiModelProperty(value = "累计任务盘数")
private int totalTaskReelCount = 0;
@ApiModelProperty(value = "累计任务已完成盘数")
private int totalFinishedReelCount = 0;
@ApiModelProperty(value = "出库单详情")
private List<OutListItemDto> outListItems;
}
package com.neotel.smfcore.core.outList.bean.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class OutListItemDto implements Serializable {
@ApiModelProperty(value = "ID")
private String id;
@ApiModelProperty(value = "出库单名称")
private String name;
@ApiModelProperty(value = "转出库位")
private String outLgort="";
@ApiModelProperty(value = "转入库位")
private String inLgort="";
@ApiModelProperty(value = "物料号")
private String materialNo;
@ApiModelProperty(value = "基地编号")
private String baseCode="";
@ApiModelProperty(value = "转出数量")
private Integer dumpQty;
@ApiModelProperty(value = "总需求料盘数")
private int needReelCount = 0;
@ApiModelProperty(value = "当前任务已出数量")
private int outNum = 0;
@ApiModelProperty(value = "当前任务已出盘数")
private int outReelCount = 0;
@ApiModelProperty(value = "累计已出数量")
private int totalOutNum = 0;
@ApiModelProperty(value = "累计已出盘数")
private int totalOutReelCount = 0;
}
package com.neotel.smfcore.core.outList.bean.mapstruct;
import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.core.outList.bean.dto.OutListItemDto;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface OutListItemMapper extends BaseMapper<OutListItemDto, OutListItem> {
}
package com.neotel.smfcore.core.outList.bean.mapstruct;
import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.core.outList.bean.dto.OutListDto;
import com.neotel.smfcore.core.outList.service.po.OutList;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface OutListMapper extends BaseMapper<OutListDto, OutList> {
}
package com.neotel.smfcore.core.outList.bean.query;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import lombok.Data;
import java.util.Date;
@Data
public class OutListQueryCondition {
@QueryCondition(blurry = "name")
private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN)
private BetweenData<Date> createDate;
@QueryCondition
private Integer status;
}
package com.neotel.smfcore.core.outList.rest;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.outList.service.po.OutList;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
import com.neotel.smfcore.core.outList.bean.dto.OutListDto;
import com.neotel.smfcore.core.outList.bean.mapstruct.OutListItemMapper;
import com.neotel.smfcore.core.outList.bean.mapstruct.OutListMapper;
import com.neotel.smfcore.core.outList.bean.query.OutListQueryCondition;
import com.neotel.smfcore.core.outList.service.manager.IOutListItemManager;
import com.neotel.smfcore.core.outList.service.manager.IOutListManager;
import com.neotel.smfcore.core.outList.util.OutListCache;
import com.neotel.smfcore.hikvision.HikApi;
import com.neotel.smfcore.hikvision.bean.ReservedOrderItem;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
@Api(tags = "物料管理:转储出库单")
@RestController
@RequestMapping("/api/outList")
@RequiredArgsConstructor
public class OutListController {
@Autowired
private IOutListManager outListManager;
@Autowired
private OutListMapper outListMapper;
@Autowired
private IOutListItemManager outListItemManager;
@Autowired
private OutListItemMapper outListItemMapper;
@Autowired
private OutListCache outListCache;
@ApiOperation("查询出库单列表")
@GetMapping
@PreAuthorize("@el.check('outList')")
public PageData<OutListDto> query(OutListQueryCondition criteria, Pageable pageable) {
Query query = QueryHelp.getQuery(criteria);
PageData<OutList> outList = outListManager.findByPage(query, pageable);
PageData<OutListDto> resultList=outListMapper.toDto(outList);
return resultList;
}
@ApiOperation("查看出库单详情")
@GetMapping("/detial")
@PreAuthorize("@el.check('outList')")
public OutListDto detial(@RequestParam(required = false) String id, @RequestParam(required = false) String name) {
if (!ObjectUtils.isEmpty(id)) {
OutList outList = outListManager.get(id);
if (outList != null) {
OutListDto dto = outListMapper.toDto(outList);
dto.setOutListItems(outListItemMapper.toDto(outList.getOutListItems()));
return dto;
}
} else if (!ObjectUtils.isEmpty(name)) {
OutList outList = outListCache.getOutList(name);
if (outList == null) {
outListManager.findByName(name);
}
if (outList != null) {
OutListDto dto = outListMapper.toDto(outList);
dto.setOutListItems(outListItemMapper.toDto(outList.getOutListItems()));
return dto;
}
}
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"id"});
}
@ApiOperation("更新指定的出库单")
@PostMapping(value = "/updateOutList")
@PreAuthorize("@el.check('outList')")
public ResultBean updateOutList(@RequestBody Map<String,String> params ) {
String name = params.get("docName");
Integer type = Convert.toInt(params.get("docType"));
//先从已存在的出库单查询是否存在
OutList outList = outListCache.getOutList(name);
if (outList == null) {
//从接口获取出库单
List<ReservedOrderItem> outOrderLists = HikApi.reservedOrderApi(SecurityUtils.getCurrentUsername(), name, type);
if (outOrderLists == null || outOrderLists.size() <= 0) {
return ResultBean.newErrorResult(1, "smfcore.inlist.notFound", "未找到单据号[{0}]", new String[]{name});
}
outList = new OutList(name, LITEORDER_STATUS.NEW, type, new ArrayList<>());
//新建出库单
List<OutListItem> outListItems = new ArrayList<>();
for (ReservedOrderItem obj :
outOrderLists) {
OutListItem item = obj.creatOutListItem();
item.setName(name);
outListItems.add(item);
outList.setBaseCode(obj.getBaseCode());
outList.setInLgort(obj.getInLgort());
outList.setOutLgort(obj.getOutLgort());
}
outList.setOutListItems(outListItems);
log.info("获取到转储单,新增加出库单:" + outList.getName() + ",共" + outListItems.size() + "条工单详情");
outList = outListManager.createWithItems(outList);
outListCache.addOutListToMap(outList);
return ResultBean.newOkResult(name);
} else {
//出库单已存在,直接返回OK
return ResultBean.newOkResult(name);
}
}
@ApiOperation("出库操作")
@PostMapping(value = "/out")
@PreAuthorize("@el.check('outList')")
public ResultBean checkOut(@RequestBody Map<String, String> mapValues) {
String name = mapValues.get("name");
if (name == null) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
OutList outList = outListCache.getOutList(name);
if (outList == null) {
outListManager.findByName(name);
}
if (outList == null) {
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"name", name});
}
String result = outListCache.checkOut(SecurityUtils.getCurrentUsername(), outList.getName());
if (ObjectUtil.isEmpty(result)) {
return ResultBean.newOkResult(result);
} else {
return ResultBean.newErrorResult(-1, result, result);
}
}
}
package com.neotel.smfcore.core.outList.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
public interface IOutListDao extends IBaseDao {
}
package com.neotel.smfcore.core.outList.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
public interface IOutListItemDao extends IBaseDao {
}
package com.neotel.smfcore.core.outList.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.core.outList.service.dao.IOutListDao;
import com.neotel.smfcore.core.outList.service.po.OutList;
import org.springframework.stereotype.Service;
@Service
public class OutListDaoImpl extends AbstractBaseDao implements IOutListDao {
@Override
public Class getEntityClass() {
return OutList.class;
}
}
package com.neotel.smfcore.core.outList.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.core.outList.service.dao.IOutListItemDao;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
import org.springframework.stereotype.Service;
@Service
public class OutListItemDaoImpl extends AbstractBaseDao implements IOutListItemDao {
@Override
public Class getEntityClass() {
return OutListItem.class;
}
}
package com.neotel.smfcore.core.outList.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
import java.util.List;
public interface IOutListItemManager extends IBaseManager<OutListItem> {
List<OutListItem> findListItems(String name);
}
package com.neotel.smfcore.core.outList.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.outList.service.po.OutList;
public interface IOutListManager extends IBaseManager<OutList> {
OutList findByName(String name);
OutList createWithItems(OutList outList);
}
package com.neotel.smfcore.core.outList.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.outList.service.dao.IOutListItemDao;
import com.neotel.smfcore.core.outList.service.manager.IOutListItemManager;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OutListItemManagerImpl implements IOutListItemManager {
@Autowired
private IOutListItemDao outListItemDao;
@Override
public OutListItem get(String id) {
return outListItemDao.findOneById(id);
}
@Override
public OutListItem save(OutListItem object) throws ValidateException {
return outListItemDao.save(object);
}
@Override
public void delete(OutListItem object) throws ValidateException {
outListItemDao.removeOneById(object.getId());
}
@Override
public PageData<OutListItem> findByPage(Query query, Pageable pageable) {
int totalCount = outListItemDao.countByQuery(query);
List<OutListItem> list = outListItemDao.findByQuery(query, pageable);
return new PageData<OutListItem>(list,totalCount);
}
@Override
public List<OutListItem> findByQuery(Query query) {
return outListItemDao.findByQuery(query);
}
@Override
public List<OutListItem> findListItems(String name) {
Query query=new Query(Criteria.where("name").is(name));
return findByQuery(query);
}
}
package com.neotel.smfcore.core.outList.service.manager.impl;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.outList.service.dao.IOutListDao;
import com.neotel.smfcore.core.outList.service.manager.IOutListItemManager;
import com.neotel.smfcore.core.outList.service.manager.IOutListManager;
import com.neotel.smfcore.core.outList.service.po.OutList;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OutListManagerImpl implements IOutListManager {
@Autowired
private IOutListDao outListDao;
@Autowired
private IOutListItemManager outListItemManager;
@Override
public OutList get(String id) {
return outListDao.findOneById(id);
}
@Override
public OutList save(OutList object) throws ValidateException {
return outListDao.save(object);
}
@Override
public void delete(OutList object) throws ValidateException {
outListDao.removeOneById(object.getId());
}
@Override
public PageData<OutList> findByPage(Query query, Pageable pageable) {
int totalCount = outListDao.countByQuery(query);
List<OutList> list = outListDao.findByQuery(query, pageable);
return new PageData<OutList>(list,totalCount);
}
@Override
public List<OutList> findByQuery(Query query) {
return outListDao.findByQuery(query);
}
@Override
public OutList findByName(String name) {
Query query=new Query(Criteria.where("name").is(name));
OutList list= outListDao.findOne(query);
if(list!=null ){
List<OutListItem> items=outListItemManager.findListItems(list.getName());
list.setOutListItems(items);
}
return list;
}
@Override
public OutList createWithItems(OutList outList) {
List<OutListItem> items = Lists.newArrayList();
for (OutListItem outListItem : outList.getOutListItems()) {
outListItem.setName(outList.getName());
outListItem = outListItemManager.save(outListItem);
items.add(outListItem);
}
outList = save(outList);
outList.setOutListItems(items);
return outList;
}
}
package com.neotel.smfcore.core.outList.service.po;
import com.neotel.smfcore.common.base.BasePo;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.List;
@Data
@Document
@NoArgsConstructor
@AllArgsConstructor
public class OutList extends BasePo implements Serializable {
public OutList(String name, int status, int type, List<OutListItem> outListItems) {
this.name = name;
this.status = status;
this.docType = type;
this.outListItems = outListItems;
}
/**
* 出库单名称
*/
private String name;
/**
* 转出库位
*/
private String outLgort="";
/**
* 转入库位
*/
private String inLgort="";
/**
*基地编号
*/
private String baseCode="";
/**
* 当前任务盘数
*/
private int taskReelCount = 0;
/**
* 当前任务已完成盘数
*/
private int finishedReelCount = 0;
/**
* 累计任务盘数
*/
private int totalTaskReelCount = 0;
/**
* 累计任务已完成盘数
*/
private int totalFinishedReelCount = 0;
/**
* 订单状态
*/
private int status = LITEORDER_STATUS.NEW;
/**
* 单据类型(0 线边仓间转储)
*/
private Integer docType = 0;
/**
* 出库状态, 2表示已完成
*/
private boolean closed = false;
private String operateUser = "";
/**
* 出库单详情
*/
private List<OutListItem> outListItems;
/**
* 是否是未执行过的工单
*/
public boolean isNew() {
return status == LITEORDER_STATUS.NEW;
}
/**
* 是否是缺料工单
*/
public boolean isShortage() {
return status == LITEORDER_STATUS.SHORTAGE;
}
/**
* 是否是执行中的工单
*/
public boolean isExecuting() {
return status == LITEORDER_STATUS.EXECUTING;
}
/**
* 结束当前的任务
*/
public void finishedTasks() {
if (isExecuting()) {
setClosed(true);
}
}
}
package com.neotel.smfcore.core.outList.service.po;
import com.neotel.smfcore.common.base.BasePo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
@Data
@Document
@NoArgsConstructor
@AllArgsConstructor
public class OutListItem extends BasePo implements Serializable {
public OutListItem (String name,String pn,Integer num){
this.name=name;
this.materialNo=pn;
this.dumpQty=num;
this.dumpQty=num;
}
/**
* 出库单名称
*/
private String name;
/**
* 转出库位
*/
private String outLgort="";
/**
* 转入库位
*/
private String inLgort="";
/**
* 物料号
*/
private String materialNo;
/**
*基地编号
*/
private String baseCode="";
/**
*转出数量
*/
private Integer dumpQty;
/**
* 总需求料盘数
*/
private int needReelCount = 0;
/**
* 当前任务已出数量
*/
private int outNum = 0;
/**
* 当前任务已出盘数
*/
private int outReelCount = 0;
/**
* 累计已出数量
*/
private int totalOutNum = 0;
/**
* 累计已出盘数
*/
private int totalOutReelCount = 0;
public boolean isOutFinished() {
return outNum - dumpQty >=0;
}
}
......@@ -131,6 +131,9 @@ public class TaskService {
DataLog task = new DataLog(storage, pos.getBarcode(), pos);
task.setType(OP.CHECKOUT);
if(pos.getBarcode().isLockMsl()){
task.setOutType(2);//湿敏物料出库
}
task.setPutInDate(pos.getBarcode().getPutInDate());
task.setStatus(OP_STATUS.WAIT.name());
task.setSingleOut(isSingleOut);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!