Commit 198e39f5 LN

锡膏料仓:1增加开始搅拌接口。2.锡膏出库时增加锡膏日志SolderLog

1 个父辈 29aca383
......@@ -30,6 +30,11 @@ public enum SOLDER_STATUS {
* 回温中 (从冷藏中取出,未达到回温时间)
*/
REWARMING,
/**
*等待搅拌(回温完成后,需要手动开始搅拌)
*/
WAIT_MIXED,
/**
* 待搅拌 (回温完成或二次入库重新搅拌,等待搅拌)
*/
......
......@@ -66,7 +66,7 @@ public class SpBoxController {
@GetMapping("/uidList")
@PreAuthorize("@el.check('checkOut')")
public PageData<StoragePosDto> uidList(StoragePosFindCriteria criteria, Pageable pageable, HttpServletRequest request) {
Query query=getPosFindCriteria(criteria);
Query query = getPosFindCriteria(criteria);
PageData<StoragePos> pages = storagePosManager.findByPage(query, pageable);
List<StoragePosDto> StoragePosDtos = storagePosMapper.toDto(pages.getContent());
return new PageData(StoragePosDtos, pages.getTotalElements());
......@@ -78,7 +78,7 @@ public class SpBoxController {
Criteria c = Criteria.where("enabled").is(true).and("barcode").exists(true)
.and("id").in(pids);
List<StoragePos> solderPosList = storagePosManager.findByQuery(new Query(c));
setOutDate(solderPosList,new Date());
setOutDate(solderPosList, new Date());
return ResultBean.newOkResult("");
}
......@@ -89,7 +89,7 @@ public class SpBoxController {
Map<String, InventoryItemDto> inventoryItemMap = new HashMap<>();
List<StoragePos> allNotEmptyPos = new ArrayList<>();
for (Storage storage : dataCache.getAllStorage().values()) {
if(storage.isSolderPaste()){
if (storage.isSolderPaste()) {
List<StoragePos> storageList = storagePosManager.findNotEmptyByStorageId(storage.getId());
allNotEmptyPos.addAll(storageList);
}
......@@ -102,16 +102,16 @@ public class SpBoxController {
Barcode barcode = pos.getBarcode();
String pn = barcode.getPartNumber();
InventoryItemDto inventoryItemDto = inventoryItemMap.get(pn);
if(inventoryItemDto == null){
if (inventoryItemDto == null) {
inventoryItemDto = new InventoryItemDto();
}
inventoryItemDto.setPartNumber(pn);
inventoryItemDto.setStockReel(inventoryItemDto.getStockReel() + 1);
String solderStatus = barcode.getSolderStatus();
if(!notLockStatus.contains(solderStatus)){
if (!notLockStatus.contains(solderStatus)) {
inventoryItemDto.setLockReel(inventoryItemDto.getLockReel() + 1);
}
inventoryItemMap.put(pn,inventoryItemDto);
inventoryItemMap.put(pn, inventoryItemDto);
}
return inventoryItemMap.values();
}
......@@ -121,28 +121,28 @@ public class SpBoxController {
* 策略出库
*/
@RequestMapping("/pnOut")
public ResultBean outSolder(@RequestBody List<Map<String, String>> reqParams){
public ResultBean outSolder(@RequestBody List<Map<String, String>> reqParams) {
for (Map<String, String> itemMap : reqParams) {
String storageId = itemMap.get("storageId");
String pn = itemMap.get("pn");
String numStr = itemMap.get("num");
int num = Integer.valueOf(numStr);
String outDateStr = itemMap.get("outDate");
Date outDate = DateUtil.toDate(outDateStr,"yyyy-MM-dd HH:mm");
if(outDate == null){
Date outDate = DateUtil.toDate(outDateStr, "yyyy-MM-dd HH:mm");
if (outDate == null) {
outDate = new Date();
}
List<StoragePos> solderPosList = findSolder(storageId, pn, num);
setOutDate(solderPosList,outDate);
setOutDate(solderPosList, outDate);
}
return ResultBean.newOkResult("");
}
private void setOutDate(List<StoragePos> solderPosList,Date outDate){
private void setOutDate(List<StoragePos> solderPosList, Date outDate) {
for (StoragePos pos : solderPosList) {
Barcode barcode = pos.getBarcode();
if(barcode != null){
log.info("设定仓位【"+pos.getPosName()+"】中的锡膏["+barcode.getBarcode()+"]出库时间:" + DateUtil.toDateTimeString(outDate));
if (barcode != null) {
log.info("设定仓位【" + pos.getPosName() + "】中的锡膏[" + barcode.getBarcode() + "]出库时间:" + DateUtil.toDateTimeString(outDate));
try {
barcode.setSolderStatus(SOLDER_STATUS.TO_BE_REWARM.name());
barcode.setNeedOutDate(outDate);
......@@ -150,7 +150,7 @@ public class SpBoxController {
pos.setBarcode(barcode);
storagePosManager.save(pos);
} catch (ValidateException e) {
log.error("设定锡膏出库时间出错",e);
log.error("设定锡膏出库时间出错", e);
}
}
}
......@@ -161,16 +161,16 @@ public class SpBoxController {
*/
@RequestMapping("/clearOutDate")
@ResponseBody
public ResultBean clearOutDate(HttpServletRequest request){
public ResultBean clearOutDate(HttpServletRequest request) {
String pid = request.getParameter("pid");
StoragePos pos = storagePosManager.get(pid);
if(pos == null){
return ResultBean.newErrorResult(404,"smfcore.pos.notFound","位置["+pid+"]不存在");
if (pos == null) {
return ResultBean.newErrorResult(404, "smfcore.pos.notFound", "位置[" + pid + "]不存在");
}
if(taskService.excludePosIds().contains(pid)){
return ResultBean.newErrorResult(404,"smfcore.pos.clearLimit","当前库位任务已开始且未完成,无法取消");
if (taskService.excludePosIds().contains(pid)) {
return ResultBean.newErrorResult(404, "smfcore.pos.clearLimit", "当前库位任务已开始且未完成,无法取消");
}
log.info("取消仓位【"+pos.getPosName()+"】的定时出库任务");
log.info("取消仓位【" + pos.getPosName() + "】的定时出库任务");
try {
Barcode barcode = pos.getBarcode();
......@@ -186,8 +186,8 @@ public class SpBoxController {
}
private Query getPosFindCriteria(StoragePosFindCriteria criteria){
if (ObjectUtil.isNotEmpty(criteria.getStorageId()) && criteria.getStorageId().equals("0")) {
private Query getPosFindCriteria(StoragePosFindCriteria criteria) {
if (ObjectUtil.isNotEmpty(criteria.getStorageId()) && criteria.getStorageId().equals("0")) {
criteria.setStorageId(null);
}
Query query = QueryHelp.getQuery(criteria);
......@@ -212,10 +212,10 @@ public class SpBoxController {
return query;
}
private List<StoragePos> findSolder(String storageId,String pn, int num){
private List<StoragePos> findSolder(String storageId, String pn, int num) {
Criteria c = Criteria.where("enabled").is(true).and("barcode").exists(true)
.and("barcode.solderStatus").in(SOLDER_STATUS.RETREAT_STORAGE,SOLDER_STATUS.UNDER_REFRIGERATION);
if(!Strings.isNullOrEmpty(storageId)){
.and("barcode.solderStatus").in(SOLDER_STATUS.RETREAT_STORAGE, SOLDER_STATUS.UNDER_REFRIGERATION);
if (!Strings.isNullOrEmpty(storageId)) {
c = c.and("storageId").is(storageId);
}
Query q = new Query(c);
......@@ -227,29 +227,57 @@ public class SpBoxController {
@ApiOperation("锡膏料仓任务列表")
@RequestMapping(value = "/tasks")
public List<SpTaskDto> filterTask(TaskQueryCondition criteria, HttpServletRequest request){
public List<SpTaskDto> filterTask(TaskQueryCondition criteria, HttpServletRequest request) {
String storageId=criteria.getStorageId();
String storageId = criteria.getStorageId();
Storage storage = dataCache.getStorageById(storageId);
if(!storage.isSolderPaste()){
if (!storage.isSolderPaste()) {
return new ArrayList<>();
}
Criteria c = Criteria.where("storageId").is(storageId)
.and("enabled").is(true)
.and("used").is(true)
.and("barcode.solderStatus").nin(SOLDER_STATUS.NONE.name(),SOLDER_STATUS.UNDER_REFRIGERATION.name(),SOLDER_STATUS.RETREAT_STORAGE.name());
.and("barcode.solderStatus").nin(SOLDER_STATUS.NONE.name(), SOLDER_STATUS.UNDER_REFRIGERATION.name(), SOLDER_STATUS.RETREAT_STORAGE.name());
List<StoragePos> taskPosList = storagePosManager.findByQuery(new Query(c));
List<SpTaskDto> spTaskDtos=new ArrayList<>();
List<SpTaskDto> spTaskDtos = new ArrayList<>();
for (StoragePos pos : taskPosList) {
try{
SpTaskDto spTaskDto=new SpTaskDto(pos.getId(),pos.getStorageId(),pos.getId(),pos.getPosName(),pos.getBarcode().getBarcode(),pos.getBarcode().getPartNumber(),
pos.getBarcode().getAmount(),pos.getBarcode().getSolderStatus(),pos.getBarcode().getNeedOutDate());
try {
SpTaskDto spTaskDto = new SpTaskDto(pos.getId(), pos.getStorageId(), pos.getId(), pos.getPosName(), pos.getBarcode().getBarcode(), pos.getBarcode().getPartNumber(),
pos.getBarcode().getAmount(), pos.getBarcode().getSolderStatus(), pos.getBarcode().getNeedOutDate());
spTaskDtos.add(spTaskDto);
}catch (Exception ex){
} catch (Exception ex) {
}
}
return spTaskDtos;
}
@ApiOperation("开始搅拌")
@RequestMapping(value = "/startMixed")
public ResultBean startMixed(String posName) {
if (ObjectUtil.isEmpty(posName)) {
throw new ValidateException("sqbox.noTask", "未找到任务");
}
Criteria c = Criteria.where("posName").is(posName);
List<StoragePos> taskPosList = storagePosManager.findByQuery(new Query(c));
if (taskPosList.size() <= 0) {
throw new ValidateException("sqbox.noTask", "未找到任务");
}
StoragePos pos = taskPosList.get(0);
if (pos.getBarcode() != null && (pos.getBarcode().getSolderStatus().equals(SOLDER_STATUS.WAIT_MIXED.name()))) {
Barcode barcode = pos.getBarcode();
log.info("库位【" + pos.getPosName() + "】" + barcode.getBarcode() + "当前为等待搅拌 WAIT_MIXED 状态,用户点击开始搅拌,更改状态为 TO_BE_MIXED");
barcode.setSolderStatus(SOLDER_STATUS.TO_BE_MIXED.name());
barcode = barcodeManager.save(barcode);
pos.setBarcode(barcode);
storagePosManager.save(pos);
return ResultBean.newOkResult("");
} else {
throw new ValidateException("sqbox.noTask", "未找到任务");
}
}
}
package com.neotel.smfcore.core.solder.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
public interface ISolderLogDao extends IBaseDao {
}
package com.neotel.smfcore.core.solder.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.core.solder.service.dao.ISolderLogDao;
import com.neotel.smfcore.core.solder.service.po.SolderLog;
import org.springframework.stereotype.Service;
@Service
public class SolderLogDaoImpl extends AbstractBaseDao implements ISolderLogDao {
@Override
public Class getEntityClass() {
return SolderLog.class;
}
}
package com.neotel.smfcore.core.solder.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.solder.service.po.SolderLog;
public interface ISolderLogManager extends IBaseManager<SolderLog> {
}
package com.neotel.smfcore.core.solder.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.solder.service.dao.impl.SolderLogDaoImpl;
import com.neotel.smfcore.core.solder.service.manager.ISolderLogManager;
import com.neotel.smfcore.core.solder.service.po.SolderLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SolderLogManagerImpl implements ISolderLogManager {
@Autowired
private SolderLogDaoImpl solderLogDao;
@Override
public SolderLog get(String id) {
return solderLogDao.findOneById(id);
}
@Override
public SolderLog save(SolderLog object) throws ValidateException {
return solderLogDao.save(object);
}
@Override
public void delete(SolderLog object) throws ValidateException {
}
@Override
public PageData<SolderLog> findByPage(Query query, Pageable pageable) {
int totalCount = solderLogDao.countByQuery(query);
List<SolderLog> list = solderLogDao.findByQuery(query, pageable);
return new PageData<SolderLog>(list,totalCount);
}
@Override
public List<SolderLog> findByQuery(Query query) {
return solderLogDao.findByQuery(query);
}
}
package com.neotel.smfcore.core.solder.service.po;
import com.neotel.smfcore.common.base.BasePo;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.bean.MSDAppendInfo;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
@Data
@Document
public class SolderLog extends BasePo implements Serializable {
public SolderLog( Barcode barcode, StoragePos pos) {
if (barcode != null) {
setPartNumber(barcode.getPartNumber());
setBarcode(barcode.getBarcode());
setAmount(barcode.getAmount());
setH(barcode.getHeight());
setW(barcode.getPlateSize());
setRewarmTime(barcode.getWarmTime());
setMixTime(barcode.getMixTime());
setPutInTime(barcode.getPutInTime());
setStartRewarmTime(barcode.getStartWarmTime());
}
setStorageId(pos.getStorageId());
setPosId(pos.getId());
setPosName(pos.getPosName());
}
/**
* 料仓 ID
*/
private String storageId;
/**
* 仓位 ID
*/
private String posId;
/**
* 仓位名称
*/
private String posName = "";
//二维码(Reel ID)
private String barcode = "";
/**
* 料盘宽度信息
*/
private int w;
/**
* 料盘高度信息
*/
private int h;
/**
* 物料编号
*/
private String partNumber;
/**
*数量/重量(从 barCode 中读取)
*/
private int amount;
/**
* 搅拌时间
*/
private int mixTime;
/**
* 回温时间
*/
private int rewarmTime;
/**
* 搅拌转速
*/
private int mixSpeed;
/**
* 温度
*/
private int tempture=0;
/**
* 入库时间
*/
private long putInTime=0L;
/**
* 开始回温的时间
*/
private long startRewarmTime=0L;
/**
* 开始搅拌的时间
*/
private long startMixTime=0L;
/**
* 开始出库时间
*/
private long startOutTime=0L;
}
......@@ -8,6 +8,8 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.solder.service.manager.ISolderLogManager;
import com.neotel.smfcore.core.solder.service.po.SolderLog;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
......@@ -50,6 +52,9 @@ public class SolderBoxCache {
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private ISolderLogManager solderLogManager;
@PostConstruct
public void init(){
ExecutorService executorService = Executors.newSingleThreadExecutor();
......@@ -105,8 +110,8 @@ public class SolderBoxCache {
log.info(barcode.getBarcode() + "到达回温时间,搅拌时间为0,修改状态为待出库");
barcode.setSolderStatus(SOLDER_STATUS.TO_BE_OUT.name());
}else{
log.info(barcode.getBarcode() + "到达回温时间,修改状态为搅拌");
barcode.setSolderStatus(SOLDER_STATUS.TO_BE_MIXED.name());
log.info(barcode.getBarcode() + "到达回温时间,修改状态为等待搅拌,待手动开始搅拌后再开始搅拌");
barcode.setSolderStatus(SOLDER_STATUS.WAIT_MIXED.name());
}
barcode = barcodeManager.save(barcode);
......@@ -126,6 +131,8 @@ public class SolderBoxCache {
long needOutStartTime = needOutDate.getTime();
if(now >= needOutStartTime){
createOutTask(storagePos);
saveSolderLog(storagePos);
}
}
......@@ -248,4 +255,18 @@ public class SolderBoxCache {
private boolean isInStatus(Barcode barcode, SOLDER_STATUS solder_status){
return barcode.getSolderStatus().equals(solder_status.name());
}
/**
* 保存日志 温度,回温时间,搅拌时间,转速参数单独不在一起。需将温度,回温 时间,搅拌时间以及转速整合在一个界面作为制程管控点检项目
* @param pos
*/
private void saveSolderLog(StoragePos pos) {
//TODO
SolderLog solderLog = new SolderLog(pos.getBarcode(), pos);
solderLog.setStartOutTime(System.currentTimeMillis());
solderLogManager.save(solderLog);
log.info("保存锡膏日志:" + solderLog.toString());
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!