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 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