add:日库存统计:todu:添加定时任务跟页面;rev:cp缺少stor_id
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package org.nl.wms.masterdata_manage.storage.controller.dailyStructivt;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.IStIvtStructivtDailyService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dto.DailyStructivtQuery;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dto.SectattrQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 日库存统计表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-09-18
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("api/structivtDaily")
|
||||
@SaIgnore
|
||||
public class StIvtStructivtDailyController {
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructivtDailyService stIvtStructivtDailyService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询日库区")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> query(DailyStructivtQuery query, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(stIvtStructivtDailyService.page(page.build(),query.build())),HttpStatus.OK);
|
||||
}
|
||||
@GetMapping("/sync")
|
||||
@Log("同步日库区")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> sync(String[] structivts){
|
||||
stIvtStructivtDailyService.dailyStructivt(structivts);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package org.nl.wms.masterdata_manage.storage.service.dailyStructivt;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.StIvtStructivtDaily;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 日库存统计表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-09-18
|
||||
*/
|
||||
public interface IStIvtStructivtDailyService extends IService<StIvtStructivtDaily> {
|
||||
|
||||
/**
|
||||
* 统计日常数据
|
||||
*/
|
||||
void dailyStructivt(String...structivts);
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 日库存统计表
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-09-18
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("st_ivt_structivt_daily")
|
||||
public class StIvtStructivtDaily implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 库存记录标识
|
||||
*/
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 仓库标识
|
||||
*/
|
||||
private String stor_id;
|
||||
|
||||
/**
|
||||
* 仓库表
|
||||
*/
|
||||
private String table_name;
|
||||
|
||||
/**
|
||||
* 车间标识
|
||||
*/
|
||||
private String product_area;
|
||||
|
||||
/**
|
||||
* 货位集合
|
||||
*/
|
||||
private String struct_code;
|
||||
|
||||
/**
|
||||
* 计量单位标识
|
||||
*/
|
||||
private String qty_unit_id;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 物料标识
|
||||
*/
|
||||
private String material_id;
|
||||
|
||||
/**
|
||||
* 可用数
|
||||
*/
|
||||
private BigDecimal canuse_qty;
|
||||
|
||||
/**
|
||||
* 冻结数
|
||||
*/
|
||||
private BigDecimal frozen_qty;
|
||||
|
||||
/**
|
||||
* 库存数
|
||||
*/
|
||||
private BigDecimal ivt_qty;
|
||||
|
||||
/**
|
||||
* 待入数
|
||||
*/
|
||||
private BigDecimal warehousing_qty;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.StIvtStructivtDaily;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 日库存统计表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-09-18
|
||||
*/
|
||||
public interface StIvtStructivtDailyMapper extends BaseMapper<StIvtStructivtDaily> {
|
||||
|
||||
@Select("select #{table} as table_name,'A1' as product_area, UUID_SHORT() id,material_id,sum(canuse_qty) canuse_qty ,sum(frozen_qty) frozen_qty,sum(ivt_qty) ivt_qty,sum(warehousing_qty) warehousing_qty,GROUP_CONCAT(struct_code) struct_code,stor_id,qty_unit_id,CURDATE() create_time from ${table} GROUP BY material_id")
|
||||
List<Map> selectStructivt(@Param("table") String table);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.mapper.StIvtStructivtDailyMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.common.domain.query.QParam;
|
||||
import org.nl.common.enums.QueryTEnum;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.StIvtStructivtDaily;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/5/14 17:13
|
||||
*/
|
||||
@Data
|
||||
public class DailyStructivtQuery extends BaseQuery<StIvtStructivtDaily> {
|
||||
|
||||
private String is_materialstore;
|
||||
private String is_reversed;
|
||||
private String is_attachment;
|
||||
private String is_productstore;
|
||||
private String is_semi_finished;
|
||||
private String is_virtualstore;
|
||||
private String sect_id;
|
||||
private String struct_code;
|
||||
private String lock_type;
|
||||
private Boolean is_used;
|
||||
private Boolean emptyvehicle;
|
||||
private Boolean is_emptyvehicle;
|
||||
private String blurry;
|
||||
|
||||
@Override
|
||||
public void paramMapping() {
|
||||
super.doP.put("blurry", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build());
|
||||
super.doP.put("emptyvehicle", QParam.builder().k(new String[]{"storagevehicle_code"}).type(QueryTEnum.NULL_OR_EMPTY).build());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package org.nl.wms.masterdata_manage.storage.service.dailyStructivt.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.IStIvtStructivtDailyService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.StIvtStructivtDaily;
|
||||
import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.mapper.StIvtStructivtDailyMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 日库存统计表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-09-18
|
||||
*/
|
||||
@Service
|
||||
public class StIvtStructivtDailyServiceImpl extends ServiceImpl<StIvtStructivtDailyMapper, StIvtStructivtDaily> implements IStIvtStructivtDailyService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void dailyStructivt(String... structivts) {
|
||||
if (structivts.length == 0){
|
||||
return;
|
||||
}
|
||||
ArrayList<StIvtStructivtDaily> list = new ArrayList<>();
|
||||
for (String structivt : structivts) {
|
||||
List<Map> maps = this.baseMapper.selectStructivt(structivt);
|
||||
if (!CollectionUtils.isEmpty(maps)){
|
||||
List<StIvtStructivtDaily> dailyList = JSONArray.parseArray(JSON.toJSONString(maps), StIvtStructivtDaily.class);
|
||||
list.addAll(dailyList);
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
List<StIvtStructivtDaily> errorData = list.stream().filter(stIvtStructivtDaily -> StringUtils.isEmpty(stIvtStructivtDaily.getStor_id()) || StringUtils.isEmpty(stIvtStructivtDaily.getMaterial_id())).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(errorData)){
|
||||
throw new BadRequestException("表存在异常数据没有仓库跟物料信息:"+errorData
|
||||
.stream()
|
||||
.map(stIvtStructivtDaily-> stIvtStructivtDaily.getTable_name()+".仓位:"+stIvtStructivtDaily.getStruct_code()+".物料"+stIvtStructivtDaily.getMaterial_id())
|
||||
.distinct().collect(Collectors.joining(",")));
|
||||
}
|
||||
Set<String> collect = list.stream().map(StIvtStructivtDaily::getStor_id).collect(Collectors.toSet());
|
||||
this.remove(new QueryWrapper<StIvtStructivtDaily>().in("stor_id",collect).eq("create_time", DateUtil.now()));
|
||||
this.saveBatch(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.masterdata_manage.storage.service.storage.dao.mapper.StIvtStructivtDailyMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -72,6 +72,18 @@ public class StIvtStructivtBcp implements Serializable {
|
||||
* 库存数
|
||||
*/
|
||||
private BigDecimal canuse_qty;
|
||||
/**
|
||||
* 库存数
|
||||
*/
|
||||
private BigDecimal frozen_qty;
|
||||
/**
|
||||
* 库存数
|
||||
*/
|
||||
private BigDecimal ivt_qty;
|
||||
/**
|
||||
* 库存数
|
||||
*/
|
||||
private BigDecimal warehousing_qty;
|
||||
|
||||
/**
|
||||
* 计量单位标识
|
||||
|
||||
21
mes/hd/nladmin-system/src/main/resources/sql/日库存.sql
Normal file
21
mes/hd/nladmin-system/src/main/resources/sql/日库存.sql
Normal file
@@ -0,0 +1,21 @@
|
||||
CREATE TABLE `st_ivt_structivt_daily` (
|
||||
`id` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '库存记录标识',
|
||||
`stor_id` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '仓库标识',
|
||||
`struct_id` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '仓位标识',
|
||||
`struct_code` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '仓位编码',
|
||||
`struct_name` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '仓位名称',
|
||||
`material_id` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '物料标识',
|
||||
`canuse_qty` decimal(18,6) NOT NULL DEFAULT '0.000000' COMMENT '可用数',
|
||||
`frozen_qty` decimal(18,6) DEFAULT '0.000000' COMMENT '冻结数',
|
||||
`ivt_qty` decimal(18,6) NOT NULL DEFAULT '0.000000' COMMENT '库存数',
|
||||
`warehousing_qty` decimal(18,6) DEFAULT '0.000000' COMMENT '待入数',
|
||||
`qty_unit_id` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '计量单位标识',
|
||||
`create_time` varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '创建时间',
|
||||
`product_area` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '车间标识',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='日库存统计表';
|
||||
|
||||
ALTER TABLE st_ivt_structivt_bcp
|
||||
ADD COLUMN `frozen_qty` decimal(18,3) DEFAULT '0.000' COMMENT '冻结数',
|
||||
ADD COLUMN `ivt_qty` decimal(18,3) NOT NULL DEFAULT '0.000' COMMENT '库存数',
|
||||
ADD COLUMN `warehousing_qty` decimal(18,3) DEFAULT '0.000' COMMENT '待入数';
|
||||
Reference in New Issue
Block a user