工厂管理:

规格管理、打包线管理、打包线数据管理、出入库数据管理
This commit is contained in:
furongxin 2024-05-23 11:28:26 +08:00
parent 2dc14bbaab
commit 4a5dae14a8
14 changed files with 139 additions and 15 deletions

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; 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.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataService; import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataService;
import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataSizeService; import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataSizeService;
@ -76,6 +77,14 @@ public class FactoryDataController {
return success(dataService.getData(factoryId, date)); return success(dataService.getData(factoryId, date));
} }
@GetMapping("/get-total")
@Operation(summary = "获得出入库数据总数 | 入库总数、出库总数、破损总数")
@PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')")
public CommonResult<FactoryDataTotalVO> getDataTotal() {
return success(dataService.getDataTotal());
}
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得工厂出库入库数据分页") @Operation(summary = "获得工厂出库入库数据分页")
@PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')") @PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')")
@ -96,5 +105,4 @@ public class FactoryDataController {
ExcelUtils.write(response, "工厂出库入库数据.xls", "数据", FactoryDataDetailRespVO.class, ExcelUtils.write(response, "工厂出库入库数据.xls", "数据", FactoryDataDetailRespVO.class,
list); list);
} }
} }

View File

@ -17,6 +17,9 @@ public class FactoryDataDetailRespVO {
@Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000078") @Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000078")
private Long factoryId; private Long factoryId;
@Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "新景象")
private String factoryName;
@Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-05-14") @Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-05-14")
private LocalDate date; private LocalDate date;

View File

@ -10,9 +10,15 @@ import java.time.LocalDate;
@Data @Data
public class FactoryDataInfoRespVO { public class FactoryDataInfoRespVO {
@Schema(description = "打包线数据id")
private Long id;
@Schema(description = "工厂id") @Schema(description = "工厂id")
private Long factoryId; private Long factoryId;
@Schema(description = "打包线名称")
private String packageName;
@Schema(description = "日期") @Schema(description = "日期")
private LocalDate date; private LocalDate date;
@ -22,6 +28,15 @@ public class FactoryDataInfoRespVO {
@Schema(description = "规格名称") @Schema(description = "规格名称")
private String sizeName; private String sizeName;
@Schema(description = "规格片数")
private Integer sizePieces;
@Schema(description = "手动打包数")
private Integer num;
@Schema(description = "自动打包数")
private Integer autoNum;
@Schema(description = "入库数量") @Schema(description = "入库数量")
private Integer inNum; private Integer inNum;
@ -29,7 +44,7 @@ public class FactoryDataInfoRespVO {
private BigDecimal squareNum; private BigDecimal squareNum;
@Schema(description = "打包破损数") @Schema(description = "打包破损数")
private Integer packageDamageNum; private Integer damageNum;
@Schema(description = "入库破损数id") @Schema(description = "入库破损数id")
private Long inDamageNumId; private Long inDamageNumId;

View File

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

View File

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; 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.FactoryDataDO;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -36,4 +37,6 @@ public interface FactoryDataMapper extends BaseMapperX<FactoryDataDO> {
.eq(FactoryDataDO::getFactoryId, factoryId) .eq(FactoryDataDO::getFactoryId, factoryId)
.eq(FactoryDataDO::getDate, date)); .eq(FactoryDataDO::getDate, date));
} }
FactoryDataTotalVO selectDataSum();
} }

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.smartfactory.service.factorydata;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; 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.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
@ -58,6 +59,12 @@ public interface FactoryDataService {
*/ */
PageResult<FactoryDataDetailRespVO> getDataPage(FactoryDataPageReqVO pageReqVO); PageResult<FactoryDataDetailRespVO> getDataPage(FactoryDataPageReqVO pageReqVO);
/**
* 获得工厂总数 总览
* @return
*/
FactoryDataTotalVO getDataTotal();
/** /**
* 获取当天的所有数据 * 获取当天的所有数据
* *

View File

@ -7,13 +7,16 @@ import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO; 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.FactoryDataPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; 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.FactoryDataSizeSaveReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataCreateReqVO; 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.convert.packageData.PackageDataConvert;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO;
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.dataobject.packagedata.PackageDataDO;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataMapper; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataMapper;
import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -26,8 +29,11 @@ import java.time.format.DateTimeFormatter;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
/** /**
* 工厂出库入库数据 Service 实现类 * 工厂出库入库数据 Service 实现类
@ -45,6 +51,9 @@ public class FactoryDataServiceImpl implements FactoryDataService {
@Lazy // 循环依赖避免报错 @Lazy // 循环依赖避免报错
private FactoryDataSizeService dataSizeService; private FactoryDataSizeService dataSizeService;
@Resource
private FactoryInfoService factoryInfoService;
@Override @Override
public Long createData(List<FactoryDataDO> factoryDataDOS) { public Long createData(List<FactoryDataDO> factoryDataDOS) {
@ -62,7 +71,7 @@ public class FactoryDataServiceImpl implements FactoryDataService {
//校验 出入库统计数据是否存在 //校验 出入库统计数据是否存在
List<FactoryDataDO> factoryDataDOS = dataMapper.selectListByFactoryAndDate(updateReqVO.getFactoryId(), updateReqVO.getDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); List<FactoryDataDO> factoryDataDOS = dataMapper.selectListByFactoryAndDate(updateReqVO.getFactoryId(), updateReqVO.getDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
if (factoryDataDOS != null) { if (factoryDataDOS != null && !factoryDataDOS.isEmpty()) {
PackageDataCreateReqVO createReqVO = new PackageDataCreateReqVO(); PackageDataCreateReqVO createReqVO = new PackageDataCreateReqVO();
createReqVO.setPackageData(updateReqVO.getPackageData()); createReqVO.setPackageData(updateReqVO.getPackageData());
@ -150,6 +159,11 @@ public class FactoryDataServiceImpl implements FactoryDataService {
List<FactoryDataDetailRespVO> respVOS = dataPage.getList(); List<FactoryDataDetailRespVO> respVOS = dataPage.getList();
if (!respVOS.isEmpty()) { if (!respVOS.isEmpty()) {
//获得工厂信息列表
List<Long> factoryIdS = respVOS.stream().map(FactoryDataDetailRespVO::getFactoryId).collect(Collectors.toList());
List<FactoryInfoDO> factoryInfoDOS = factoryInfoService.getFactoryList(factoryIdS);
Map<Long, FactoryInfoDO> factoryMap = convertMap(factoryInfoDOS, FactoryInfoDO::getId);
//获得 入库数打包破损入库破损出库数出库破损的工厂规格数据 //获得 入库数打包破损入库破损出库数出库破损的工厂规格数据
List<FactoryDataInfoRespVO> infoDatas = dataSizeService.getDetailList(pageReqVO.getFactoryId(), pageReqVO.getDate()); List<FactoryDataInfoRespVO> infoDatas = dataSizeService.getDetailList(pageReqVO.getFactoryId(), pageReqVO.getDate());
@ -161,6 +175,7 @@ public class FactoryDataServiceImpl implements FactoryDataService {
.collect(Collectors.toList()); .collect(Collectors.toList());
items.setItems(infoList); items.setItems(infoList);
items.setFactoryName(factoryMap.get(items.getFactoryId()).getName());
//移除 已处理过的数据 //移除 已处理过的数据
infoDatas.removeAll(infoList); infoDatas.removeAll(infoList);
@ -182,15 +197,16 @@ public class FactoryDataServiceImpl implements FactoryDataService {
dataDetailRespVO.setId(respVOS.get(0).getId() + 1); dataDetailRespVO.setId(respVOS.get(0).getId() + 1);
dataDetailRespVO.setFactoryId(factoryId); dataDetailRespVO.setFactoryId(factoryId);
dataDetailRespVO.setFactoryName(factoryMap.get(factoryId).getName());
dataDetailRespVO.setDate(date); dataDetailRespVO.setDate(date);
//设置入库总数 //设置入库总数
dataDetailRespVO.setInTotalNum(infoList.stream().mapToInt(FactoryDataInfoRespVO::getInNum).sum()); dataDetailRespVO.setInTotalNum(infoList.stream().filter(info -> info.getInNum() != null).mapToInt(FactoryDataInfoRespVO::getInNum).sum());
//设置入库平方数 //设置入库平方数
dataDetailRespVO.setSquareNum(infoList.stream().map(FactoryDataInfoRespVO::getSquareNum).reduce(BigDecimal.ZERO, BigDecimal::add)); dataDetailRespVO.setSquareNum(infoList.stream().map(FactoryDataInfoRespVO::getSquareNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
//设置出库总数 //设置出库总数
dataDetailRespVO.setOutTotalNum(infoDatas.stream().mapToInt(FactoryDataInfoRespVO::getOutNum).sum()); dataDetailRespVO.setOutTotalNum(infoDatas.stream().filter(info -> info.getOutNum() != null).mapToInt(FactoryDataInfoRespVO::getOutNum).sum());
//设置 出入库破损总数 //设置 出入库破损总数
dataDetailRespVO.setDamageNum(infoDatas.stream().mapToInt(info -> info.getInDamageNum() + info.getOutDamageNum()).sum()); dataDetailRespVO.setDamageNum(infoDatas.stream().filter(info -> info.getInDamageNum() != null).mapToInt(info -> info.getInDamageNum() + info.getOutDamageNum()).sum());
dataDetailRespVO.setItems(infoList); dataDetailRespVO.setItems(infoList);
//设置 可编辑状态 //设置 可编辑状态
dataDetailRespVO.setIsEdit(1); dataDetailRespVO.setIsEdit(1);
@ -198,12 +214,19 @@ public class FactoryDataServiceImpl implements FactoryDataService {
respVOS.add(0, dataDetailRespVO); respVOS.add(0, dataDetailRespVO);
}); });
}); });
dataPage.setTotal((long) respVOS.size());
} }
} }
return dataPage; return dataPage;
} }
@Override
public FactoryDataTotalVO getDataTotal() {
return dataMapper.selectDataSum();
}
@Override @Override
public List<FactoryDataDO> getTodayInboundAndOutboundOverview(Date time) { public List<FactoryDataDO> getTodayInboundAndOutboundOverview(Date time) {
String timeStr = null; String timeStr = null;

View File

@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataSiz
import cn.iocoder.yudao.module.smartfactory.service.packagedata.PackageDataService; import cn.iocoder.yudao.module.smartfactory.service.packagedata.PackageDataService;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -46,6 +47,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{
private FactoryDataService factoryDataService; private FactoryDataService factoryDataService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Long createData(FactoryDataSizeCreateReqVO createReqVO) { public Long createData(FactoryDataSizeCreateReqVO createReqVO) {
//校验 当前日期得数据是否已经录入 //校验 当前日期得数据是否已经录入
@ -114,6 +116,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{
if (!createReqVO.getPackageData().isEmpty()) { if (!createReqVO.getPackageData().isEmpty()) {
PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO(); PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO();
packCreateReqVO.setFactoryId(createReqVO.getPackageData().get(0).getFactoryId());
packCreateReqVO.setPackageData(createReqVO.getPackageData()); packCreateReqVO.setPackageData(createReqVO.getPackageData());
packCreateReqVO.setPackageDate(createReqVO.getDate()); packCreateReqVO.setPackageDate(createReqVO.getDate());
@ -125,6 +128,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateData(FactoryDataSizeCreateReqVO updateReqVO) { public void updateData(FactoryDataSizeCreateReqVO updateReqVO) {
// 更新 // 更新
@ -171,6 +175,8 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{
if (!updateReqVO.getPackageData().isEmpty()) { if (!updateReqVO.getPackageData().isEmpty()) {
PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO(); PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO();
packCreateReqVO.setFactoryId(updateReqVO.getFactoryId());
packCreateReqVO.setPackageDate(updateReqVO.getDate());
packCreateReqVO.setPackageData(updateReqVO.getPackageData()); packCreateReqVO.setPackageData(updateReqVO.getPackageData());
//插入打包线数据 //插入打包线数据

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@ -47,6 +48,14 @@ public interface FactoryInfoService {
*/ */
FactoryInfoDO getFactoryInfo(Long id); FactoryInfoDO getFactoryInfo(Long id);
/**
* 获得工厂信息列表
*
* @param ids 编号
* @return 工厂信息
*/
List<FactoryInfoDO> getFactoryList(Collection<Long> ids);
/** /**
* 获得类型为工厂的工厂信息列表 * 获得类型为工厂的工厂信息列表
* @return 工厂列表 * @return 工厂列表

View File

@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.ip.core.Area; import cn.iocoder.yudao.framework.ip.core.Area;
import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
@ -116,6 +115,12 @@ public class FactoryInfoServiceImpl implements FactoryInfoService {
return factoryInfoMapper.selectById(id); return factoryInfoMapper.selectById(id);
} }
@Override
public List<FactoryInfoDO> getFactoryList(Collection<Long> ids) {
return factoryInfoMapper.selectList(FactoryInfoDO::getId, ids);
}
@Override @Override
public List<FactoryInfoDO> getFactoryListByType() { public List<FactoryInfoDO> getFactoryListByType() {

View File

@ -21,6 +21,7 @@
FROM FROM
sf_factory_data sf_factory_data
<where> <where>
deleted = 0
<if test="reqVO.factoryId != null"> <if test="reqVO.factoryId != null">
AND factory_id = #{reqVO.factoryId} AND factory_id = #{reqVO.factoryId}
</if> </if>
@ -46,4 +47,15 @@
</where> </where>
ORDER BY id DESC ORDER BY id DESC
</select> </select>
<select id="selectDataSum" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO">
SELECT
SUM(CASE WHEN data_type = 2 THEN total_num END) AS inTotal,
SUM(CASE WHEN data_type = 1 THEN total_num END) AS outTotal,
SUM(CASE WHEN data_type = 1 OR data_type = 2 THEN damage_num END) AS damageNum
FROM
sf_factory_data
WHERE
deleted = 0
</select>
</mapper> </mapper>

View File

@ -11,13 +11,18 @@
<select id="selectDetailList" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO"> <select id="selectDetailList" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO">
SELECT SELECT
a.id AS id,
a.factory_id AS factoryId, a.factory_id AS factoryId,
a.package_name AS packageName,
a.package_date AS date, a.package_date AS date,
a.size_id AS sizeId, a.size_id AS sizeId,
a.size_name AS sizeName, a.size_name AS sizeName,
a.size_pieces AS sizePieces,
MAX(a.num) AS num,
MAX(a.auto_num) AS autoNum,
MAX(a.num + a.auto_num) AS inNum, MAX(a.num + a.auto_num) AS inNum,
MAX(a.square_num) AS squareNum, MAX(a.square_num) AS squareNum,
MAX(a.damage_num) AS packageDamageNum, MAX(a.damage_num) AS damageNum,
MAX(CASE WHEN b.type = 1 THEN b.id END) AS inDamageNumId, MAX(CASE WHEN b.type = 1 THEN b.id END) AS inDamageNumId,
MAX(CASE WHEN b.type = 1 THEN b.num END) AS inDamageNum, MAX(CASE WHEN b.type = 1 THEN b.num END) AS inDamageNum,
MAX(CASE WHEN b.type = 2 THEN b.id END) AS outNumId, MAX(CASE WHEN b.type = 2 THEN b.id END) AS outNumId,
@ -30,8 +35,9 @@
sf_factory_data_size AS b sf_factory_data_size AS b
ON a.factory_id = b.factory_id and a.package_date = b.date and a.size_id = b.size_id ON a.factory_id = b.factory_id and a.package_date = b.date and a.size_id = b.size_id
<where> <where>
a.deleted = 0
<if test="factoryId != null"> <if test="factoryId != null">
AND a.factoryId = #{factoryId} AND a.factory_id = #{factoryId}
</if> </if>
<if test="date != null and date.length > 0"> <if test="date != null and date.length > 0">
<if test="date[0] != null"> <if test="date[0] != null">
@ -42,18 +48,23 @@
</if> </if>
</if> </if>
</where> </where>
GROUP BY a.factory_id,a.package_date,a.size_id,a.size_name GROUP BY a.id,a.factory_id,a.package_name,a.package_date,a.size_id,a.size_name,a.size_pieces
UNION UNION
SELECT SELECT
NULL AS id,
c.factory_id AS factoryId, c.factory_id AS factoryId,
NULL AS packageName,
c.date AS date, c.date AS date,
c.size_id AS sizeId, c.size_id AS sizeId,
c.size_name AS sizeName, c.size_name AS sizeName,
NULL AS sizePieces,
NULL AS num,
NULL AS autoNum,
NULL AS inNum, NULL AS inNum,
NULL AS squareNum, NULL AS squareNum,
NULL AS packageDamageNum, NULL AS damageNum,
MAX(CASE WHEN c.type = 1 THEN c.id END) AS inDamageNumId, 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 = 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.id END) AS outNumId,
@ -64,15 +75,16 @@
sf_factory_data_size AS c sf_factory_data_size AS c
WHERE WHERE
NOT EXISTS (SELECT 1 FROM sf_package_data WHERE size_id = c.size_id and package_date = c.date) NOT EXISTS (SELECT 1 FROM sf_package_data WHERE size_id = c.size_id and package_date = c.date)
AND c.deleted = 0
<if test="factoryId != null"> <if test="factoryId != null">
AND a.factoryId = #{factoryId} AND c.factory_id = #{factoryId}
</if> </if>
<if test="date != null and date.length > 0"> <if test="date != null and date.length > 0">
<if test="date[0] != null"> <if test="date[0] != null">
AND a.package_date &gt;= #{date[0]} AND c.date &gt;= #{date[0]}
</if> </if>
<if test="date[1] != null"> <if test="date[1] != null">
AND a.package_date &lt;= #{date[1]} AND c.date &lt;= #{date[1]}
</if> </if>
</if> </if>
GROUP BY c.factory_id,c.date,c.size_id,c.size_name GROUP BY c.factory_id,c.date,c.size_id,c.size_name
@ -89,6 +101,7 @@
sf_factory_data_size sf_factory_data_size
WHERE WHERE
create_time BETWEEN #{dateTime[0]} AND #{dateTime[1]} create_time BETWEEN #{dateTime[0]} AND #{dateTime[1]}
AND deleted = 0
GROUP BY GROUP BY
factory_id, factory_id,
date date

View File

@ -21,6 +21,7 @@
WHERE WHERE
a.factory_id = b.id a.factory_id = b.id
AND a.size_id = c.id AND a.size_id = c.id
AND a.deleted = 0
<if test="reqVO.factoryId != null"> <if test="reqVO.factoryId != null">
AND a.factory_id = #{reqVO.factoryId} AND a.factory_id = #{reqVO.factoryId}
</if> </if>

View File

@ -17,6 +17,7 @@
sf_factory_info AS b sf_factory_info AS b
WHERE WHERE
a.factory_id = b.id a.factory_id = b.id
AND a.deleted = 0
<if test="reqVO.factoryId != null"> <if test="reqVO.factoryId != null">
AND a.factory_id = #{reqVO.factoryId} AND a.factory_id = #{reqVO.factoryId}
</if> </if>