This commit is contained in:
aikai 2024-09-10 21:56:00 +08:00
commit 5d91b50418
17 changed files with 262 additions and 76 deletions

View File

@ -118,7 +118,6 @@ public class LogInstanceController {
return success(logInstance);
}
@PostMapping("/getNextOrUp")
@Operation(summary = "获取上一篇下一篇日志")
public CommonResult<LogInstanceNextOrUpVO> getNextOrUp(@RequestBody LogInstancePageReqVO dto,

View File

@ -7,9 +7,9 @@ import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.time.LocalDate;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@Schema(description = "管理后台 - 日志实例的拓展分页 Request VO")
@Data
@ -36,12 +36,15 @@ public class LogInstancePageReqVO extends PageParam {
private String formVariables;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate[] createTime;
@Schema(description = "已读、未读 | 0未读、1已读", example = "0")
private Integer readStatus;
@Schema(description = "查询所有领导人日志 ||判断老板角色,是则传参,不是则不传;如要查询全部分页也不传", example = "0")
private Integer isBoss;
@Schema(description = "是否生产日志 | 1生产部门 2职能部门", example = "0")
private Integer isProduce;
}

View File

@ -41,8 +41,10 @@ public interface LogInstanceMapper extends BaseMapperX<LogInstanceDO> {
.in(LogInstanceDO::getTime, dateList));
}
IPage<LogInstanceRespVO> selectPageResult(@Param("page") Page<LogInstanceRespVO> page, @Param("reqVO") LogInstancePageReqVO reqVO,
@Param("userId") Long userId, @Param("pagingType") Integer pagingType,
IPage<LogInstanceRespVO> selectPageResult(@Param("page") Page<LogInstanceRespVO> page,
@Param("reqVO") LogInstancePageReqVO reqVO,
@Param("userId") Long userId,
@Param("pagingType") Integer pagingType,
@Param("userIds") List<Long> userIds);
@DataPermission(enable = false)

View File

@ -29,7 +29,6 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -280,6 +279,9 @@ public class LogInstanceServiceImpl implements LogInstanceService {
JSONObject workLogContentJson = new JSONObject(item.getFormVariables());
for (String fieldItem : fields) {
JSONObject fieldJson = new JSONObject(fieldItem);
if ("upload".equals(fieldJson.getStr("type"))) {
continue;
}
String fieldStr = fieldJson.getStr("field");
String title = fieldJson.getStr("title");
String field = workLogContentJson.getStr(fieldStr);

View File

@ -96,21 +96,33 @@
<select id="selectPageResult" resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO">
SELECT
a.*,
e.read_status as readStatus,
COALESCE(c.readCount, 0) as readCount,
COALESCE(d.unreadCount, 0) as unReadCount,
COALESCE(b.comment, 0) as comment
a.*,
e.read_status as readStatus,
COALESCE(c.readCount, 0) as readCount,
COALESCE(d.unreadCount, 0) as unReadCount,
COALESCE(b.comment, 0) as comment
FROM
work_log_instance_ext as a
LEFT JOIN work_log_read as e ON a.id = e.log_instance_id and e.read_user_id = #{userId}
LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS readCount FROM work_log_read where read_status = 1 AND deleted = 0 GROUP BY log_instance_id ) AS c ON a.id = c.log_instance_id
LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 AND deleted = 0 GROUP BY log_instance_id ) AS d ON a.id = d.log_instance_id
LEFT JOIN (SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment where deleted = 0 GROUP BY work_log_id) AS b ON a.id = b.work_log_id
system_user_post userPost,
system_dept dept,
system_post post,
work_log_instance_ext as a
LEFT JOIN work_log_read as e ON a.id = e.log_instance_id and e.read_user_id = #{userId}
LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS readCount FROM work_log_read where read_status = 1 AND deleted = 0 GROUP BY log_instance_id ) AS c ON a.id = c.log_instance_id
LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 AND deleted = 0 GROUP BY log_instance_id ) AS d ON a.id = d.log_instance_id
LEFT JOIN (SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment where deleted = 0 GROUP BY work_log_id) AS b ON a.id = b.work_log_id
<where>
a.deleted = 0
<if test="reqVO.type != null">
and a.type = #{reqVO.type}
AND a.start_user_id = userPost.user_id
AND userPost.post_id = post.id
AND a.dept_id = dept.id
<if test="reqVO.isProduce == 1">
AND dept.flag LIKE '%166%'
</if>
<if test="reqVO.isProduce == 2">
AND dept.flag NOT LIKE '%166%'
</if>
<if test="reqVO.formId != null">
and a.form_id = #{reqVO.formId}
</if>
<if test="reqVO.deptId != null">
and a.dept_id = #{reqVO.deptId}
@ -120,10 +132,10 @@
</if>
<if test="reqVO.createTime != null and reqVO.createTime.length > 0">
<if test="reqVO.createTime[0] != null">
and a.create_time &gt;= #{reqVO.createTime[0]}
and a.time &gt;= #{reqVO.createTime[0]}
</if>
<if test="reqVO.createTime[1] != null">
and a.create_time &lt;= #{reqVO.createTime[1]}
and a.time &lt;= #{reqVO.createTime[1]}
</if>
</if>
<if test="reqVO.readStatus != null">
@ -142,8 +154,10 @@
</foreach>
</if>
</where>
GROUP BY a.id, readStatus, readCount, unReadCount, comment
ORDER BY a.create_time DESC
-- GROUP BY a.id, readStatus, readCount, unReadCount, comment
ORDER BY
a.time DESC,
post.sort
</select>
<select id="getNextOrUp"
resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO">

View File

@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.*;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeDetailRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizeRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeTotalVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataSizeDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.size.SizeDO;
@ -29,6 +29,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -110,6 +113,11 @@ public class FactoryDataController {
@PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')")
public CommonResult<FactoryDataTotalVO> getDataTotal(@Valid FactoryDataPageReqVO pageReqVO) {
if (pageReqVO.getDateType() != null) {
// 设置日期
setDate(pageReqVO);
}
FactoryDataTotalVO dataTotalVO = dataService.getDataTotal(pageReqVO.getFactoryId(), pageReqVO.getDate());
if (dataTotalVO == null) {
dataTotalVO = new FactoryDataTotalVO();
@ -121,10 +129,32 @@ public class FactoryDataController {
return success(dataTotalVO);
}
@GetMapping("/get-totalByFactory")
@Operation(summary = "获得各个工厂出入库数据总数 | 入库总数、出库总数、破损总数")
@PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')")
public CommonResult<List<FactoryDataTotalVO>> getDataTotalByFactory() {
return success(dataService.getDataTotalByFactory());
}
@GetMapping("/getSizeTotalByFactory")
@Operation(summary = "获得指定工厂指定日期内,出入库规格明细详情")
@PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')")
public CommonResult<List<FactoryDataSizeTotalVO>> getSizeTotalByFactory(@Valid FactoryDataPageReqVO pageReqVO) {
if (pageReqVO.getDateType() != null) {
// 设置日期
setDate(pageReqVO);
}
return success(factoryDataSizeService.getSizeTotalByFactory(pageReqVO.getFactoryId(), pageReqVO.getDate()));
}
@GetMapping("/page")
@Operation(summary = "获得工厂出库入库数据分页")
@PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')")
public CommonResult<PageResult<FactoryDataDetailRespVO>> getDataPage(@Valid FactoryDataPageReqVO pageReqVO) {
PageResult<FactoryDataDetailRespVO> pageResult = dataService.getDataPage(pageReqVO);
return success(pageResult);
}
@ -190,4 +220,40 @@ public class FactoryDataController {
.collect(Collectors.toList());
return success(dataService.importUserList(list, type));
}
public void setDate(FactoryDataPageReqVO pageReqVO) {
LocalDate today = LocalDate.now();
// dateType = 1 为昨日数据
if (pageReqVO.getDateType() == 1) {
// 设置日期
pageReqVO.setDate(new LocalDate[]{today.minusDays(1), today.minusDays(1)});
}
// dateType = 2 为本周数据
if (pageReqVO.getDateType() == 2) {
// 获取本周的周一
LocalDate startOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
// 获取本周的周日
LocalDate endOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
// 设置日期
pageReqVO.setDate(new LocalDate[]{startOfWeek, endOfWeek});
}
// dateType = 3 为本月数据
if (pageReqVO.getDateType() == 3) {
// 获取本月的第一天
LocalDate startOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
// 获取本月的最后一天
LocalDate endOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
// 设置日期
pageReqVO.setDate(new LocalDate[]{startOfMonth, endOfMonth});
}
}
}

View File

@ -30,6 +30,9 @@ public class FactoryDataPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate[] date;
@Schema(description = "时间类型 | 1日 2周 3月", example = "1")
private Integer dateType;
@Schema(description = "总箱数")
private Integer totalNum;

View File

@ -7,6 +7,12 @@ import lombok.Data;
@Data
public class FactoryDataTotalVO {
@Schema(description = "工厂id")
private Long factoryId;
@Schema(description = "工厂名称")
private String factoryName;
@Schema(description = "入库总数")
private Integer inTotal;

View File

@ -0,0 +1,24 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 工厂出库入库数据 总览 Request VO")
@Data
public class FactoryDataSizeTotalVO {
@Schema(description = "工厂id")
private Long factoryId;
@Schema(description = "规格名称")
private String sizeName;
@Schema(description = "入库总数")
private Integer inTotal;
@Schema(description = "出库总数")
private Integer outTotal;
@Schema(description = "破损总数")
private Integer damageNum;
}

View File

@ -1,14 +1,11 @@
package cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataSizeDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -43,5 +40,5 @@ public interface FactoryDataMapper extends BaseMapperX<FactoryDataDO> {
FactoryDataTotalVO selectDataSum(@Param("factoryId") Long factoryId, @Param("date") LocalDate[] date);
List<FactoryDataTotalVO> selectDataSumByFactory();
}

View File

@ -1,10 +1,9 @@
package cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeTotalVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataSizeDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -54,4 +53,7 @@ public interface FactoryDataSizeMapper extends BaseMapperX<FactoryDataSizeDO> {
List<FactoryDataSizeDO> selectLastSize(@Param("factoryId") Long factoryId,
@Param("types") List<Integer> types);
List<FactoryDataSizeTotalVO> selectSizeDataSumByFactory(@Param("factoryId") Long factoryId,
@Param("date") LocalDate[] date);
}

View File

@ -5,7 +5,6 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.*;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeDetailRespVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataSizeDO;
import javax.validation.Valid;
import java.time.LocalDate;
@ -65,7 +64,11 @@ public interface FactoryDataService {
*/
FactoryDataTotalVO getDataTotal(Long factoryId, LocalDate[] date);
/**
* 获得各个工厂出入库数据总数
* @return 总数列表
*/
List<FactoryDataTotalVO> getDataTotalByFactory();
/**
* 获取当天的所有数据

View File

@ -11,18 +11,13 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.*;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeDetailRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeSaveReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.convert.packageData.PackageDataConvert;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataSizeDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataMapper;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataSizeMapper;
import cn.iocoder.yudao.module.smartfactory.framework.util.StringUtil;
import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService;
import cn.iocoder.yudao.module.smartfactory.service.packageInfo.PackageService;
import cn.iocoder.yudao.module.smartfactory.service.packagedata.PackageDataService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -228,6 +223,12 @@ public class FactoryDataServiceImpl implements FactoryDataService {
return dataMapper.selectDataSum(factoryId, date) == null ? new FactoryDataTotalVO() : dataMapper.selectDataSum(factoryId, date);
}
@Override
public List<FactoryDataTotalVO> getDataTotalByFactory() {
return dataMapper.selectDataSumByFactory();
}
@Override
public List<FactoryDataDO> getTodayInboundAndOutboundOverview(Date time) {
String timeStr = null;

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.smartfactory.service.factorydata;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeTotalVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataSizeDO;
import javax.validation.Valid;
@ -59,4 +60,12 @@ public interface FactoryDataSizeService {
* @return 规格详情列表
*/
List<FactoryDataSizeDO> getLastSize(Long factoryId, List<Integer> dataTypes);
/**
* 获得指定工厂指定日期内出入库规格明细详情
* @param factoryId 工厂编号
* @param date 日期
* @return 出入库规格明细详情
*/
List<FactoryDataSizeTotalVO> getSizeTotalByFactory(Long factoryId, LocalDate[] date);
}

View File

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeSaveReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeTotalVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataSizeDO;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataSizeMapper;
@ -312,4 +313,10 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{
return factoryDataSizeMapper.selectLastSize(factoryId, dataTypes);
}
@Override
public List<FactoryDataSizeTotalVO> getSizeTotalByFactory(Long factoryId, LocalDate[] date) {
return factoryDataSizeMapper.selectSizeDataSumByFactory(factoryId, date);
}
}

View File

@ -11,43 +11,43 @@
<select id="selectDetailPage" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO">
SELECT
c.factory_id AS factoryId,
c.date AS date,
c.size_id AS sizeId,
c.size_name AS sizeName,
MAX(CASE WHEN c.type = 4 THEN c.id END) AS inNumId,
MAX(CASE WHEN c.type = 4 THEN c.num END) AS inNum,
MAX(CASE WHEN c.type = 4 THEN c.square_num END) AS squareNum,
MAX(CASE WHEN c.type = 1 THEN c.id END) AS inDamageNumId,
MAX(CASE WHEN c.type = 1 THEN c.num END) AS inDamageNum,
MAX(CASE WHEN c.type = 2 THEN c.id END) AS outNumId,
MAX(CASE WHEN c.type = 2 THEN c.num END) AS outNum,
MAX(CASE WHEN c.type = 3 THEN c.id END) AS outDamageNumId,
MAX(CASE WHEN c.type = 3 THEN c.num END) AS outDamageNum,
MAX(c.create_time) AS createTime
c.factory_id AS factoryId,
c.date AS date,
c.size_id AS sizeId,
c.size_name AS sizeName,
MAX(CASE WHEN c.type = 4 THEN c.id END) AS inNumId,
MAX(CASE WHEN c.type = 4 THEN c.num END) AS inNum,
MAX(CASE WHEN c.type = 4 THEN c.square_num END) AS squareNum,
MAX(CASE WHEN c.type = 1 THEN c.id END) AS inDamageNumId,
MAX(CASE WHEN c.type = 1 THEN c.num END) AS inDamageNum,
MAX(CASE WHEN c.type = 2 THEN c.id END) AS outNumId,
MAX(CASE WHEN c.type = 2 THEN c.num END) AS outNum,
MAX(CASE WHEN c.type = 3 THEN c.id END) AS outDamageNumId,
MAX(CASE WHEN c.type = 3 THEN c.num END) AS outDamageNum,
MAX(c.create_time) AS createTime
FROM
sf_factory_data_size AS c
sf_factory_data_size AS c
WHERE
c.deleted = 0
<if test="reqVO.factoryId != null">
AND c.factory_id = #{reqVO.factoryId}
</if>
<if test="reqVO.date != null and reqVO.date.length > 0">
<if test="reqVO.date[0] != null">
AND c.date &gt;= #{reqVO.date[0]}
c.deleted = 0
<if test="reqVO.factoryId != null">
AND c.factory_id = #{reqVO.factoryId}
</if>
<if test="reqVO.date[1] != null">
<if test="reqVO.date != null and reqVO.date.length > 0">
<if test="reqVO.date[0] != null">
AND c.date &gt;= #{reqVO.date[0]}
</if>
<if test="reqVO.date[1] != null">
AND c.date &lt;= #{reqVO.date[1]}
</if>
</if>
</if>
<if test="reqVO.createTime != null and reqVO.createTime.length > 0">
<if test="reqVO.createTime[0] != null">
AND c.create_time &gt;= #{reqVO.createTime[0]}
<if test="reqVO.createTime != null and reqVO.createTime.length > 0">
<if test="reqVO.createTime[0] != null">
AND c.create_time &gt;= #{reqVO.createTime[0]}
</if>
<if test="reqVO.createTime[1] != null">
AND c.create_time &lt;= #{reqVO.createTime[1]}
</if>
</if>
<if test="reqVO.createTime[1] != null">
AND c.create_time &lt;= #{reqVO.createTime[1]}
</if>
</if>
GROUP BY
c.factory_id,
c.date,
@ -70,13 +70,30 @@
<if test="factoryId != null">
AND factory_id = #{factoryId}
</if>
<if test="date != null and date.length > 0">
<if test="date[0] != null">
AND date &gt;= #{date[0]}
<if test="date != null and date.length > 0">
<if test="date[0] != null">
AND date &gt;= #{date[0]}
</if>
<if test="date[1] != null">
AND date &lt;= #{date[1]}
</if>
</if>
<if test="date[1] != null">
AND date &lt;= #{date[1]}
</if>
</if>
</select>
<select id="selectDataSumByFactory" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO">
SELECT
a.factory_id AS factoryId,
b.short_name AS factoryName,
SUM( CASE WHEN a.data_type = 2 THEN IFNULL( a.total_num, 0 ) END ) AS inTotal,
SUM( CASE WHEN a.data_type = 1 THEN IFNULL( a.total_num, 0 ) END ) AS outTotal,
SUM( CASE WHEN a.data_type = 1 OR a.data_type = 2 THEN IFNULL( a.damage_num, 0 ) END ) AS damageNum
FROM
sf_factory_data a,
sf_factory_info b
WHERE
a.deleted = 0
AND a.factory_id = b.id
GROUP BY
a.factory_id
</select>
</mapper>

View File

@ -92,4 +92,35 @@
#{types}
</foreach>
</select>
<select id="selectSizeDataSumByFactory" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeTotalVO">
SELECT
factory_id AS factoryId,
size_name AS sizeName,
SUM( CASE WHEN type = 4 THEN num END ) AS inTotal,
SUM( CASE WHEN type = 2 THEN num END ) AS outTotal,
IFNULL( SUM( CASE WHEN type = 1 THEN num END ), 0 ) + IFNULL( SUM( CASE WHEN type = 3 THEN num END ), 0 ) AS damageNum
FROM
sf_factory_data_size
WHERE
deleted = 0
<if test="factoryId != null">
AND factory_id = #{factoryId}
</if>
<if test="date != null and date.length > 0">
<if test="date[0] != null">
AND date &gt;= #{date[0]}
</if>
<if test="date[1] != null">
AND date &lt;= #{date[1]}
</if>
</if>
GROUP BY
factory_id,
size_name
ORDER BY
factory_id,
size_name
</select>
</mapper>