Commit 3e8bc470 zshaohui

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

2.手动出库增加料箱查找出库
3.内仓喂料报表,增加楼层选择
1 个父辈 73004c2a
...@@ -160,6 +160,21 @@ public class DateUtil { ...@@ -160,6 +160,21 @@ public class DateUtil {
return c.getTime(); 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){ public static Date getMinDate(Date date0, Date date1){
return date0.before(date1)? date0 : date1; return date0.before(date1)? date0 : date1;
} }
......
package com.neotel.smfcore.core.report; package com.neotel.smfcore.core.report;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.SecurityUtils; 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.device.util.DataCache;
import com.neotel.smfcore.core.report.bean.ChartItem; import com.neotel.smfcore.core.report.bean.ChartItem;
import com.neotel.smfcore.core.report.rest.dto.InoutDataDto; import com.neotel.smfcore.core.report.rest.dto.InoutDataDto;
...@@ -12,6 +14,7 @@ import com.neotel.smfcore.core.report.rest.query.ReportQuery; ...@@ -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.bean.UsageItem;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager; import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.po.Storage; 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.IGroupManager;
import com.neotel.smfcore.security.service.manager.IUserManager; import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Group; import com.neotel.smfcore.security.service.po.Group;
...@@ -26,6 +29,8 @@ import org.springframework.web.bind.annotation.GetMapping; ...@@ -26,6 +29,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@Slf4j @Slf4j
...@@ -49,6 +54,9 @@ public class ReportController { ...@@ -49,6 +54,9 @@ public class ReportController {
@Autowired @Autowired
DataCache dataCache; DataCache dataCache;
@Autowired
private IDataLogManager dataLogManager;
@ApiOperation("获取出入库数据") @ApiOperation("获取出入库数据")
@GetMapping(value = "/inOutData") @GetMapping(value = "/inOutData")
@PreAuthorize("@el.check('inOutData')") @PreAuthorize("@el.check('inOutData')")
...@@ -123,4 +131,58 @@ public class ReportController { ...@@ -123,4 +131,58 @@ public class ReportController {
} }
return groupDtos; 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 { ...@@ -204,7 +204,7 @@ public class StoragePosController {
// QisdaApi.ClearStockBy(storagePos.getPosName()); // QisdaApi.ClearStockBy(storagePos.getPosName());
Barcode barcode = storagePos.getBarcode(); Barcode barcode = storagePos.getBarcode();
if (barcode != null) { if (barcode != null) {
barcode = barcodeManager.get(barcode.getId()); barcode = barcodeManager.findByBarcode(barcode.getBarcode());
log.info("清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode()); log.info("清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
String opUser = SecurityUtils.getCurrentUsername(); String opUser = SecurityUtils.getCurrentUsername();
log.info(opUser + "清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode()); log.info(opUser + "清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
...@@ -371,7 +371,12 @@ public class StoragePosController { ...@@ -371,7 +371,12 @@ public class StoragePosController {
if (StringUtils.isBlank(stationName)) { if (StringUtils.isBlank(stationName)) {
return ResultBean.newErrorResult(-1, "", "请选择对应的工位"); 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, "", "请核实查询条件是否为空"); return ResultBean.newErrorResult(-1, "", "请核实查询条件是否为空");
} }
Query query = getPosFindCriteria(criteria); Query query = getPosFindCriteria(criteria);
......
...@@ -100,6 +100,7 @@ public class StoragePosFindCriteria { ...@@ -100,6 +100,7 @@ public class StoragePosFindCriteria {
private String warehouseCode; private String warehouseCode;
@ApiModelProperty("料箱号") @ApiModelProperty("料箱号")
@QueryCondition(propName = "barcode.barcode")
private String box; private String box;
public int getComponentType(){ public int getComponentType(){
......
...@@ -3,8 +3,11 @@ package com.neotel.smfcore.core.system.service.manager; ...@@ -3,8 +3,11 @@ package com.neotel.smfcore.core.system.service.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import java.util.Date;
import java.util.List; import java.util.List;
public interface IDataLogManager extends IBaseManager<DataLog> { public interface IDataLogManager extends IBaseManager<DataLog> {
List<DataLog> findUnFinishedTasks(); 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; ...@@ -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.dao.IDataLogDao;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager; import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog; 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.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
...@@ -14,6 +15,7 @@ import org.springframework.stereotype.Service; ...@@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.List; import java.util.List;
@Service @Service
...@@ -63,4 +65,16 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -63,4 +65,16 @@ public class DataLogManagerImpl implements IDataLogManager {
} }
return unFinishedTasks; 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; ...@@ -17,6 +17,7 @@ import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
...@@ -32,6 +33,15 @@ import java.util.stream.Collectors; ...@@ -32,6 +33,15 @@ import java.util.stream.Collectors;
@RestController @RestController
public class InnerReportController { 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 @Autowired
private ILiteOrderManager liteOrderManager; private ILiteOrderManager liteOrderManager;
...@@ -45,12 +55,8 @@ public class InnerReportController { ...@@ -45,12 +55,8 @@ public class InnerReportController {
private OrderMapper orderMapper; private OrderMapper orderMapper;
@Autowired @Autowired
private TaskService taskService;
@Autowired
private DataCache dataCache; private DataCache dataCache;
@ApiOperation("喂料") @ApiOperation("喂料")
@RequestMapping("/feeding") @RequestMapping("/feeding")
//@AnonymousAccess //@AnonymousAccess
...@@ -91,23 +97,39 @@ public class InnerReportController { ...@@ -91,23 +97,39 @@ public class InnerReportController {
return ResultBean.newOkResult(orderItemMapper.toDto(orderItems)); 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("线别下拉") @ApiOperation("线别下拉")
@RequestMapping("linePullDown") @RequestMapping("linePullDown")
//@AnonymousAccess @AnonymousAccess
public ResultBean linePullDown() { public ResultBean linePullDown(String floor) {
//得到每一个楼层的线体 //得到每一个楼层的线体
String f2Line = dataCache.getCache("F2Line").toString(); String f2Line = dataCache.getCache("F2Line").toString();
String f3Line = dataCache.getCache("F3Line").toString(); String f3Line = dataCache.getCache("F3Line").toString();
String f5Line = dataCache.getCache("F5Line").toString(); String f5Line = dataCache.getCache("F5Line").toString();
Map<String, String> resultMap = new LinkedHashMap<>(); String resultLine = "";
for (String line : f2Line.split(",")) { if (F2.equals(floor)) {
resultMap.put(line,line); resultLine = f2Line;
} } else if (F3.equals(floor)) {
for (String line : f3Line.split(",")) { resultLine = f3Line;
resultMap.put(line,line); } else if (F5.equals(floor)) {
resultLine = f5Line;
} else {
resultLine = f2Line + "," + f3Line + "," + f5Line;
} }
for (String line : f5Line.split(",")) { Map<String, String> resultMap = new LinkedHashMap<>();
resultMap.put(line,line); for (String line : resultLine.split(",")) {
resultMap.put(line, line);
} }
return ResultBean.newOkResult(resultMap); return ResultBean.newOkResult(resultMap);
} }
......
...@@ -2,11 +2,31 @@ server: ...@@ -2,11 +2,31 @@ server:
port: 8800 port: 8800
api: api:
#name: Neotel name: Lizhen
#inCheckUrl: inCheckUrl: #http://172.30.170.148:8001/Npm/WmsCheckReelfob #禁用料
#outNotifyUrl: https://matlabel-tool.com:4434/SMD_BOXAPI/OutBox outNotifyUrl: #http://172.30.70.187:8082/SmtAutoWH/Save2DReelInfo #保存物料(外仓配置)
#inNotifyUrl: https://matlabel-tool.com:4434/SMD_BOXAPI/InBox 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: file:
...@@ -22,10 +42,10 @@ spring: ...@@ -22,10 +42,10 @@ spring:
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
data: data:
mongodb: mongodb:
host: localhost # 主机地址 host: localhost # 主机地址
port: 27017 # 端口 port: 27017 # 端口
database: smf # 数据库 database: smf # 数据库
messages: messages:
encoding: utf-8 encoding: utf-8
main: main:
...@@ -41,6 +61,5 @@ app: ...@@ -41,6 +61,5 @@ app:
type: "" type: ""
menu: menu:
show: show: #workOrder,menu,feeding
hide: hide:
\ No newline at end of file \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!