Commit 4eb9f6b9 张少辉

1.增加库位禁用报表

1 个父辈 f098ada7
......@@ -242,7 +242,7 @@ public class DataInitManager {
addNewFunctionMenu(90,pMenuReport,"innerProLimitReport","禁限用","innerProLimitReport","innerWarehouse/proLimitReport/index","proLimit",functionMenuMap);
addNewFunctionMenu(91,pMenuReport,"imDetailsReport","导入明细","imDetailsReport","innerWarehouse/imDetailsReport/index","feeding",functionMenuMap);
addNewFunctionMenu(92, pMenuReport, "towerInventoryReport", "库存缺料信息", "towerInventoryReport", "report/towerInventoryReport/index", "towerInventoryReport", functionMenuMap);
addNewFunctionMenu(93,pMenuReport,"storagePosDisableRecord","库位禁用记录","storagePosDisableRecord","report/storagePosDisableRecord/index","storagePosDisableRecord",functionMenuMap);
//内外仓都有
addNewFunctionMenu(92,pMenuReport,"expiredReport","过期报表","expiredReport","report/expiredReport/index","inventory",functionMenuMap);
......
......@@ -35,6 +35,8 @@ import com.neotel.smfcore.custom.lizhen.innerBox.bean.WareHouseCode;
import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import com.neotel.smfcore.custom.lizhen.innerBox.service.manager.IFixdPartNumberManager;
import com.neotel.smfcore.custom.lizhen.innerBox.service.manager.WareHouseCodeManager;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.StoragePosUsageRecord;
import com.neotel.smfcore.custom.lizhen.report.service.IStoragePosUsageRecordService;
import com.neotel.smfcore.custom.lizhen.virtual.service.manager.IVirInventoryManager;
import com.neotel.smfcore.custom.lizhen.wcs.bean.BackToWarehouse;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
......@@ -92,6 +94,9 @@ public class DeviceController {
@Autowired
private IFixdPartNumberManager fixdPartNumberManager;
@Autowired
private IStoragePosUsageRecordService storagePosUsageRecordService;
private Map<String, IDeviceHandler> handlerMap = new HashMap<>();
......@@ -304,7 +309,7 @@ public class DeviceController {
//已经在任务当中,返回对应的信息
if (dataLog.getBarcode().equals(barcode.getBarcode())) {
//如果有任务,直接ng
if (!dataLog.isFinished()) {
if (!dataLog.isFinished() && !dataLog.isCancel()) {
throw new ValidateException("smfcore.error.barcode.executing", "条码[{0}}]任务正在执行", new String[]{barcode.getBarcode()});
}
/* if (dataLog.isPutInTask()) {
......@@ -562,6 +567,8 @@ public class DeviceController {
storagePosManager.save(pos);
log.info("屏蔽库位:库位号[" + pos.getId() + "][" + pos.getPosName() + "]barcode[" + barcode + "]");
storagePosUsageRecordService.save(pos.getPosName(),msg);
DeviceMessageUtil.addEnabledPosMessage(pos,"");
return ResultBean.newOkResult("");
}
......
......@@ -38,6 +38,8 @@ import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import java.lang.String;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.StoragePosUsageRecord;
import com.neotel.smfcore.custom.lizhen.report.service.IStoragePosUsageRecordService;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -91,6 +93,9 @@ public class StoragePosController {
@Autowired
private LizhenApi lizhenApi;
@Autowired
private IStoragePosUsageRecordService storagePosUsageRecordService;
@ApiOperation("查询库位")
@GetMapping
......@@ -268,6 +273,8 @@ public class StoragePosController {
log.info("启用禁用库位:库位号[" + pos.getId() + "][" + pos.getPosName() + "]=" + enabledDto.isEnabled());
DeviceMessageUtil.addEnabledPosMessage(pos, SecurityUtils.getCurrentUsername());
storagePosUsageRecordService.save(pos.getPosName(),SecurityUtils.getLoginUsername()+"启用库位");
return ResultBean.newOkResult("");
}
......@@ -296,6 +303,7 @@ public class StoragePosController {
pos.setEnabled(saveDto.isEnabled());
enabledStr = saveDto.isEnabled() ? ",启用库位" : ",禁用库位";
DeviceMessageUtil.addEnabledPosMessage(pos, SecurityUtils.getCurrentUsername());
storagePosUsageRecordService.save(pos.getPosName(),SecurityUtils.getCurrentUsername()+enabledStr);
}
storagePosManager.save(pos);
Storage storage = dataCache.getStorageById(pos.getStorageId());
......@@ -425,6 +433,8 @@ public class StoragePosController {
storagePos.setEnabled(true);
storagePosManager.save(storagePos);
storagePosUsageRecordService.save(posName,"客户端启用库位");
Storage storage = dataCache.getStorageById(storagePos.getStorageId());
dataCache.reloadStorage(storage, storage.getCid());
......
......@@ -35,6 +35,7 @@ import com.neotel.smfcore.custom.lizhen.LizhenApi;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
import com.neotel.smfcore.custom.lizhen.report.service.IStoragePosUsageRecordService;
import com.neotel.smfcore.custom.lizhen.virtual.service.manager.IVirInventoryManager;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
......@@ -75,6 +76,11 @@ public class TaskService {
@Autowired
private IVirInventoryManager virInventoryManager;
@Autowired
private IStoragePosUsageRecordService storagePosUsageRecordService;
/**
* 任务队列,Key 为dataLog的ID,value 为本区域待执行的任务
*/
......@@ -352,6 +358,7 @@ public class TaskService {
storagePos.setEnabled(false);
storagePos.setMsg(type+"任务取消,屏蔽库位");
storagePosManager.save(storagePos);
storagePosUsageRecordService.save(storagePos.getPosName(),type+"任务取消,屏蔽库位");
log.info(type+"任务取消,屏蔽库位:库位号[" + storagePos.getId() + "][" + storagePos.getPosName() + "]barcode[" + barcode + "]");
DeviceMessageUtil.addEnabledPosMessage(storagePos, SecurityUtils.getLoginUsername());
}
......
......@@ -29,6 +29,9 @@ import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.LizhenApi;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.StoragePosUsageRecord;
import com.neotel.smfcore.custom.lizhen.report.service.IStoragePosUsageRecordService;
import com.neotel.smfcore.custom.lizhen.report.service.impl.StoragePosUsageRecordServiceImpl;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -84,6 +87,9 @@ public class InnerBoxRestController {
@Autowired
private LizhenApi lizhenApi;
@Autowired
private IStoragePosUsageRecordService storagePosUsageRecordService;
//料架缓存id
private static Map<String, String> labelOrderItemMap = new ConcurrentHashMap<>();
......@@ -144,9 +150,9 @@ public class InnerBoxRestController {
dataCache.updateInventory(pos,barcode);
Storage storage = dataCache.getStorageById(pos.getStorageId());
dataCache.reloadStorage(storage,storage.getCid());
//添加一条message
DeviceMessageUtil.addEnabledPosMessage(pos,"启用库位,清空库存");
storagePosUsageRecordService.save(pos.getPosName(),"启用库位,清空库存");
}
}
......
package com.neotel.smfcore.custom.lizhen.report;
import com.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.StoragePosUsageRecord;
import com.neotel.smfcore.custom.lizhen.report.bean.query.StoragePosUsageRecordQuery;
import com.neotel.smfcore.custom.lizhen.report.service.IStoragePosUsageRecordService;
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.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/storagePosUsageRecord")
public class StoragePosUsageRecordController {
@Autowired
private IStoragePosUsageRecordService storagePosUsageRecordService;
// 获取存储位置使用记录列表
@RequestMapping("/list")
//@AnonymousAccess
public PageData<StoragePosUsageRecord> list(StoragePosUsageRecordQuery storagePosUsageRecordQuery, Pageable pageable) {
Query query = QueryHelp.getQuery(storagePosUsageRecordQuery);
return storagePosUsageRecordService.findByPage(query, pageable);
}
// 根据查询条件导出记录
@RequestMapping("/list/download")
//@AnonymousAccess
public void download(StoragePosUsageRecordQuery storagePosUsageRecordQuery, Pageable pageable,HttpServletResponse response) throws IOException {
Query query = QueryHelp.getQuery(storagePosUsageRecordQuery);
FileUtil.downloadExcel(query, pageable, response, new IExcelDownLoad() {
@Override
public List<List<String>> getHeader() {
List<List<String>> headerList = new ArrayList<>();
headerList.add(Collections.singletonList("库位"));
headerList.add(Collections.singletonList("操作内容"));
headerList.add(Collections.singletonList("操作时间"));
return headerList;
}
@Override
public List<List<Object>> getPageData(Query query, Pageable pageable) {
List<StoragePosUsageRecord> records = storagePosUsageRecordService.findByQuery(query,pageable);
List<List<Object>> pageData = new ArrayList<>();
records.forEach(record -> {
List<Object> row = new ArrayList<>();
row.add(record.getPosName());
row.add(record.getContent());
row.add(record.getCreateDate());
pageData.add(row);
});
return pageData;
}
});
}
}
package com.neotel.smfcore.custom.lizhen.report.bean.dto;
import com.neotel.smfcore.common.base.BasePo;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
@Data
@AllArgsConstructor
public class StoragePosUsageRecord extends BasePo implements Serializable {
private String posName;
private String content;
}
package com.neotel.smfcore.custom.lizhen.report.bean.query;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.base.BasePo;
import com.neotel.smfcore.common.bean.BetweenData;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
public class StoragePosUsageRecordQuery {
@QueryCondition(blurry = "posName")
private String posName;
@QueryCondition(blurry = "content")
private String content;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "createDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> createDate;
}
package com.neotel.smfcore.custom.lizhen.report.dao;
import com.neotel.smfcore.common.base.IBaseDao;
public interface IStoragePosUsageRecordDao extends IBaseDao {
}
package com.neotel.smfcore.custom.lizhen.report.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.StoragePosUsageRecord;
import com.neotel.smfcore.custom.lizhen.report.dao.IStoragePosUsageRecordDao;
import org.springframework.stereotype.Service;
@Service
public class StoragePosUsageRecordDaoImpl extends AbstractBaseDao implements IStoragePosUsageRecordDao {
@Override
public Class getEntityClass() {
return StoragePosUsageRecord.class;
}
}
package com.neotel.smfcore.custom.lizhen.report.service;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.StoragePosUsageRecord;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import java.util.List;
public interface IStoragePosUsageRecordService extends IBaseManager<StoragePosUsageRecord> {
StoragePosUsageRecord findOne(Query query);
List<StoragePosUsageRecord> findByQuery(Query query);
void removeByPosName(String posName);
List<StoragePosUsageRecord> findByQuery(Query query, Pageable pageable);
void save(String posName, String msg);
}
package com.neotel.smfcore.custom.lizhen.report.service.impl;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.StoragePosUsageRecord;
import com.neotel.smfcore.custom.lizhen.report.dao.IStoragePosUsageRecordDao;
import com.neotel.smfcore.custom.lizhen.report.service.IStoragePosUsageRecordService;
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.Collections;
import java.util.List;
@Service
public class StoragePosUsageRecordServiceImpl implements IStoragePosUsageRecordService {
@Autowired
private IStoragePosUsageRecordDao storagePosUsageRecordDao;
@Override
public StoragePosUsageRecord get(String id) {
return storagePosUsageRecordDao.findOneById(id);
}
@Override
public StoragePosUsageRecord save(StoragePosUsageRecord object) throws ValidateException {
return storagePosUsageRecordDao.save(object);
}
@Override
public void delete(StoragePosUsageRecord object) throws ValidateException {
storagePosUsageRecordDao.removeOne(object);
}
@Override
public PageData<StoragePosUsageRecord> findByPage(Query query, Pageable pageable) {
int count = storagePosUsageRecordDao.countByQuery(query);
List list = storagePosUsageRecordDao.findByQuery(query, pageable);
return new PageData<>(list, count);
}
@Override
public List<StoragePosUsageRecord> findByQuery(Query query) {
return storagePosUsageRecordDao.findByQuery(query);
}
@Override
public StoragePosUsageRecord findOne(Query query) {
return storagePosUsageRecordDao.findOne(query);
}
@Override
public void removeByPosName(String posName) {
// Implementation to remove records by position name
}
@Override
public List<StoragePosUsageRecord> findByQuery(Query query, Pageable pageable) {
return storagePosUsageRecordDao.findByQuery(query,pageable);
}
@Override
public void save(String posName, String msg) {
StoragePosUsageRecord storagePosUsageRecord = new StoragePosUsageRecord(posName, msg);
storagePosUsageRecordDao.save(storagePosUsageRecord);
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!