Commit 3e8bc470 zshaohui

1.内仓出入库白夜班报表修改

2.手动出库增加料箱查找出库
3.内仓喂料报表,增加楼层选择
1 个父辈 73004c2a
......@@ -160,6 +160,21 @@ public class DateUtil {
return c.getTime();
}
/**
* 添加小时
* @param date 日期
* @param hours 小时
* @return
*/
public static Date addHours(Date date, int hours) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.HOUR_OF_DAY, hours);
return c.getTime();
}
public static Date getMinDate(Date date0, Date date1){
return date0.before(date1)? date0 : date1;
}
......
package com.neotel.smfcore.core.report;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.report.bean.ChartItem;
import com.neotel.smfcore.core.report.rest.dto.InoutDataDto;
......@@ -12,6 +14,7 @@ import com.neotel.smfcore.core.report.rest.query.ReportQuery;
import com.neotel.smfcore.core.storage.bean.UsageItem;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Group;
......@@ -26,6 +29,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@Slf4j
......@@ -49,6 +54,9 @@ public class ReportController {
@Autowired
DataCache dataCache;
@Autowired
private IDataLogManager dataLogManager;
@ApiOperation("获取出入库数据")
@GetMapping(value = "/inOutData")
@PreAuthorize("@el.check('inOutData')")
......@@ -123,4 +131,58 @@ public class ReportController {
}
return groupDtos;
}
@ApiOperation("获取白夜班出入库数据")
@GetMapping(value = "/dayNightInOutData")
public InoutDataDto dayNightInOutData(ReportQuery query) throws ParseException {
Date date = query.getUpdateDate().getFrom();
if (date == null) {
date = new Date();
}
String format = "yyyy-MM-dd HH:mm:ss";
String initFormat = "yyyy-MM-dd";
String dayStartTime = " 07:00:00";
date = initDate(date, initFormat, format, dayStartTime);
//得到白班的开始与结束时间
Date dayStartDate = DateUtil.addHours(date, -8);
Date dayEndDate = DateUtil.addHours(dayStartDate, 12);
//得到白班的入库数据
int dayInCount = dataLogManager.getInOutDate(dayStartDate,dayEndDate, OP.PUT_IN,query.getPn());
//得到白班的出库库数据
int dayOutCount = dataLogManager.getInOutDate(dayStartDate,dayEndDate, OP.CHECKOUT,query.getPn());
//得到夜班的开始与结束时间
Date nightStartDate = dayEndDate;
Date nightEndDate = DateUtil.addHours(nightStartDate, 12);
//得到夜班班的入库数据
int nightInCount = dataLogManager.getInOutDate(nightStartDate,nightEndDate, OP.PUT_IN,query.getPn());
//得到白班的出库库数据
int nightOutCount = dataLogManager.getInOutDate(nightStartDate,nightEndDate, OP.CHECKOUT,query.getPn());
//构造返回数据
List<String> labelList = new ArrayList<>();
labelList.add("白班");
labelList.add("夜班");
List<Integer> putInValueList = new ArrayList<>();
putInValueList.add(dayInCount);
putInValueList.add(nightInCount);
List<Integer> checkOutValueList = new ArrayList<>();
checkOutValueList.add(dayOutCount);
checkOutValueList.add(nightOutCount);
InoutDataDto inoutDataDto = new InoutDataDto();
inoutDataDto.setLabelList(labelList);
inoutDataDto.setPutInValueList(putInValueList);
inoutDataDto.setCheckOutValueList(checkOutValueList);
return inoutDataDto;
}
private Date initDate(Date date, String initFormat, String format, String startTime) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(initFormat);
String dateStr = sdf.format(date);
dateStr = dateStr + startTime;
sdf = new SimpleDateFormat(format);
return sdf.parse(dateStr);
}
}
......@@ -204,7 +204,7 @@ public class StoragePosController {
// QisdaApi.ClearStockBy(storagePos.getPosName());
Barcode barcode = storagePos.getBarcode();
if (barcode != null) {
barcode = barcodeManager.get(barcode.getId());
barcode = barcodeManager.findByBarcode(barcode.getBarcode());
log.info("清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
String opUser = SecurityUtils.getCurrentUsername();
log.info(opUser + "清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
......@@ -371,7 +371,12 @@ public class StoragePosController {
if (StringUtils.isBlank(stationName)) {
return ResultBean.newErrorResult(-1, "", "请选择对应的工位");
}
if (StringUtils.isBlank(partNumber) && StringUtils.isBlank(provider) && StringUtils.isBlank(batch) && StringUtils.isBlank(dateCode) && StringUtils.isBlank(warehouseCode)) {
if (StringUtils.isBlank(partNumber)
&& StringUtils.isBlank(provider)
&& StringUtils.isBlank(batch)
&& StringUtils.isBlank(dateCode)
&& StringUtils.isBlank(warehouseCode)
&& StringUtils.isBlank(box)) {
return ResultBean.newErrorResult(-1, "", "请核实查询条件是否为空");
}
Query query = getPosFindCriteria(criteria);
......
......@@ -100,6 +100,7 @@ public class StoragePosFindCriteria {
private String warehouseCode;
@ApiModelProperty("料箱号")
@QueryCondition(propName = "barcode.barcode")
private String box;
public int getComponentType(){
......
......@@ -3,8 +3,11 @@ package com.neotel.smfcore.core.system.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import java.util.Date;
import java.util.List;
public interface IDataLogManager extends IBaseManager<DataLog> {
List<DataLog> findUnFinishedTasks();
int getInOutDate(Date startDate, Date endDate, int type, String partNumber);
}
......@@ -6,6 +6,7 @@ import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.system.service.dao.IDataLogDao;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@Service
......@@ -63,4 +65,16 @@ public class DataLogManagerImpl implements IDataLogManager {
}
return unFinishedTasks;
}
@Override
public int getInOutDate(Date startDate, Date endDate, int type, String partNumber) {
Query query = new Query();
Criteria criteria = new Criteria().andOperator(Criteria.where("updateDate").gte(startDate),
Criteria.where("updateDate").lt(endDate)).and("type").is(type);
criteria.and("status").in(OP_STATUS.END.name(), OP_STATUS.FINISHED.name());
if (Strings.isNotBlank(partNumber)) {
criteria.and("partNumber").is(partNumber);
}
return dataLogDao.countByQuery(query.addCriteria(criteria));
}
}
......@@ -17,6 +17,7 @@ import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
......@@ -32,6 +33,15 @@ import java.util.stream.Collectors;
@RestController
public class InnerReportController {
@Value("${lizhen.F2.name}")
private String F2;
@Value("${lizhen.F3.name}")
private String F3;
@Value("${lizhen.F5.name}")
private String F5;
@Autowired
private ILiteOrderManager liteOrderManager;
......@@ -45,12 +55,8 @@ public class InnerReportController {
private OrderMapper orderMapper;
@Autowired
private TaskService taskService;
@Autowired
private DataCache dataCache;
@ApiOperation("喂料")
@RequestMapping("/feeding")
//@AnonymousAccess
......@@ -91,23 +97,39 @@ public class InnerReportController {
return ResultBean.newOkResult(orderItemMapper.toDto(orderItems));
}
@ApiOperation("楼层下拉")
@RequestMapping("floorPullDown")
@AnonymousAccess
public ResultBean floorPullDown(){
Map<String,String> resultMap = new LinkedHashMap<>();
resultMap.put(F2,F2);
resultMap.put(F3,F3);
resultMap.put(F5,F5);
return ResultBean.newOkResult(resultMap);
}
@ApiOperation("线别下拉")
@RequestMapping("linePullDown")
//@AnonymousAccess
public ResultBean linePullDown() {
@AnonymousAccess
public ResultBean linePullDown(String floor) {
//得到每一个楼层的线体
String f2Line = dataCache.getCache("F2Line").toString();
String f3Line = dataCache.getCache("F3Line").toString();
String f5Line = dataCache.getCache("F5Line").toString();
Map<String, String> resultMap = new LinkedHashMap<>();
for (String line : f2Line.split(",")) {
resultMap.put(line,line);
}
for (String line : f3Line.split(",")) {
resultMap.put(line,line);
String resultLine = "";
if (F2.equals(floor)) {
resultLine = f2Line;
} else if (F3.equals(floor)) {
resultLine = f3Line;
} else if (F5.equals(floor)) {
resultLine = f5Line;
} else {
resultLine = f2Line + "," + f3Line + "," + f5Line;
}
for (String line : f5Line.split(",")) {
resultMap.put(line,line);
Map<String, String> resultMap = new LinkedHashMap<>();
for (String line : resultLine.split(",")) {
resultMap.put(line, line);
}
return ResultBean.newOkResult(resultMap);
}
......
......@@ -2,11 +2,31 @@ server:
port: 8800
api:
#name: Neotel
#inCheckUrl:
#outNotifyUrl: https://matlabel-tool.com:4434/SMD_BOXAPI/OutBox
#inNotifyUrl: https://matlabel-tool.com:4434/SMD_BOXAPI/InBox
name: Lizhen
inCheckUrl: #http://172.30.170.148:8001/Npm/WmsCheckReelfob #禁用料
outNotifyUrl: #http://172.30.70.187:8082/SmtAutoWH/Save2DReelInfo #保存物料(外仓配置)
inNotifyUrl: #http://172.30.170.148:8082/SmtAutoWH/Save2DReelInfo #保存物料(内仓配置)
fetchOrderUrl: #http://172.30.170.148:8082/SmtAutoWH/GetWoPickingList #获取工单
barcodeInfoUrl: #http://172.30.170.148:8001/Sct/GetReelInfo #mes数量
fetchGRUrl: #http://10.42.25.18:8082/api/wcs/fetchGR #gr标签
brandQtyUrl: #http://10.42.25.18:8082/api/wcs/brandQty #gr标签满卷数
plant: W337
werks: W337
#缺料预警对应的地址
lizhen:
F2:
name: 2F
line: A05-2FSMT-16S,A05-2FSMT-17S,A05-2FSMT-06S,A05-2FSMT-07S
url: #http://172.30.88.19:8001/smf-core/api/Mes/machineCallMaterial
F3:
name: 3F
line: A05-3FSMT-04S,A05-3FSMT-14S,A05-3FSMT-15S,A05-3FSMT-05S
url: #http://172.30.97.99:8001/smf-core/api/Mes/machineCallMaterial
F5:
name: 5F
line: A05-5FSMT-13S,A05-5FSMT-03S #,A05-5FARF-06,A05-5FSMT-01S,A05-5FSMT-11S,A05-5FSMT-02S,A05-5FSMT-12S
url: #http://172.30.97.63:8001/smf-core/api/Mes/machineCallMaterial
# 文件存储路径
file:
......@@ -22,10 +42,10 @@ spring:
jackson:
time-zone: GMT+8
data:
mongodb:
host: localhost # 主机地址
port: 27017 # 端口
database: smf # 数据库
mongodb:
host: localhost # 主机地址
port: 27017 # 端口
database: smf # 数据库
messages:
encoding: utf-8
main:
......@@ -41,6 +61,5 @@ app:
type: ""
menu:
show:
hide:
show: #workOrder,menu,feeding
hide:
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!