Commit e2a19195 sunke

线边仓间入库类型修正

出入库记录只记录补料单号
1 个父辈 cbfa410d
......@@ -456,7 +456,7 @@ public class LiteOrderCache implements ITaskListener {
String pn = orderItem.getMaterialNo();
//需求数量
int needNum = orderItem.getQty() + orderItem.getIncrement()-orderItem.getOutNum();
int needNum = orderItem.getQty() + orderItem.getIncrement()-orderItem.getTotalOutNum();
if (needNum <= 0) {
continue;
}
......@@ -514,7 +514,7 @@ public class LiteOrderCache implements ITaskListener {
if(component.getMinStoreNum()>0&& posList.size() <=component.getMinStoreNum()){
needJieliao=true;
}
log.info("物料["+pn+"]贵重["+isGuizhong+"]可用库存数量:" + posList.size() + " 截料设置数量:" + component.getMinStoreNum() + " 是否需要截:" + needJieliao);
log.info("物料["+pn+"]贵重["+isGuizhong+"]可用库存数量:" + posList.size() + " 截料设置数量:" + component.getMinStoreNum() + " 是否需要截:" + needJieliao);
}
if(isGuizhong || needJieliao){
......@@ -779,7 +779,7 @@ public class LiteOrderCache implements ITaskListener {
if(outPos == null){
break;
}else{
log.info("挑选批次["+outPos.getBarcode().getBatch()+"]的散盘物料:" + outPos.getBarcode().getBarcode() + " 数量:" + outPos.getBarcode().getAmount());
log.info("挑选批次["+outPos.getBarcode().getBatch()+"]的散盘物料:" + outPos.getBarcode().getBarcode() + " 数量:" + outPos.getBarcode().getAmount());
outPosList.add(outPos);
excludePosNameList.add(outPos.getPosName());
targetNum = targetNum - outPos.getBarcode().getAmount();
......@@ -795,7 +795,7 @@ public class LiteOrderCache implements ITaskListener {
if(outPos == null){
break;
}else{
log.info("挑选批次["+outPos.getBarcode().getBatch()+"]的散盘物料:" + outPos.getBarcode().getBarcode() + " 数量:" + outPos.getBarcode().getAmount());
log.info("挑选批次["+outPos.getBarcode().getBatch()+"]的散盘物料:" + outPos.getBarcode().getBarcode() + " 数量:" + outPos.getBarcode().getAmount());
outPosList.add(outPos);
excludePosNameList.add(outPos.getPosName());
targetNum = targetNum - outPos.getBarcode().getAmount();
......
......@@ -116,7 +116,7 @@ public class OrderPnCache {
continue;
}
String pn = item.getMaterialNo();
int needNum = item.getQty() - item.getOutNum();
int needNum = item.getQty() - item.getTotalOutNum();
if (needNum > 0) {
pnList.add(pn);
}
......@@ -156,7 +156,7 @@ public class OrderPnCache {
}
if(item.getMaterialNo().equals(pn)){
int orderNeedNum = item.getQty() - item.getOutNum();
int orderNeedNum = item.getQty() - item.getTotalOutNum();
allNeedNum+=orderNeedNum;
if(leftNum>=orderNeedNum){
leftNum=leftNum-orderNeedNum;
......
......@@ -43,9 +43,19 @@ public class OrderItemDto {
@ApiModelProperty("已出数量")
private int outNum = 0;
/**
* 累计已出数量,已完成
*/
private int totalOutNum = 0;
@ApiModelProperty("已出盘数")
private int outReelCount = 0;
/**
* 累计已出盘数,已完成
*/
private int totalOutReelCount = 0;
@ApiModelProperty("订单信息")
private String orderNo = "";
......
......@@ -90,13 +90,13 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
* 出库是否满足要求,已出库数量大于需求数量
*/
public boolean isOutFinished(){
return outNum - qty >=0;
return totalOutNum - qty >=0;
}
@Override
public int compareTo(LiteOrderItem o) {
if(this.getOutNum()!=o.getOutNum()){
return this.outNum-o.getOutNum();
if(this.getTotalOutNum()!=o.getTotalOutNum()){
return this.totalOutNum-o.getTotalOutNum();
}
return this.getId().compareTo(o.getId());
}
......
......@@ -6,23 +6,25 @@ import com.google.common.collect.Lists;
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.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.outList.bean.dto.OutListItemDto;
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.dto.OutListItemDto;
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.service.po.OutList;
import com.neotel.smfcore.core.outList.service.po.OutListItem;
import com.neotel.smfcore.core.outList.util.OutListCache;
import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto;
import com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.hikvision.HikApi;
import com.neotel.smfcore.hikvision.bean.ReservedOrderItem;
import com.neotel.smfcore.hikvision.bean.result.ApiResult;
......@@ -43,7 +45,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
......@@ -68,6 +69,12 @@ public class OutListController {
@Autowired
private OutListCache outListCache;
@Autowired
private TaskService taskService;
@Autowired
private TaskMapper taskMapper;
@ApiOperation("查询出库单列表")
@GetMapping
@PreAuthorize("@el.check('outList')")
......@@ -81,54 +88,11 @@ public class OutListController {
}
}
PageData<OutList> outList = outListManager.findByPage(query, pageable);
PageData<OutListDto> resultList=outListMapper.toDto(outList);
// if(outList.getTotalElements()<=0){
// addTestData();
// }
PageData<OutListDto> resultList = outListMapper.toDto(outList);
return resultList;
}
// private void addTestData(){
// for (int i=1;i<=5;i++){
// String name="test"+i;
// int type=0;
// //从接口获取出库单
// List<ReservedOrderItem> outOrderLists =new ArrayList<>();
// for (int j=0;j<=5;j++
// ) {
// ReservedOrderItem item=new ReservedOrderItem();
// item.setDocNo(name);
// item.setBaseCode("8001");
// item.setDumpQty(1000);
// item.setInLgort("M9143");
// item.setOutLgort("M9142");
// item.setMaterialNo("PN"+j);
// outOrderLists.add(item);
// }
//
// OutList 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);
// }
//
// }
@ApiOperation("查看出库单详情")
@GetMapping("/detial")
@PreAuthorize("@el.check('outList')")
......@@ -175,7 +139,7 @@ public class OutListController {
dto.setOutListItems(outListItemMapper.toDto(outList.getOutListItems()));
}
}
if(dto != null){
if (dto != null) {
//materialNo,baseCode,dumpQty,needReelCount,outNum,outReelCount,totalOutNum,totalOutReelCount
List<List<String>> headerList = new ArrayList<>();
headerList.add(Lists.newArrayList("出库单名称"));
......@@ -201,7 +165,7 @@ public class OutListController {
data.add(item.getTotalOutReelCount());
dataList.add(data);
}
FileUtil.downloadExcel(headerList,dataList, response);
FileUtil.downloadExcel(headerList, dataList, response);
return;
}
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"id"});
......@@ -211,12 +175,12 @@ public class OutListController {
@ApiOperation("更新指定的出库单")
@PostMapping(value = "/updateOutList")
@PreAuthorize("@el.check('outList')")
public ResultBean updateOutList(@RequestBody Map<String,String> params ) {
public ResultBean updateOutList(@RequestBody Map<String, String> params) {
String name = params.get("docName");
Integer type = Convert.toInt(params.get("docType"));
//先从已存在的出库单查询是否存在
if(Strings.isBlank(name)){
if (Strings.isBlank(name)) {
return ResultBean.newErrorResult(1, "smfcore.empty", "出库单号不能为空");
}
......@@ -227,10 +191,10 @@ public class OutListController {
if (apiResult.getCode() != 0) {
return ResultBean.newErrorResult(1, "smfcore.apiError", "错误码{0}:{1}", new String[]{apiResult.getCode() + "", apiResult.getMsg()});
}
if (apiResult.getData() == null ) {
if (apiResult.getData() == null) {
return ResultBean.newErrorResult(1, "smfcore.inlist.notFound", "未找到单据号[{0}]", new String[]{name});
}
List<ReservedOrderItem> outOrderLists = (List<ReservedOrderItem>)apiResult.getData();
List<ReservedOrderItem> outOrderLists = (List<ReservedOrderItem>) apiResult.getData();
if (outOrderLists == null || outOrderLists.size() <= 0) {
return ResultBean.newErrorResult(1, "smfcore.inlist.notFound", "未找到单据号[{0}]", new String[]{name});
}
......@@ -263,13 +227,13 @@ public class OutListController {
@ApiOperation("出库操作")
@PostMapping(value = "/out")
@PreAuthorize("@el.check('outList')")
public ResultBean checkOut(@RequestBody Map<String,Object> mapValues, HttpServletRequest request) {
public ResultBean checkOut(@RequestBody Map<String, Object> mapValues, HttpServletRequest request) {
String name = mapValues.get("name").toString();
if (name == null) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"name"});
}
boolean isShortageOut=false;
if(mapValues.containsKey("shortageOut")) {
boolean isShortageOut = false;
if (mapValues.containsKey("shortageOut")) {
String shortageOut = mapValues.get("shortageOut").toString();
if (ObjectUtil.isNotEmpty(shortageOut) && shortageOut.toString().equals("true")) {
isShortageOut = true;
......@@ -289,8 +253,26 @@ public class OutListController {
return ResultBean.newErrorResult(99, result, result, new String[]{name});
} else {
String msg= MessageUtils.getText(result,request.getLocale(),result );
String msg = MessageUtils.getText(result, request.getLocale(), result);
return ResultBean.newErrorResult(-1, result, msg);
}
}
@ApiOperation("转储出库界面,获取当前任务列表")
@GetMapping("/reelOutTasks")
@PreAuthorize("@el.check('outList')")
public List<TaskDto> queryReelOutTasks() {
List<DataLog> taskList = new ArrayList<>();
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog datalog : allTasks) {
if (datalog.isOutListTask()) {
if (datalog.isEnd() || datalog.isFinished() || datalog.isCancel()) {
continue;
} else {
taskList.add(datalog);
}
}
}
return taskMapper.toDto(taskList);
}
}
......@@ -12,6 +12,7 @@ import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.bean.BoxStatusBean;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.rest.dto.StorageDto;
import com.neotel.smfcore.core.storage.rest.dto.StorageSearchDto;
......@@ -272,6 +273,31 @@ public class StorageController {
log.info("手动删除料仓" + delStoName + "完成");
}
@ApiOperation("库位盘点")
@PostMapping(value = "/openAllUsedPos")
public ResultBean openAllUsedPos(@RequestBody Set<String> cids) {
ORDER_COLOR color = ORDER_COLOR.LIGHTBLUE;
for (String cid : cids) {
log.info("盘点料架:" + cid);
List<String> posList = dataCache.getUsedPosNameList(cid);
for (String posName : posList) {
String openValue = posName + "=" + color.name();
DevicesStatusUtil.appendOp(cid, "open", openValue);
}
}
return ResultBean.newOkResult("");
}
@ApiOperation("关闭料架所有亮灯")
@PostMapping(value = "/closeAllPos")
public ResultBean closeAll(@RequestBody Set<String> cids) {
for (String cid : cids) {
log.info("关闭料架所有亮灯:" + cid);
DevicesStatusUtil.appendOp(cid, "closeAll", "true");
}
return ResultBean.newOkResult("");
}
private Storage saveStorage(Storage storage) {
if (storage.getName() == null) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"name"});
......
server:
port: 8800
hik:
server: http://cloudapi-uat.hikvision.com.cn/api/
baseCode: "8001"
lgort: "M9142"
addr_1_transferOrderApi:
addr_2_transferOrderInApi:
addr_3_scheduleTaskApi:
addr_4_returnMaterialApi:
addr_5_putInApi:
addr_6_checkOutApi:
addr_7_updateOrderApi:
addr_8_riCheckApi:
addr_9_updateRepOrderApi:
addr_10_reservedOrderApi:
addr_11_orderEndApi:
key_1_transferOrderApi: "065009142"
key_2_transferOrderInApi: "065009152"
key_3_scheduleTaskApi: "065009097"
key_4_returnMaterialApi: "065009043"
key_5_putInApi: "065009094"
key_6_checkOutApi: "065009095"
key_7_updateOrderApi: "065009096"
key_8_riCheckApi: "065009099"
key_9_updateRepOrderApi: "065009225"
key_10_reservedOrderApi: "065009370"
key_11_orderEndApi: "065009098"
secret_1_transferOrderApi: XQP14qbvLkjvEIPcTqtzqtfUT0VNkwWloczU9y3GO2ACclm2WsiWbf44itzGecrl
secret_2_transferOrderInApi: p5mjSoX80QfgevObxN549jMW4tzawr6da1yTAYtetuoWVL1HTSxZIOJdOaCvF4Kp
secret_3_scheduleTaskApi: IftxhjIKEryxUQfjHcgYcwGck6TIlcpkJd6gwjGmznkPN1IQT4jnmy8jlWs8Fkqu
secret_4_returnMaterialApi: IbVCzQD4sWgaR6bie70iL0ZN9bjHWWuGNm5Ad4nDKGOpbGccLYCAdDo9mQUvIIDd
secret_5_putInApi: TZgeifaZl71gM7FVY6ga4hfH56KOhcJmbf642VY7nbn2iV6JZHsu3RzTmrYn5QDm
secret_6_checkOutApi: AaC3HweGbW7VgGl3LIk3yyhMY7xpCTmGbVVi6R9Q340TuHhTtLTXMRtIIBgOzLJO
secret_7_updateOrderApi: PvCE1fdJ3psFQnKmkHnTcOBs2vqFOKKB5MZKYu1TDhkCldGh48gpldQDXuFdDiYY
secret_8_riCheckApi: 2B0dEQCtf4FEJcvNUtcpoblq3gfuHJDWbawFt9R1irrUNKORhqUyAaU8OMbGvMMu
secret_9_updateRepOrderApi: dpkHeHgpv8wrxf7ciJlWmvyrvhAndOvqsOxingsbvN1EmlmOdnwr7QjcIjCUJWRM
secret_10_reservedOrderApi: wsmY125PTNqNaKxE9tG692P1dhaaKWyJ37bpvSq8H6bAltjEqE2ZdMT4OidB8U2v
secret_11_orderEndApi: SbdAtaYTbVjk51YmOHeblBkIrtpRo0e3Tuff5l9fHD4zHIKeOEVLF2TU6pj4pmju
#hik:
# server: http://cloudapi-uat.hikvision.com.cn/api/
# baseCode: "8001"
# lgort: "M9142"
# addr_1_transferOrderApi:
# addr_2_transferOrderInApi:
# addr_3_scheduleTaskApi:
# addr_4_returnMaterialApi:
# addr_5_putInApi:
# addr_6_checkOutApi:
# addr_7_updateOrderApi:
# addr_8_riCheckApi:
# addr_9_updateRepOrderApi:
# addr_10_reservedOrderApi:
# addr_11_orderEndApi:
# key_1_transferOrderApi: "065009142"
# key_2_transferOrderInApi: "065009152"
# key_3_scheduleTaskApi: "065009097"
# key_4_returnMaterialApi: "065009043"
# key_5_putInApi: "065009094"
# key_6_checkOutApi: "065009095"
# key_7_updateOrderApi: "065009096"
# key_8_riCheckApi: "065009099"
# key_9_updateRepOrderApi: "065009225"
# key_10_reservedOrderApi: "065009370"
# key_11_orderEndApi: "065009098"
# secret_1_transferOrderApi: XQP14qbvLkjvEIPcTqtzqtfUT0VNkwWloczU9y3GO2ACclm2WsiWbf44itzGecrl
# secret_2_transferOrderInApi: p5mjSoX80QfgevObxN549jMW4tzawr6da1yTAYtetuoWVL1HTSxZIOJdOaCvF4Kp
# secret_3_scheduleTaskApi: IftxhjIKEryxUQfjHcgYcwGck6TIlcpkJd6gwjGmznkPN1IQT4jnmy8jlWs8Fkqu
# secret_4_returnMaterialApi: IbVCzQD4sWgaR6bie70iL0ZN9bjHWWuGNm5Ad4nDKGOpbGccLYCAdDo9mQUvIIDd
# secret_5_putInApi: TZgeifaZl71gM7FVY6ga4hfH56KOhcJmbf642VY7nbn2iV6JZHsu3RzTmrYn5QDm
# secret_6_checkOutApi: AaC3HweGbW7VgGl3LIk3yyhMY7xpCTmGbVVi6R9Q340TuHhTtLTXMRtIIBgOzLJO
# secret_7_updateOrderApi: PvCE1fdJ3psFQnKmkHnTcOBs2vqFOKKB5MZKYu1TDhkCldGh48gpldQDXuFdDiYY
# secret_8_riCheckApi: 2B0dEQCtf4FEJcvNUtcpoblq3gfuHJDWbawFt9R1irrUNKORhqUyAaU8OMbGvMMu
# secret_9_updateRepOrderApi: dpkHeHgpv8wrxf7ciJlWmvyrvhAndOvqsOxingsbvN1EmlmOdnwr7QjcIjCUJWRM
# secret_10_reservedOrderApi: wsmY125PTNqNaKxE9tG692P1dhaaKWyJ37bpvSq8H6bAltjEqE2ZdMT4OidB8U2v
# secret_11_orderEndApi: SbdAtaYTbVjk51YmOHeblBkIrtpRo0e3Tuff5l9fHD4zHIKeOEVLF2TU6pj4pmju
#hik:
# server: http://cloudapi-tst.hikvision.com.cn/api/
......@@ -86,7 +86,7 @@ spring:
freemarker:
check-template-location: false
profiles:
active: 'dev'
active: 'prod'
jackson:
time-zone: GMT+8
data:
......@@ -104,4 +104,4 @@ rsa:
private_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A==
app:
version: '1.25.1018'
\ No newline at end of file
version: '@app.version@'
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!