Commit 87ef70db LN

工单增加自定义的附加字段。修改:模板上传,工单配置,工单上传,工单下载,工单出库。

1 个父辈 fe4ed138
package com.neotel.smfcore.common.excel; package com.neotel.smfcore.common.excel;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j
public class ExcelReader { public class ExcelReader {
public static List<Map<Integer, String>> noModelRead(String fileName,int headRowNumber) { public static List<Map<Integer, String>> noModelRead(String fileName, int headRowNumber) {
// 这里 只要,然后读取第一个sheet 同步读取会自动finish // 这里 只要,然后读取第一个sheet 同步读取会自动finish
NoModelDataListener listener = new NoModelDataListener(); NoModelDataListener listener = new NoModelDataListener();
if(headRowNumber<=1){ if (headRowNumber <= 1) {
EasyExcel.read(fileName, listener).sheet().doRead(); EasyExcel.read(fileName, listener).sheet().doRead();
} } else {
else{
EasyExcel.read(fileName, listener).sheet().headRowNumber(headRowNumber).doRead(); EasyExcel.read(fileName, listener).sheet().headRowNumber(headRowNumber).doRead();
} }
List<Map<Integer, String>> data = listener.getData(); List<Map<Integer, String>> data = listener.getData();
...@@ -29,6 +31,37 @@ public class ExcelReader { ...@@ -29,6 +31,37 @@ public class ExcelReader {
return data; return data;
} }
public static List<Map<Integer, String>> noModelRead(String fileName) { public static List<Map<Integer, String>> noModelRead(String fileName) {
return noModelRead(fileName,1); return noModelRead(fileName, 1);
}
public static Map<String, Integer> readHeaderMap(String fileName, int headRowNumber) {
//读取所有excel表头
List<Map<Integer, String>> data = ExcelReader.noModelRead(fileName, headRowNumber);
Map<String, Integer> headerMap = new HashMap<>();
Map<Integer, String> headerData = data.get(0);
if (data != null && data.size() >= 2) {
for (Integer key :
headerData.keySet()) {
if (ObjectUtil.isEmpty(key)) {
continue;
}
String v = headerData.get(key);
if(ObjectUtil.isEmpty(v)){
continue;
}
headerMap.put(v, key);
}
//表头过少,需要重新读取
if (headerMap.size() <= 2) {
if (headRowNumber <= 1) {
log.error("文件[" + fileName + "],当前读取表头数[" + headerData.size() + "],当前headRowNumber=[" + headRowNumber + "],设置headRowNumber=3重新读取");
return readHeaderMap(fileName, 3);
} else {
return headerMap;
}
}
}
return headerMap;
} }
} }
...@@ -502,9 +502,9 @@ public class LiteOrderCache { ...@@ -502,9 +502,9 @@ public class LiteOrderCache {
} }
}else if (Strings.isNullOrEmpty(reelId) && !Strings.isNullOrEmpty(partNumber)){ }else if (Strings.isNullOrEmpty(reelId) && !Strings.isNullOrEmpty(partNumber)){
//PN //PN
pos=storagePosManager.findPartNumberInStorages(availableStorageIds, partNumber, excludePosIds, checkoutType); pos=storagePosManager.findPartNumberInStorages(availableStorageIds,"", partNumber, excludePosIds, checkoutType,orderItem.getAppendData());
} else if (Strings.isNullOrEmpty(reelId) && Strings.isNullOrEmpty(partNumber) && !Strings.isNullOrEmpty(mpn)){ } else if (Strings.isNullOrEmpty(reelId) && Strings.isNullOrEmpty(partNumber) && !Strings.isNullOrEmpty(mpn)){
pos=storagePosManager.findMpnInStorages(availableStorageIds, mpn, excludePosIds, checkoutType); pos=storagePosManager.findMpnInStorages(availableStorageIds, mpn, excludePosIds, checkoutType,orderItem.getAppendData());
} }
if (pos == null) { if (pos == null) {
// log.error("未找到可以出库的物料[" + partNumber + "]"); // log.error("未找到可以出库的物料[" + partNumber + "]");
......
...@@ -118,6 +118,21 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -118,6 +118,21 @@ public class DefaultOrderFileListener implements IOrderFileListener {
int numIndex = csvRead.getIndex("NUM", orderSetting.getNum()); int numIndex = csvRead.getIndex("NUM", orderSetting.getNum());
int mpnIndex = csvRead.getIndex("MPN", orderSetting.getMpn()); int mpnIndex = csvRead.getIndex("MPN", orderSetting.getMpn());
//附加字段读取
Map<String,Integer> appendIndexMap=new HashMap<>();
if(orderSetting.getAppendData()!=null&&orderSetting.getAppendData().size()>0){
for (String key :
orderSetting.getAppendData().keySet()) {
String value=orderSetting.getAppendData().get(key);
if(ObjectUtil.isNotEmpty(value)){
int index=csvRead.getIndex(value,key);
if(index>=0){
appendIndexMap.put(key,index);
}
}
}
}
int row = 1; int row = 1;
int newRowCount = 0; int newRowCount = 0;
int updateRowCount = 0; int updateRowCount = 0;
...@@ -183,6 +198,22 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -183,6 +198,22 @@ public class DefaultOrderFileListener implements IOrderFileListener {
item.setFeederInfo(feeder); item.setFeederInfo(feeder);
item.setRi(ri); item.setRi(ri);
item.setMpn(mpn); item.setMpn(mpn);
Map<String,String> appendValue=new HashMap<>();
if(appendIndexMap.size()>0){
for (String key :
appendIndexMap.keySet()) {
Integer index=appendIndexMap.get(key);
String value=lineValues[index];
if(ObjectUtil.isNotEmpty(value)){
appendValue.put(key,value);
}
}
if(appendValue.size()>0){
item.setAppendData(appendValue);
}
}
if(!itemMap.containsKey(so)){ if(!itemMap.containsKey(so)){
itemMap.put(so,new ArrayList<LiteOrderItem>()); itemMap.put(so,new ArrayList<LiteOrderItem>());
} }
...@@ -244,7 +275,20 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -244,7 +275,20 @@ public class DefaultOrderFileListener implements IOrderFileListener {
int feederIndex = headerMap.getOrDefault(orderSetting.getFeeder(), -1); int feederIndex = headerMap.getOrDefault(orderSetting.getFeeder(), -1);
int soIndex = headerMap.getOrDefault(orderSetting.getSo(), -1); int soIndex = headerMap.getOrDefault(orderSetting.getSo(), -1);
int numIndex = headerMap.getOrDefault(orderSetting.getNum(), -1); int numIndex = headerMap.getOrDefault(orderSetting.getNum(), -1);
//附加字段读取
Map<String,Integer> appendIndexMap=new HashMap<>();
if(orderSetting.getAppendData()!=null&&orderSetting.getAppendData().size()>0){
for (String key :
orderSetting.getAppendData().keySet()) {
String value=orderSetting.getAppendData().get(key);
if(ObjectUtil.isNotEmpty(value)){
int index=headerMap.getOrDefault(value,-1);
if(index>=0){
appendIndexMap.put(key,index);
}
}
}
}
for (int i = 1; i < data.size(); i++) { for (int i = 1; i < data.size(); i++) {
Map<Integer, String> lineValues = data.get(i); Map<Integer, String> lineValues = data.get(i);
String partNumber = lineValues.get(partNumberIndex); String partNumber = lineValues.get(partNumberIndex);
...@@ -317,6 +361,20 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -317,6 +361,20 @@ public class DefaultOrderFileListener implements IOrderFileListener {
if (!itemMap.containsKey(so)) { if (!itemMap.containsKey(so)) {
itemMap.put(so, new ArrayList<LiteOrderItem>()); itemMap.put(so, new ArrayList<LiteOrderItem>());
} }
Map<String,String> appendValue=new HashMap<>();
if(appendIndexMap.size()>0){
for (String key :
appendIndexMap.keySet()) {
Integer index=appendIndexMap.get(key);
String value=lineValues.get(index);
if(ObjectUtil.isNotEmpty(value)){
appendValue.put(key,value);
}
}
if(appendValue.size()>0){
item.setAppendData(appendValue);
}
}
itemMap.get(so).add(item); itemMap.get(so).add(item);
} }
} }
......
...@@ -17,6 +17,7 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode; ...@@ -17,6 +17,7 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.utils.CodeResolve; import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.util.MessageUtils; import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS; import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
...@@ -31,6 +32,7 @@ import com.neotel.smfcore.core.order.service.po.LiteOrderItem; ...@@ -31,6 +32,7 @@ import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.order.util.OrderFileWatch; import com.neotel.smfcore.core.order.util.OrderFileWatch;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.bean.MSDAppendInfo; import com.neotel.smfcore.core.system.bean.MSDAppendInfo;
import com.neotel.smfcore.core.system.bean.OrderSetting;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
...@@ -115,6 +117,9 @@ public class OrderController { ...@@ -115,6 +117,9 @@ public class OrderController {
TaskService taskService; TaskService taskService;
@Autowired @Autowired
private DataCache dataCache;
@Autowired
SmfApi smfApi; SmfApi smfApi;
// @ApiOperation("导出用户数据") // @ApiOperation("导出用户数据")
...@@ -304,6 +309,7 @@ public class OrderController { ...@@ -304,6 +309,7 @@ public class OrderController {
Locale locale = request.getLocale(); Locale locale = request.getLocale();
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.ri",locale,"RI"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.ri",locale,"RI")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.pn",locale,"PN"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.pn",locale,"PN")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.MPN",locale,"MPN")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.side",locale,"面别"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.side",locale,"面别")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.tableNo",locale,"台车号"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.tableNo",locale,"台车号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.feederInfo",locale,"站位信息"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.feederInfo",locale,"站位信息")));
...@@ -313,6 +319,16 @@ public class OrderController { ...@@ -313,6 +319,16 @@ public class OrderController {
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.outNum",locale,"已出数量"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.outNum",locale,"已出数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.exception",locale,"异常"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.exception",locale,"异常")));
//附加字段
OrderSetting orderSetting=dataCache.getOrderSetting();
if(orderSetting.getAppendData()!=null&&orderSetting.getAppendData().size()>0){
for (String key :
orderSetting.getAppendData().keySet()) {
String title=orderSetting.getAppendData().get(key);
header.add(Lists.newArrayList(title));
}
}
List<List<Object>> dataList = new ArrayList<>(); List<List<Object>> dataList = new ArrayList<>();
for (LiteOrderItem orderItem : liteOrder.getOrderItems()) { for (LiteOrderItem orderItem : liteOrder.getOrderItems()) {
...@@ -320,6 +336,7 @@ public class OrderController { ...@@ -320,6 +336,7 @@ public class OrderController {
List<Object> data = new ArrayList<>(); List<Object> data = new ArrayList<>();
data.add(orderItem.getRi()); data.add(orderItem.getRi());
data.add(orderItem.getPn()); data.add(orderItem.getPn());
data.add(orderItem.getMpn());
data.add(orderItem.getSide()); data.add(orderItem.getSide());
data.add(orderItem.getTableNo()); data.add(orderItem.getTableNo());
data.add(orderItem.getFeederInfo()); data.add(orderItem.getFeederInfo());
...@@ -329,6 +346,15 @@ public class OrderController { ...@@ -329,6 +346,15 @@ public class OrderController {
data.add(orderItem.getOutNum()); data.add(orderItem.getOutNum());
String exception=orderItem.getOutNum()<orderItem.getNeedNum()?MessageUtils.getText("smfcore.order.yes",locale,"是"):""; String exception=orderItem.getOutNum()<orderItem.getNeedNum()?MessageUtils.getText("smfcore.order.yes",locale,"是"):"";
data.add(exception); data.add(exception);
//附加字段
if(orderSetting.getAppendData()!=null&&orderSetting.getAppendData().size()>0){
for (String key :
orderSetting.getAppendData().keySet()) {
String title=orderSetting.getAppendData().get(key);
String v=orderItem.getAppendData().getOrDefault(key,"");
data.add(v);
}
}
dataList.add(data); dataList.add(data);
} }
FileUtil.downloadExcel(liteOrder.getOrderNo(), header,dataList,response); FileUtil.downloadExcel(liteOrder.getOrderNo(), header,dataList,response);
......
...@@ -5,6 +5,9 @@ import lombok.Getter; ...@@ -5,6 +5,9 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.annotation.Transient; import org.springframework.data.annotation.Transient;
import java.util.HashMap;
import java.util.Map;
@Getter @Getter
@Setter @Setter
public class OrderItemDto { public class OrderItemDto {
...@@ -53,4 +56,7 @@ public class OrderItemDto { ...@@ -53,4 +56,7 @@ public class OrderItemDto {
@ApiModelProperty("制造商物料编号") @ApiModelProperty("制造商物料编号")
private String mpn = ""; private String mpn = "";
@ApiModelProperty("自定义的附加字段,key=字段名,value=值")
public Map<String,String> appendData = new HashMap<>();
} }
...@@ -7,6 +7,9 @@ import org.springframework.data.mongodb.core.index.Indexed; ...@@ -7,6 +7,9 @@ import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@Data @Data
@Document @Document
public class LiteOrderItem extends BasePo implements Serializable ,Comparable<LiteOrderItem> { public class LiteOrderItem extends BasePo implements Serializable ,Comparable<LiteOrderItem> {
...@@ -88,6 +91,12 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li ...@@ -88,6 +91,12 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
*/ */
private String mpn = ""; private String mpn = "";
/**
* 自定义的附加字段,key=字段名,value=值
*/
public Map<String,String> appendData = new HashMap<>();
/** /**
* 出库是否满足要求,已出库数量大于需求数量 * 出库是否满足要求,已出库数量大于需求数量
*/ */
......
...@@ -34,6 +34,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> { ...@@ -34,6 +34,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
StoragePos findPartNumberInStorages(List<String> storageIdList, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType); StoragePos findPartNumberInStorages(List<String> storageIdList, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType);
StoragePos findPartNumberInStorages(List<String> storageIdList,String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType); StoragePos findPartNumberInStorages(List<String> storageIdList,String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType);
StoragePos findPartNumberInStorages(List<String> storageIdList,String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType,Map<String,String> appendDate);
List<StoragePos> findByQuery(Query query, Pageable pageable); List<StoragePos> findByQuery(Query query, Pageable pageable);
...@@ -81,7 +82,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> { ...@@ -81,7 +82,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
List<StoragePos> findPosByIdList(List<String> idList); List<StoragePos> findPosByIdList(List<String> idList);
StoragePos findMpnInStorages(List<String> availableStorageIds, String mpn, Collection<String> excludePosIds, CHECKOUT_TYPE checkoutType); StoragePos findMpnInStorages(List<String> availableStorageIds, String mpn, Collection<String> excludePosIds, CHECKOUT_TYPE checkoutType,Map<String,String> appendData);
List<StoragePos> findExpiredOrSluggishBarcode(Date date,int type); List<StoragePos> findExpiredOrSluggishBarcode(Date date,int type);
} }
...@@ -6,6 +6,7 @@ import com.google.common.collect.Lists; ...@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.PointUtil; import com.neotel.smfcore.common.utils.PointUtil;
import com.neotel.smfcore.core.barcode.bean.PlateSizeBean; import com.neotel.smfcore.core.barcode.bean.PlateSizeBean;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
...@@ -28,6 +29,7 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -28,6 +29,7 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
...@@ -260,7 +262,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -260,7 +262,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return findPartNumberInStorages(storageIdList,"",pn,excludePosIds,checkOutType); return findPartNumberInStorages(storageIdList,"",pn,excludePosIds,checkOutType);
} }
@Override @Override
public StoragePos findPartNumberInStorages(List<String> storageIdList,String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType) { public StoragePos findPartNumberInStorages(List<String> storageIdList,String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType,Map<String, String> appendDate) {
Criteria c = Criteria.where("barcode.partNumber").is(pn) Criteria c = Criteria.where("barcode.partNumber").is(pn)
.and("id").nin(excludePosIds) .and("id").nin(excludePosIds)
.and("enabled").is(true)//可用 .and("enabled").is(true)//可用
...@@ -271,6 +273,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -271,6 +273,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
if (ObjectUtil.isNotEmpty(labelId)) { if (ObjectUtil.isNotEmpty(labelId)) {
c.and("labelId").is(labelId); c.and("labelId").is(labelId);
} }
c=addAppendData(c,appendDate);
Query q = new Query(c); Query q = new Query(c);
Sort sort = getSortByCheckOutType(checkOutType); Sort sort = getSortByCheckOutType(checkOutType);
q.with(sort); q.with(sort);
...@@ -283,6 +286,11 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -283,6 +286,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return pos; return pos;
} }
@Override
public StoragePos findPartNumberInStorages(List<String> storageIdList, String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType) {
return findPartNumberInStorages(storageIdList,labelId,pn,excludePosIds,checkOutType,new HashMap<>());
}
/** /**
* 根据出库方式获取不同的 Sort * 根据出库方式获取不同的 Sort
*/ */
...@@ -677,7 +685,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -677,7 +685,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
@Override @Override
public StoragePos findMpnInStorages(List<String> storageIdList, String mpn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType) { public StoragePos findMpnInStorages(List<String> storageIdList, String mpn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType,Map<String,String> appendData) {
Criteria c = Criteria.where("barcode.mpn").is(mpn) Criteria c = Criteria.where("barcode.mpn").is(mpn)
.and("id").nin(excludePosIds) .and("id").nin(excludePosIds)
.and("enabled").is(true)//可用 .and("enabled").is(true)//可用
...@@ -685,6 +693,8 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -685,6 +693,8 @@ public class StoragePosManagerImpl implements IStoragePosManager {
if (storageIdList != null) { if (storageIdList != null) {
c = c.and("storageId").in(storageIdList); c = c.and("storageId").in(storageIdList);
} }
c = addAppendData(c, appendData);
Query q = new Query(c); Query q = new Query(c);
Sort sort = getSortByCheckOutType(checkOutType); Sort sort = getSortByCheckOutType(checkOutType);
q.with(sort); q.with(sort);
...@@ -697,6 +707,40 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -697,6 +707,40 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return pos; return pos;
} }
private Criteria addAppendData(Criteria c, Map<String,String> appendData){
try {
if(appendData!=null&&appendData.size()>0){
for (String key :
appendData.keySet()) {
String value=appendData.get(key);
if(ObjectUtil.isNotEmpty(key)&&ObjectUtil.isNotEmpty(value)) {
key=key.replace("#",".");
//如果是过期日期
if (key.equals("barcode.expireDate") || key.equals("barcode.produceDate")) { //如果是生产日期
//把value转换为时间
// DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = DateUtil.toDate(value);
if(date!=null) {
c.and(key).is(date);
}
} catch (ParseException e) {
e.printStackTrace();
continue;//转换出错直接continue;
}
} else {
c.and(key).is(value);
}
}
}
}
}catch (Exception ex){
log.error("addAppendData 处理出错:"+appendData);
}
return c;
}
@Override @Override
public List<StoragePos> findExpiredOrSluggishBarcode(Date date, int type) { public List<StoragePos> findExpiredOrSluggishBarcode(Date date, int type) {
Query q = new Query(); Query q = new Query();
......
...@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@Data @Data
public class OrderSetting implements Serializable { public class OrderSetting implements Serializable {
...@@ -28,6 +30,11 @@ public class OrderSetting implements Serializable { ...@@ -28,6 +30,11 @@ public class OrderSetting implements Serializable {
public String mpn="MPN"; public String mpn="MPN";
/** /**
* 自定义的附加字段,key=字段名,value=表头名称
*/
public Map<String,String> appendData = new HashMap<>();
/**
* 是否显示料架亮灯方式 * 是否显示料架亮灯方式
*/ */
@ApiModelProperty("是否显示料架亮灯方式 ture=显示") @ApiModelProperty("是否显示料架亮灯方式 ture=显示")
......
...@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.system.rest; ...@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.system.rest;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.csv.CsvReader; import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.common.excel.ExcelReader;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants; import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.DateUtil; import com.neotel.smfcore.common.utils.DateUtil;
...@@ -187,6 +188,19 @@ public class SettingsController { ...@@ -187,6 +188,19 @@ public class SettingsController {
} }
} }
if(orderSetting.getAppendData()!=null&&orderSetting.getAppendData().size()>0) {
Map<String, String> appendData = new HashMap<>();
for (String key :
orderSetting.getAppendData().keySet()) {
String value = orderSetting.getAppendData().get(key);
if (ObjectUtil.isNotEmpty(key) && ObjectUtil.isNotEmpty(value)) {
String nKey = key.replace(".", "#");
appendData.put(nKey, value);
}
}
orderSetting.setAppendData(appendData);
}
dataCache.updateCache(Constants.CACHE_OrderSetting, orderSetting); dataCache.updateCache(Constants.CACHE_OrderSetting, orderSetting);
log.info("更改工单设置:"+Constants.CACHE_OrderSetting+"=" + orderSetting.toString()); log.info("更改工单设置:"+Constants.CACHE_OrderSetting+"=" + orderSetting.toString());
return ResultBean.newOkResult("保存成功"); return ResultBean.newOkResult("保存成功");
...@@ -247,22 +261,32 @@ public class SettingsController { ...@@ -247,22 +261,32 @@ public class SettingsController {
@AnonymousAccess @AnonymousAccess
public ResultBean uploadOrderModel(@RequestParam MultipartFile orderFile) { public ResultBean uploadOrderModel(@RequestParam MultipartFile orderFile) {
String image = "csv"; String csv = "csv";
String excel = "xlsx";
String fileType = FileUtil.getExtensionName(orderFile.getOriginalFilename()); String fileType = FileUtil.getExtensionName(orderFile.getOriginalFilename());
String fileName = FileUtil.getFileNameNoEx(orderFile.getOriginalFilename()); String fileName = FileUtil.getFileNameNoEx(orderFile.getOriginalFilename());
if (fileType != null && !image.contains(fileType)) { if (fileType != null && (!csv.contains(fileType)) && (!excel.contains(fileType))) {
throw new ValidateException("smfcore.feleFormatError", "文件格式错误!, 仅支持{0}格式", new String[]{image}); throw new ValidateException("smfcore.feleFormatError", "文件格式错误!, 仅支持{0}格式", new String[]{csv + "," + excel});
} }
File folder = new File(properties.getPath(), "pos"); File folder = new File(properties.getPath(), "pos");
File localFile = FileUtil.upload(orderFile, folder.getAbsolutePath()); File localFile = FileUtil.upload(orderFile, folder.getAbsolutePath());
try { try {
CsvReader csvRead = CsvReader.newReader(localFile.getAbsolutePath(),"","" ); if (fileType.equals(csv)) {
String[] headers=csvRead.getHeaders(); CsvReader csvRead = CsvReader.newReader(localFile.getAbsolutePath(), "", "");
return ResultBean.newOkResult(headers); String[] headers = csvRead.getHeaders();
return ResultBean.newOkResult(headers);
} else if (fileType.equals(excel)) {
//读取所有excel表头
Map<String, Integer> headerData = ExcelReader.readHeaderMap(localFile.getAbsolutePath(), 1);
String[] headerArray = new String[headerData.size()];
headerData.keySet().toArray(headerArray);
return ResultBean.newOkResult(headerArray);
}
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
return ResultBean.newOkResult("");
} }
@ApiOperation("获取版本号") @ApiOperation("获取版本号")
@GetMapping("/version") @GetMapping("/version")
......
...@@ -312,6 +312,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4 ...@@ -312,6 +312,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4
smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4 smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4
smfcore.order.ri=RI smfcore.order.ri=RI
smfcore.order.pn=PN smfcore.order.pn=PN
smfcore.order.MPN=MPN
smfcore.order.side=\u9762\u522B smfcore.order.side=\u9762\u522B
smfcore.order.tableNo=\u53F0\u8F66\u53F7 smfcore.order.tableNo=\u53F0\u8F66\u53F7
smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F
......
...@@ -311,6 +311,7 @@ smfcore.humiture.createDate=Create Time ...@@ -311,6 +311,7 @@ smfcore.humiture.createDate=Create Time
smfcore.humiture.updateDate=Update Time smfcore.humiture.updateDate=Update Time
smfcore.order.ri=RI smfcore.order.ri=RI
smfcore.order.pn=PN smfcore.order.pn=PN
smfcore.order.MPN=MPN
smfcore.order.side=Face Type smfcore.order.side=Face Type
smfcore.order.tableNo=Trolley Number smfcore.order.tableNo=Trolley Number
smfcore.order.feederInfo=Station Information smfcore.order.feederInfo=Station Information
......
...@@ -308,6 +308,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4 ...@@ -308,6 +308,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4
smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4 smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4
smfcore.order.ri=RI smfcore.order.ri=RI
smfcore.order.pn=PN smfcore.order.pn=PN
smfcore.order.MPN=MPN
smfcore.order.side=\u3068\u5225\u308C\u308B smfcore.order.side=\u3068\u5225\u308C\u308B
smfcore.order.tableNo=\u53F0\u8ECA\u756A\u53F7 smfcore.order.tableNo=\u53F0\u8ECA\u756A\u53F7
smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F
......
...@@ -308,6 +308,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4 ...@@ -308,6 +308,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4
smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4 smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4
smfcore.order.ri=RI smfcore.order.ri=RI
smfcore.order.pn=PN smfcore.order.pn=PN
smfcore.order.MPN=MPN
smfcore.order.side=\u9762\u522B smfcore.order.side=\u9762\u522B
smfcore.order.tableNo=\u53F0\u8F66\u53F7 smfcore.order.tableNo=\u53F0\u8F66\u53F7
smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F
......
...@@ -309,6 +309,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4 ...@@ -309,6 +309,7 @@ smfcore.humiture.createDate=\u521B\u5EFA\u65F6\u95F4
smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4 smfcore.humiture.updateDate=\u66F4\u65B0\u65F6\u95F4
smfcore.order.ri=RI smfcore.order.ri=RI
smfcore.order.pn=PN smfcore.order.pn=PN
smfcore.order.MPN=MPN
smfcore.order.side=\u9762\u5225 smfcore.order.side=\u9762\u5225
smfcore.order.tableNo=\u53F0\u8ECA\u865F smfcore.order.tableNo=\u53F0\u8ECA\u865F
smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F smfcore.order.feederInfo=\u7AD9\u4F4D\u4FE1\u606F
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!