This commit is contained in:
parent
b5ca9c5f81
commit
ac92abc828
|
|
@ -13,6 +13,7 @@ import com.bonus.material.basic.ProjUsingRecordExports;
|
|||
import com.bonus.material.basic.domain.*;
|
||||
import com.bonus.material.basic.domain.vo.MaTypeSelectInfo;
|
||||
import com.bonus.material.basic.service.ComplexQueryService;
|
||||
import com.bonus.material.ma.domain.Type;
|
||||
import com.bonus.system.api.domain.SysUser;
|
||||
import com.bonus.system.api.model.LoginUser;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
@ -533,4 +534,30 @@ public class ComplexQueryController extends BaseController {
|
|||
ExcelUtil<ProjUsingRecordExports> util = new ExcelUtil<>(ProjUsingRecordExports.class);
|
||||
util.exportExcel(response, exportList, "总在用工程明细");
|
||||
}
|
||||
|
||||
/**
|
||||
* 运维管理---库存操作日志列表
|
||||
* @param bean
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "运维管理---库存操作日志列表")
|
||||
@GetMapping("/getStorageNumLogList")
|
||||
public AjaxResult getStorageNumLogList(Type bean) {
|
||||
startPage();
|
||||
List<Type> pageList = complexQueryService.getStorageNumLogList(bean);
|
||||
return AjaxResult.success(getDataTable(pageList));
|
||||
}
|
||||
|
||||
/**
|
||||
* 运维管理---库存操作日志列表--详情
|
||||
* @param bean
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "运维管理---库存操作日志列表--详情")
|
||||
@GetMapping("/getStorageNumLogDetails")
|
||||
public AjaxResult getStorageNumLogDetails(Type bean) {
|
||||
startPage();
|
||||
List<Type> pageList = complexQueryService.getStorageNumLogDetails(bean);
|
||||
return AjaxResult.success(getDataTable(pageList));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.bonus.material.basic.mapper;
|
|||
|
||||
import com.bonus.material.basic.domain.*;
|
||||
import com.bonus.material.basic.domain.vo.MaTypeSelectInfo;
|
||||
import com.bonus.material.ma.domain.Type;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -197,4 +198,39 @@ public interface ComplexQueryMapper {
|
|||
* @return
|
||||
*/
|
||||
List<RetainedEquipmentInfo> getPartPersonNum(RetainedEquipmentInfo bean);
|
||||
|
||||
/**
|
||||
* 获取库存变化日志
|
||||
* @param bean
|
||||
* @return
|
||||
*/
|
||||
List<Type> getStorageNumLogList(Type bean);
|
||||
|
||||
/**
|
||||
* 获取昨日库存数量
|
||||
* @param item
|
||||
* @return
|
||||
*/
|
||||
Type getYesterdayStorageNum(Type item);
|
||||
|
||||
/**
|
||||
* 获取今日库存数量
|
||||
* @param item
|
||||
* @return
|
||||
*/
|
||||
Type getNewStorageNum(Type item);
|
||||
|
||||
/**
|
||||
* 获取库存变化日志详情
|
||||
* @param bean
|
||||
* @return
|
||||
*/
|
||||
List<Type> getStorageNumLogDetails(Type bean);
|
||||
|
||||
/**
|
||||
* 获取库存数量
|
||||
* @param item
|
||||
* @return
|
||||
*/
|
||||
Type getTotalStorageNumLog(Type item);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.bonus.material.basic.service;
|
|||
|
||||
import com.bonus.material.basic.domain.*;
|
||||
import com.bonus.material.basic.domain.vo.MaTypeSelectInfo;
|
||||
import com.bonus.material.ma.domain.Type;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -137,4 +138,18 @@ public interface ComplexQueryService {
|
|||
* @return
|
||||
*/
|
||||
List<RetainedEquipmentInfo> getPartPersonNum(RetainedEquipmentInfo bean);
|
||||
|
||||
/**
|
||||
* 库存操作日志列表
|
||||
* @param bean
|
||||
* @return
|
||||
*/
|
||||
List<Type> getStorageNumLogList(Type bean);
|
||||
|
||||
/**
|
||||
* 库存操作日志列表详情
|
||||
* @param bean
|
||||
* @return
|
||||
*/
|
||||
List<Type> getStorageNumLogDetails(Type bean);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.bonus.material.basic.domain.*;
|
|||
import com.bonus.material.basic.domain.vo.MaTypeSelectInfo;
|
||||
import com.bonus.material.basic.mapper.ComplexQueryMapper;
|
||||
import com.bonus.material.basic.service.ComplexQueryService;
|
||||
import com.bonus.material.ma.domain.Type;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -705,4 +706,75 @@ public class ComplexQueryServiceImpl implements ComplexQueryService {
|
|||
bean.setUserId(userId);
|
||||
return complexQueryMapper.getPartPersonNum(bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Type> getStorageNumLogList(Type bean) {
|
||||
try {
|
||||
List<Type> list = complexQueryMapper.getStorageNumLogList(bean);
|
||||
for (Type item : list){
|
||||
/* 根据开始、结束时间,查询昨日库存、当日库存
|
||||
* 昨日库存是开始时间之前的库存,当前库存是结束时间的库存
|
||||
* 昨日库存逻辑梳理:
|
||||
* 1、正常情况:查询开始日期之前日志表最后的库存
|
||||
* 2、如果开始日期之前表里没数据,查询开始日期之后该类型的第一条数据的开始库存
|
||||
* 3、如果开始之前和结束日期之后都没有此类型,则使用当前库存
|
||||
* 当前库存逻辑梳理:
|
||||
* 1、正常情况:查询结束日期的库存
|
||||
* 2、如果结束日期没有数据,查询结束日期后,该类型的第一条数据的开始库存
|
||||
* 3、如果开始日期和结束日期都没有此类型,则使用当前库存
|
||||
*/
|
||||
item.setStartTime(bean.getStartTime());
|
||||
item.setEndTime(bean.getEndTime());
|
||||
if (bean.getStartTime() != null && bean.getEndTime() != null){
|
||||
//昨日库存
|
||||
Type yesterdayStorageNum = complexQueryMapper.getYesterdayStorageNum(item);
|
||||
if (yesterdayStorageNum != null){
|
||||
if (yesterdayStorageNum.getAfterStoreNum()!=null){
|
||||
item.setPreStoreNum(yesterdayStorageNum.getAfterStoreNum());
|
||||
} else {
|
||||
item.setPreStoreNum(yesterdayStorageNum.getPreStoreNum());
|
||||
}
|
||||
} else {
|
||||
item.setPreStoreNum(item.getStorageNum());
|
||||
}
|
||||
//当前库存
|
||||
Type storageNum = complexQueryMapper.getNewStorageNum(item);
|
||||
if (storageNum != null){
|
||||
if (storageNum.getAfterStoreNum()!=null){
|
||||
item.setAfterStoreNum(storageNum.getAfterStoreNum());
|
||||
} else {
|
||||
item.setAfterStoreNum(storageNum.getPreStoreNum());
|
||||
}
|
||||
} else {
|
||||
item.setAfterStoreNum(item.getStorageNum());
|
||||
}
|
||||
} else {
|
||||
//没有时间,查总的。昨日库存为第一条数据的改前库存,当前库存为最后一条数据的改后库存
|
||||
Type totalStorageNum = complexQueryMapper.getTotalStorageNumLog(item);
|
||||
if (totalStorageNum != null){
|
||||
item.setPreStoreNum(totalStorageNum.getPreStoreNum());
|
||||
item.setAfterStoreNum(totalStorageNum.getAfterStoreNum());
|
||||
} else {
|
||||
//为空的,则使用当前库存
|
||||
item.setPreStoreNum(item.getStorageNum());
|
||||
item.setAfterStoreNum(item.getStorageNum());
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Type> getStorageNumLogDetails(Type bean) {
|
||||
try {
|
||||
return complexQueryMapper.getStorageNumLogDetails(bean);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -271,4 +271,29 @@ public class Type extends BaseEntity {
|
|||
|
||||
@ApiModelProperty(value = "出库数量")
|
||||
private BigDecimal outNum;
|
||||
|
||||
@ApiModelProperty(value = "设备第一级名称")
|
||||
private String constructionType;
|
||||
|
||||
@ApiModelProperty(value = "设备第二级名称")
|
||||
private String materialType;
|
||||
|
||||
@ApiModelProperty(value = "设备第四级名称")
|
||||
private String typeModelName;
|
||||
|
||||
@ApiModelProperty(value="开始时间")
|
||||
private String startTime;
|
||||
|
||||
@ApiModelProperty(value="结束时间")
|
||||
private String endTime;
|
||||
|
||||
@ApiModelProperty(value="修改后库存")
|
||||
private BigDecimal afterStoreNum;
|
||||
|
||||
@ApiModelProperty(value="昵称")
|
||||
private String nickName;
|
||||
|
||||
@ApiModelProperty(value="机具编码")
|
||||
private String maCode;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1543,4 +1543,203 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getStorageNumLogList" resultType="com.bonus.material.ma.domain.Type">
|
||||
SELECT
|
||||
mt4.type_id as typeId,
|
||||
mt1.type_name as constructionType,
|
||||
mt2.type_name as materialType,
|
||||
mt3.type_name as typeName,
|
||||
mt4.type_name as typeModelName,
|
||||
IFNULL(usnl.outNum,0) as outNum,
|
||||
IFNULL(usnl.inputNum,0) as inputNum,
|
||||
CASE mt4.manage_type
|
||||
WHEN 0 THEN
|
||||
IFNULL(subquery0.num, 0)
|
||||
ELSE
|
||||
IFNULL(mt4.storage_num, 0)
|
||||
END AS storageNum
|
||||
FROM
|
||||
ma_type mt4
|
||||
LEFT JOIN ma_type mt3 on mt3.type_id=mt4.parent_id
|
||||
LEFT JOIN ma_type mt2 on mt2.type_id=mt3.parent_id
|
||||
LEFT JOIN ma_type mt1 on mt1.type_id=mt2.parent_id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
mt.type_id,
|
||||
mt.type_name AS typeModelName,
|
||||
count(mm.ma_id) AS num
|
||||
FROM ma_machine mm
|
||||
LEFT JOIN ma_type mt ON mt.type_id = mm.type_id
|
||||
WHERE mm.ma_code is not null and mm.ma_status in (1)
|
||||
GROUP BY mt.type_id
|
||||
) AS subquery0 ON subquery0.type_id = mt4.type_id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
usnl.type_id,
|
||||
SUM(IFNULL(usnl.out_num,0)) as outNum,
|
||||
SUM(IFNULL(usnl.input_num,0)) as inputNum
|
||||
FROM
|
||||
update_storage_num_log usnl
|
||||
WHERE
|
||||
1=1
|
||||
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
|
||||
and usnl.create_time BETWEEN CONCAT(#{startTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59')
|
||||
</if>
|
||||
GROUP BY usnl.type_id
|
||||
) usnl on usnl.type_id=mt4.type_id
|
||||
WHERE
|
||||
mt4.`level`='4'
|
||||
<if test="keyword != null and keyword !=''">
|
||||
and (
|
||||
mt4.type_name like concat('%',#{keyword},'%') or
|
||||
mt3.type_name like concat('%',#{keyword},'%') or
|
||||
mt2.type_name like concat('%',#{keyword},'%') or
|
||||
mt1.type_name like concat('%',#{keyword},'%')
|
||||
)
|
||||
</if>
|
||||
ORDER BY mt1.type_id,mt2.type_id,mt3.type_id,mt4.type_id
|
||||
</select>
|
||||
<select id="getYesterdayStorageNum" resultType="com.bonus.material.ma.domain.Type">
|
||||
SELECT
|
||||
type_id as typeId,
|
||||
MAX(CASE WHEN pre_store_num != '' THEN pre_store_num ELSE NULL END) as preStoreNum,
|
||||
MAX(CASE WHEN after_store_num != '' THEN after_store_num ELSE NULL END) as afterStoreNum,
|
||||
MAX(create_time) as createTime
|
||||
FROM (
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
usnl.type_id,
|
||||
'' as pre_store_num,
|
||||
usnl.after_store_num,
|
||||
usnl.create_time
|
||||
FROM update_storage_num_log usnl
|
||||
WHERE usnl.type_id=#{typeId}
|
||||
AND DATE_FORMAT(usnl.create_time, '%Y-%m-%d') < #{startTime}
|
||||
ORDER BY usnl.create_time DESC
|
||||
LIMIT 1
|
||||
) AS first_query
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
usnl.type_id,
|
||||
usnl.pre_store_num,
|
||||
'' as after_store_num,
|
||||
usnl.create_time
|
||||
FROM update_storage_num_log usnl
|
||||
WHERE usnl.type_id=#{typeId}
|
||||
AND DATE_FORMAT(usnl.create_time, '%Y-%m-%d') >= #{startTime}
|
||||
ORDER BY usnl.create_time ASC
|
||||
LIMIT 1
|
||||
) AS second_query
|
||||
) AS combined
|
||||
GROUP BY type_id
|
||||
</select>
|
||||
<select id="getNewStorageNum" resultType="com.bonus.material.ma.domain.Type">
|
||||
SELECT
|
||||
type_id as typeId,
|
||||
MAX(CASE WHEN pre_store_num != '' THEN pre_store_num ELSE NULL END) as preStoreNum,
|
||||
MAX(CASE WHEN after_store_num != '' THEN after_store_num ELSE NULL END) as afterStoreNum,
|
||||
MAX(create_time) as createTime
|
||||
FROM (
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
usnl.type_id,
|
||||
'' as pre_store_num,
|
||||
usnl.after_store_num,
|
||||
usnl.create_time
|
||||
FROM update_storage_num_log usnl
|
||||
WHERE usnl.type_id=#{typeId}
|
||||
AND DATE_FORMAT(usnl.create_time, '%Y-%m-%d') = #{endTime}
|
||||
ORDER BY usnl.create_time DESC
|
||||
LIMIT 1
|
||||
) AS first_query
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
usnl.type_id,
|
||||
usnl.pre_store_num,
|
||||
'' as after_store_num,
|
||||
usnl.create_time
|
||||
FROM update_storage_num_log usnl
|
||||
WHERE usnl.type_id=#{typeId}
|
||||
AND DATE_FORMAT(usnl.create_time, '%Y-%m-%d') > #{endTime}
|
||||
ORDER BY usnl.create_time ASC
|
||||
LIMIT 1
|
||||
) AS second_query
|
||||
) AS combined
|
||||
GROUP BY type_id
|
||||
</select>
|
||||
<select id="getStorageNumLogDetails" resultType="com.bonus.material.ma.domain.Type">
|
||||
SELECT
|
||||
usnl.type_id as typeId,
|
||||
mt2.type_name as typeName,
|
||||
mt.type_name as typeModelName,
|
||||
usnl.out_num as outNum,
|
||||
usnl.input_num as inputNum,
|
||||
usnl.creater as nickName,
|
||||
usnl.create_time as createTime,
|
||||
usnl.`code`,
|
||||
mm.ma_code as maCode
|
||||
FROM
|
||||
update_storage_num_log usnl
|
||||
LEFT JOIN ma_type mt on mt.type_id=usnl.type_id
|
||||
LEFT JOIN ma_type mt2 on mt2.type_id=mt.parent_id
|
||||
LEFT JOIN ma_machine mm on mm.ma_id=usnl.ma_id
|
||||
WHERE
|
||||
usnl.type_id=#{typeId}
|
||||
<if test="keyword != null and keyword !=''">
|
||||
and (
|
||||
mt2.type_name like concat('%',#{keyword},'%') or
|
||||
mt.type_name like concat('%',#{keyword},'%') or
|
||||
usnl.creater like concat('%',#{keyword},'%') or
|
||||
usnl.code like concat('%',#{keyword},'%') or
|
||||
mm.ma_code like concat('%',#{keyword},'%')
|
||||
)
|
||||
</if>
|
||||
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
|
||||
and usnl.create_time BETWEEN CONCAT(#{startTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59')
|
||||
</if>
|
||||
order by usnl.create_time desc
|
||||
</select>
|
||||
<select id="getTotalStorageNumLog" resultType="com.bonus.material.ma.domain.Type">
|
||||
SELECT
|
||||
type_id as typeId,
|
||||
MAX(CASE WHEN pre_store_num != '' THEN pre_store_num ELSE NULL END) as preStoreNum,
|
||||
MAX(CASE WHEN after_store_num != '' THEN after_store_num ELSE NULL END) as afterStoreNum,
|
||||
MAX(create_time) as createTime
|
||||
FROM (
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
usnl.type_id,
|
||||
usnl.pre_store_num,
|
||||
'' as after_store_num,
|
||||
usnl.create_time
|
||||
FROM update_storage_num_log usnl
|
||||
WHERE usnl.type_id=#{typeId}
|
||||
|
||||
ORDER BY usnl.create_time ASC
|
||||
LIMIT 1
|
||||
) AS first_query
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
usnl.type_id,
|
||||
'' as pre_store_num,
|
||||
usnl.after_store_num as after_store_num,
|
||||
usnl.create_time
|
||||
FROM update_storage_num_log usnl
|
||||
WHERE usnl.type_id=#{typeId}
|
||||
ORDER BY usnl.create_time DESC
|
||||
LIMIT 1
|
||||
) AS second_query
|
||||
) AS combined
|
||||
GROUP BY type_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue