Browse Source

opt: 优化库存查询

test-20240527
龚宝雄 12 months ago
parent
commit
ed33d706ea
  1. 1
      nlsso-server/src/main/java/org/nl/wms/database/eas/controller/EasOutInBillController.java
  2. 4
      nlsso-server/src/main/java/org/nl/wms/database/eas/dao/xml/EasOutInBillDetailMapper.xml
  3. 70
      nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillDetailServiceImpl.java
  4. 13
      nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillServiceImpl.java
  5. 7
      nlsso-server/src/main/java/org/nl/wms/schedule/EasBillSchedule.java
  6. 2
      nlsso-server/src/main/resources/config/application-dev.yml
  7. 18
      nlsso-server/src/main/resources/config/application-devLocal.yml
  8. 4
      nlsso-server/src/main/resources/config/application.yml
  9. 2
      nlsso-server/src/test/java/org/nl/test/EventTest.java

1
nlsso-server/src/main/java/org/nl/wms/database/eas/controller/EasOutInBillController.java

@ -50,6 +50,7 @@ public class EasOutInBillController {
*/ */
@PostMapping("/audit") @PostMapping("/audit")
@Log("审核") @Log("审核")
@SaIgnore
//@SaCheckPermission("@el.check(EasOutInBill:edit')") //@SaCheckPermission("@el.check(EasOutInBill:edit')")
public CommonResult audit(@RequestBody Set<String> ids) { public CommonResult audit(@RequestBody Set<String> ids) {
if (ids == null || ids.isEmpty()) { if (ids == null || ids.isEmpty()) {

4
nlsso-server/src/main/java/org/nl/wms/database/eas/dao/xml/EasOutInBillDetailMapper.xml

@ -7,13 +7,13 @@
FROM FROM
EAS_NOBLE.V_UC_OUTINBILL EAS_NOBLE.V_UC_OUTINBILL
WHERE DJZT = '提交' WHERE DJZT = '提交'
AND TO_DATE(cjsj, 'YYYY-MM-DD') >= TRUNC(SYSDATE) - INTERVAL '90' DAY(3) AND TO_DATE(cjsj, 'YYYY-MM-DD') >= TRUNC(SYSDATE) - INTERVAL '91' DAY(3)
</select> </select>
<select id="selectSrmPageWithInventory" resultType="org.nl.wms.database.eas.dao.EasOutInBillDetail"> <select id="selectSrmPageWithInventory" resultType="org.nl.wms.database.eas.dao.EasOutInBillDetail">
SELECT SELECT
* *
FROM V_WMS_INBILL_THIRD FROM V_WMS_INBILL_THIRD
WHERE DJZT='未入库' AND CJSJ >= DATE_SUB(CURDATE(), INTERVAL 90 DAY) WHERE DJZT='未入库' AND CJSJ >= DATE_SUB(CURDATE(), INTERVAL 91 DAY)
</select> </select>
<select id="selectByConditions" resultType="org.nl.wms.database.eas.dao.InventoryInfo"> <select id="selectByConditions" resultType="org.nl.wms.database.eas.dao.InventoryInfo">
SELECT SELECT

70
nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillDetailServiceImpl.java

@ -53,35 +53,35 @@ public class EasOutInBillDetailServiceImpl extends ServiceImpl<EasOutInBillDetai
.eq(ObjectUtil.isNotEmpty(params), EasOutInBillDetail::getDjid, params.getDjid()) .eq(ObjectUtil.isNotEmpty(params), EasOutInBillDetail::getDjid, params.getDjid())
); );
List<EasOutInBillDetail> easOutInBillDetailList = result.getRecords(); List<EasOutInBillDetail> easOutInBillDetailList = result.getRecords();
// List<InventoryInfo> inventoryInfoList = queryInventoryInfoList(easOutInBillDetailList); List<InventoryInfo> inventoryInfoList = queryInventoryInfoList(easOutInBillDetailList);
// easOutInBillDetailList.forEach(bill -> { easOutInBillDetailList.forEach(bill -> {
// //查询库存信息 //查询库存信息
// List<InventoryInfo> matchedInventory = inventoryInfoList.stream() List<InventoryInfo> matchedInventory = inventoryInfoList.stream()
// .filter(inventory -> { .filter(inventory -> {
// boolean isMatched = true; boolean isMatched = true;
// if (bill.getZzbm() != null && !bill.getZzbm().isEmpty()) { if (bill.getZzbm() != null && !bill.getZzbm().isEmpty()) {
// isMatched &= Objects.equals(inventory.getZzbm(), bill.getZzbm()); isMatched &= Objects.equals(inventory.getZzbm(), bill.getZzbm());
// } }
// if (bill.getCkbm() != null && !bill.getCkbm().isEmpty()) { if (bill.getCkbm() != null && !bill.getCkbm().isEmpty()) {
// isMatched &= Objects.equals(inventory.getCkbm(), bill.getCkbm()); isMatched &= Objects.equals(inventory.getCkbm(), bill.getCkbm());
// } }
// if (bill.getWlbm() != null && !bill.getWlbm().isEmpty()) { if (bill.getWlbm() != null && !bill.getWlbm().isEmpty()) {
// isMatched &= Objects.equals(inventory.getWlbm(), bill.getWlbm()); isMatched &= Objects.equals(inventory.getWlbm(), bill.getWlbm());
// } }
// // 批次 // 批次
// if (bill.getPc() != null && !bill.getPc().isEmpty()) { if (bill.getPc() != null && !bill.getPc().isEmpty()) {
// isMatched &= Objects.equals(inventory.getPc(), bill.getPc()); isMatched &= Objects.equals(inventory.getPc(), bill.getPc());
// } }
// // 跟踪号 // 跟踪号
// if (bill.getTrackno() != null && !bill.getTrackno().isEmpty()) { if (bill.getTrackno() != null && !bill.getTrackno().isEmpty()) {
// isMatched &= Objects.equals(inventory.getTrackno(), bill.getTrackno()); isMatched &= Objects.equals(inventory.getTrackno(), bill.getTrackno());
// } }
// if (bill.getKwbm() != null && !bill.getKwbm().isEmpty()) { if (bill.getKwbm() != null && !bill.getKwbm().isEmpty()) {
// isMatched &= Objects.equals(inventory.getKwbm(), bill.getKwbm()); isMatched &= Objects.equals(inventory.getKwbm(), bill.getKwbm());
// } }
// return isMatched; return isMatched;
// }) })
// .collect(Collectors.toList()); .collect(Collectors.toList());
// List<InventoryInfo> matchedInventory = inventoryInfoList.stream() // List<InventoryInfo> matchedInventory = inventoryInfoList.stream()
// .filter(inventory -> Objects.equals(inventory.getZzbm(), bill.getZzbm()) // .filter(inventory -> Objects.equals(inventory.getZzbm(), bill.getZzbm())
// && Objects.equals(inventory.getCkbm(), bill.getCkbm()) // && Objects.equals(inventory.getCkbm(), bill.getCkbm())
@ -91,12 +91,12 @@ public class EasOutInBillDetailServiceImpl extends ServiceImpl<EasOutInBillDetai
// && Objects.equals(inventory.getKwbm(), bill.getKwbm())) // && Objects.equals(inventory.getKwbm(), bill.getKwbm()))
// .collect(Collectors.toList()); // .collect(Collectors.toList());
//将库存数量赋值给单据 //将库存数量赋值给单据
// Optional<InventoryInfo> minKcsl = matchedInventory.stream() Optional<InventoryInfo> minKcsl = matchedInventory.stream()
// .min(Comparator.comparing(InventoryInfo::getKcsl)); .min(Comparator.comparing(InventoryInfo::getKcsl));
// minKcsl.ifPresent(m -> { minKcsl.ifPresent(m -> {
// bill.setKcsl(m.getKcsl()); bill.setKcsl(m.getKcsl());
// }); });
// }); });
result.setRecords(easOutInBillDetailList); result.setRecords(easOutInBillDetailList);
return CommonPage.getPage(result); return CommonPage.getPage(result);
} }

13
nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillServiceImpl.java

@ -248,9 +248,12 @@ public class EasOutInBillServiceImpl extends ServiceImpl<EasOutInBillMapper, Eas
List<EasOutInBillDto> easOutInBillList = easOutInBillMapper.queryBillList(ids); List<EasOutInBillDto> easOutInBillList = easOutInBillMapper.queryBillList(ids);
//所有明细表 //所有明细表
List<EasOutInBillDetailDto> easOutInBillDetailList = easOutInBillDetailMapper.queryBillDetailList(ids); List<EasOutInBillDetailDto> easOutInBillDetailList = easOutInBillDetailMapper.queryBillDetailList(ids);
long count= easOutInBillDetailList.stream().filter(r->r.getQty().compareTo(BigDecimal.ZERO)==0).count();
if(count==easOutInBillDetailList.size()){
throw new BadRequestException("该单据无任何出入库操作,请检查");
}
//报文组合 //报文组合
if (CollectionUtils.isNotEmpty(easOutInBillList)) { if (CollectionUtils.isNotEmpty(easOutInBillList)) {
easOutInBillList.forEach(b -> { easOutInBillList.forEach(b -> {
List<EasOutInBillDetailDto> billDetails = easOutInBillDetailList.stream().filter(d -> List<EasOutInBillDetailDto> billDetails = easOutInBillDetailList.stream().filter(d ->
Objects.equals(d.getDjid(), b.getBillId())).collect(Collectors.toList()); Objects.equals(d.getDjid(), b.getBillId())).collect(Collectors.toList());
@ -284,8 +287,8 @@ public class EasOutInBillServiceImpl extends ServiceImpl<EasOutInBillMapper, Eas
try { try {
EasData easData = new EasData(); EasData easData = new EasData();
easData.setData(bill); easData.setData(bill);
// String billJson = com.alibaba.fastjson.JSON.toJSONString(easData, SerializerFeature.WriteMapNullValue); String billJson = com.alibaba.fastjson.JSON.toJSONString(easData, SerializerFeature.WriteMapNullValue);
// wmsToEasService.sendWebService(billJson); wmsToEasService.sendWebService(billJson);
easOutInBillMapper.update(null, new UpdateWrapper<EasOutInBill>().set("djzt", "审核").set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.format(DateUtil.beginOfDay(DateUtil.date()), "yyyy-MM-dd")).eq("djid", bill.getBillId())); easOutInBillMapper.update(null, new UpdateWrapper<EasOutInBill>().set("djzt", "审核").set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.format(DateUtil.beginOfDay(DateUtil.date()), "yyyy-MM-dd")).eq("djid", bill.getBillId()));
} catch (Exception e) { } catch (Exception e) {
log.error("推送Eas单据失败,单据号为:[" + bill.getBillId() + "]异常原因:" + e.toString()); log.error("推送Eas单据失败,单据号为:[" + bill.getBillId() + "]异常原因:" + e.toString());
@ -302,8 +305,8 @@ public class EasOutInBillServiceImpl extends ServiceImpl<EasOutInBillMapper, Eas
public void syncSrmAuditBills(List<EasOutInBillDto> bills) { public void syncSrmAuditBills(List<EasOutInBillDto> bills) {
for (EasOutInBillDto bill : bills) { for (EasOutInBillDto bill : bills) {
try { try {
// String billJson = com.alibaba.fastjson.JSON.toJSONString(bill, SerializerFeature.WriteMapNullValue); String billJson = com.alibaba.fastjson.JSON.toJSONString(bill, SerializerFeature.WriteMapNullValue);
// wmsToSrmService.sendWebPostData(billJson); wmsToSrmService.sendWebPostData(billJson);
easOutInBillMapper.update(null, new UpdateWrapper<EasOutInBill>().set("djzt", "审核").set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.format(DateUtil.beginOfDay(DateUtil.date()), "yyyy-MM-dd")).eq("djid", bill.getBillId())); easOutInBillMapper.update(null, new UpdateWrapper<EasOutInBill>().set("djzt", "审核").set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.format(DateUtil.beginOfDay(DateUtil.date()), "yyyy-MM-dd")).eq("djid", bill.getBillId()));
} catch (Exception e) { } catch (Exception e) {
log.error("推送Eas单据失败,单据号为:[" + bill.getBillId() + "]异常原因:" + e.toString()); log.error("推送Eas单据失败,单据号为:[" + bill.getBillId() + "]异常原因:" + e.toString());

7
nlsso-server/src/main/java/org/nl/wms/schedule/EasBillSchedule.java

@ -53,7 +53,7 @@ public class EasBillSchedule {
* eas单据数据同步 * eas单据数据同步
*/ */
@Async("taskExecutor") @Async("taskExecutor")
//@Scheduled(cron = "0/30 * * * * *") @Scheduled(cron = "0/30 * * * * *")
public void getEasOutInBills() { public void getEasOutInBills() {
// 获取eas视图查询未提交的单据 // 获取eas视图查询未提交的单据
List<EasOutInBillDetail> easOutInBillDetails = easOutInBillDetailMapper.selectPageWithInventory(); List<EasOutInBillDetail> easOutInBillDetails = easOutInBillDetailMapper.selectPageWithInventory();
@ -129,11 +129,14 @@ public class EasBillSchedule {
LambdaQueryWrapper<EasOutInBill> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EasOutInBill> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(EasOutInBill::getCjsj, days); queryWrapper.lt(EasOutInBill::getCjsj, days);
List<EasOutInBill> oldBills = easOutInBillService.list(queryWrapper); List<EasOutInBill> oldBills = easOutInBillService.list(queryWrapper);
if(CollectionUtils.isNotEmpty(oldBills))
{
Set<String> ids = oldBills.stream().map(EasOutInBill::getDjid).collect(Collectors.toSet()); Set<String> ids = oldBills.stream().map(EasOutInBill::getDjid).collect(Collectors.toSet());
easOutInBillDetailMapper.deleteInfo(days);
if (CollectionUtils.isNotEmpty(ids)) { if (CollectionUtils.isNotEmpty(ids)) {
easOutInBillDetailMapper.deleteDetail(ids); easOutInBillDetailMapper.deleteDetail(ids);
} }
easOutInBillDetailMapper.deleteInfo(days);
}
} }
} }

2
nlsso-server/src/main/resources/config/application-dev.yml

@ -1,5 +1,5 @@
server: server:
port: 8012 port: 8011
#配置数据源 #配置数据源
spring: spring:
autoconfigure: autoconfigure:

18
nlsso-server/src/main/resources/config/application-devLocal.yml

@ -1,5 +1,5 @@
server: server:
port: 8012 port: 8011
#配置数据源 #配置数据源
spring: spring:
autoconfigure: autoconfigure:
@ -20,18 +20,22 @@ spring:
username: ${DB_USER:wms_third} username: ${DB_USER:wms_third}
password: ${DB_PWD:NOBLElift@!#wms} password: ${DB_PWD:NOBLElift@!#wms}
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
# driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.10.188.30}:${DB_PORT:3306}/${DB_NAME:nuoli_v1.0}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# username: ${DB_USER:wms_third}
# password: ${DB_PWD:NOBLElift@!#wms}
# type: com.alibaba.druid.pool.DruidDataSource
oracle_eas: oracle_eas:
driver-class-name: oracle.jdbc.OracleDriver driver-class-name: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@localhost:1521:orcl url: jdbc:oracle:thin:@localhost:1521:orcl
username: ${DB_USER:user1} username: ${DB_USER:user1}
password: ${DB_PWD:Noble12319} password: ${DB_PWD:Noble12319}
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
sqlserver: # driver-class-name: oracle.jdbc.OracleDriver
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver # url: jdbc:oracle:thin:@192.168.100.97:1521:orcl
url: jdbc:sqlserver://10.93.41.2\WINCC;DatabaseName=马钢_RH # username: ${DB_USER:stuser}
username: ${DB_USER:sa} # password: ${DB_PWD:stuser123}
password: ${DB_PWD:123} # type: com.alibaba.druid.pool.DruidDataSource
type: com.alibaba.druid.pool.DruidDataSource
redis: redis:
#数据库索引 #数据库索引
host: ${REDIS_HOST:127.0.0.1} host: ${REDIS_HOST:127.0.0.1}

4
nlsso-server/src/main/resources/config/application.yml

@ -4,7 +4,7 @@ server:
relaxed-path-chars: [ '|','{','}','[',']' ] #字符问题: https://blog.csdn.net/weixin_41996632/article/details/90715118 relaxed-path-chars: [ '|','{','}','[',']' ] #字符问题: https://blog.csdn.net/weixin_41996632/article/details/90715118
spring: spring:
profiles: profiles:
active: dev active: devLocal
datasource: datasource:
druid: druid:
initial-size: 5 #初始化时建立物理连接的个数 initial-size: 5 #初始化时建立物理连接的个数
@ -205,7 +205,7 @@ jetcache:
easConfig: easConfig:
host: http://192.168.100.100:8080//ormrpc/services/ host: http://192.168.100.100:8080//ormrpc/services/
user: user user: user
password: Noble123!9 password: NOBLE123!9
datacenter: test datacenter: test
wsdlService: WSNLMESFacade wsdlService: WSNLMESFacade
operationName: dealTask operationName: dealTask

2
nlsso-server/src/test/java/org/nl/test/EventTest.java

@ -64,7 +64,7 @@ public class EventTest {
public void webServiceTest() { public void webServiceTest() {
String http="http://188.188.5.18:6888/ormrpc/services/"; String http="http://188.188.5.18:6888/ormrpc/services/";
String user = "user"; //用户 String user = "user"; //用户
String password = "noble123666"; //密码 String password = "NOBLE123666"; //密码
String datacenter = "cs"; //数据中心 String datacenter = "cs"; //数据中心
String wsdlservice = "WSNLMESFacade"; //服务 String wsdlservice = "WSNLMESFacade"; //服务
String operationName = "dealTask"; //方法 String operationName = "dealTask"; //方法

Loading…
Cancel
Save