This commit is contained in:
mashuai 2025-08-23 19:22:18 +08:00
parent cdeeab88bc
commit 7c0c13e8dd
15 changed files with 205 additions and 91 deletions

View File

@ -112,4 +112,9 @@ public class MaterialConstants {
*/
public static final String OUTER_PROTOCAL = "2";
/**
* 标准箱前缀
*/
public static final String QR_BOX_PREFIX = "BOX";
}

View File

@ -42,7 +42,7 @@ public class BmAssetAttributesController extends BaseController {
* @return 查询结果
*/
@ApiOperation(value = "查询资产属性管理列表")
@RequiresPermissions("basic:asset:list")
//@RequiresPermissions("basic:asset:list")
@GetMapping("/list")
public AjaxResult queryByPage(BmAssetAttributes bmAssetAttributes) {
//判断是否分页用于下拉选

View File

@ -3,6 +3,7 @@ package com.bonus.material.basic.mapper;
import com.bonus.common.biz.domain.lease.LeaseOutDetails;
import com.bonus.material.basic.domain.BmQrBoxInfo;
import com.bonus.material.basic.domain.dto.BoxBindWarehouseDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -173,4 +174,12 @@ public interface BmQrBoxMapper {
* @return
*/
List<BmQrBoxInfo> getBoxBindWsList(BmQrBoxInfo bean);
/**
* 查询当月标准箱数
* @param year
* @param month
* @return
*/
int getMonthMaxOrderByDate(@Param("year") String year, @Param("month") String month);
}

View File

@ -5,11 +5,9 @@ import com.alibaba.nacos.common.utils.CollectionUtils;
import com.bonus.common.biz.config.BackstageApplication;
import com.bonus.common.biz.config.DateTimeHelper;
import com.bonus.common.biz.config.QrCodeUtils;
import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.domain.purchase.PurchaseDto;
import com.bonus.common.biz.enums.HttpCodeEnum;
import com.bonus.common.biz.enums.MaMachineStatusEnum;
import com.bonus.common.biz.enums.PurchaseTaskStatusEnum;
import com.bonus.common.biz.enums.QrBoxStatusEnum;
import com.bonus.common.biz.enums.*;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.web.domain.AjaxResult;
@ -40,9 +38,12 @@ import java.io.InputStream;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static com.bonus.common.biz.constant.MaterialConstants.QR_BOX_PREFIX;
/**
* @author ma_sh
* @create 2024/12/10 17:26
@ -85,8 +86,25 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
*/
@Override
public AjaxResult insertBmQrcodeInfo(BmQrBoxInfo bmQrBoxInfo) {
//生成二维码
final String code = "BOX-" + DateTimeHelper.getNowTimeFomart();
// 查询当月标准箱数
int thisMonthMaxOrder = bmQrBoxMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth());
String code = null;
List<BmQrBoxInfo> boxInfos;
int retryCount = 0;
int maxRetry = 10; // 设置最大重试次数防止无限循环
do {
// 生成编码每次重试递增序号
code = genderTaskCode(thisMonthMaxOrder + retryCount);
bmQrBoxInfo.setBoxCode(code);
// 检查编码是否已存在
boxInfos = bmQrBoxMapper.findBoxInfoByKey(bmQrBoxInfo);
retryCount++;
// 如果达到最大重试次数仍存在重复抛出异常
if (retryCount > maxRetry) {
throw new RuntimeException("超过最大重试次数,无法生成唯一的二维码箱号");
}
} while (CollectionUtils.isNotEmpty(boxInfos));
bmQrBoxInfo.setBoxCode(code);
bmQrBoxInfo.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
bmQrBoxInfo.setCreateTime(DateUtils.getNowDate());
@ -94,6 +112,19 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
return 0 < result ? AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()) : AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 生成标准箱编码
* @param thisMonthMaxOrder
* @return
*/
private String genderTaskCode(int thisMonthMaxOrder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date nowDate = DateUtils.getNowDate();
String format = dateFormat.format(nowDate);
String result = format.replace("-", "");
return QR_BOX_PREFIX + result + String.format("-%03d", thisMonthMaxOrder + 1);
}
/**
* BoxCode查询标准箱信息
*
@ -492,7 +523,7 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
public AjaxResult deleteById(BmQrBoxInfo bmQrBoxInfo) {
//根据id查看标准箱是否绑定绑定不能删除
if (0 < bmQrBoxMapper.countBmQrcodeInfoByBoxId(bmQrBoxInfo.getBoxId())) {
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "该标准箱绑定设备,无法删除");
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "该标准箱绑定设备,无法删除");
}
final int result = bmQrBoxMapper.deleteById(bmQrBoxInfo);
return 0 < result ? AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()) : AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());

View File

@ -183,4 +183,18 @@ public interface LeaseApplyDetailsMapper {
* @return
*/
LeaseApplyDetails getLeasePublishApplyDetails(@Param("record") LeaseOutDetails record);
/**
* 查询数量设备待出库详情
* @param leaseOutDetails
* @return
*/
LeaseApplyDetails getPendingLeaseApplyDetails(LeaseOutDetails leaseOutDetails);
/**
* 查询编码设备待出库详情
* @param leaseOutDetails
* @return
*/
LeaseApplyDetails getPendingCodeLeaseApplyDetails(LeaseOutDetails leaseOutDetails);
}

View File

@ -209,4 +209,11 @@ public interface LeaseApplyInfoMapper {
* @return
*/
LeaseApplyInfo getOutNum(LeaseApplyInfo leaseApplyInfo);
/**
* 根据id去查询确认总出库数量
* @param applyInfo
* @return
*/
LeaseApplyInfo getInfoList(LeaseApplyInfo applyInfo);
}

View File

@ -1,12 +1,14 @@
package com.bonus.material.lease.service.impl;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import com.bonus.common.biz.constant.GlobalConstants;
import com.bonus.common.biz.enums.*;
import lombok.extern.slf4j.Slf4j;
import cn.hutool.core.collection.CollectionUtil;
@ -19,10 +21,6 @@ import com.bonus.common.biz.constant.BmConfigItems;
import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.biz.domain.lease.*;
import com.bonus.common.biz.enums.HttpCodeEnum;
import com.bonus.common.biz.enums.LeaseTaskStatusEnum;
import com.bonus.common.biz.enums.MaMachineStatusEnum;
import com.bonus.common.biz.enums.TmTaskTypeEnum;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
@ -540,14 +538,14 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
List<LeaseApplyInfo> leaseApplyOutList = leaseApplyInfoMapper.selectPublishList(leaseApplyInfo);
if (!CollectionUtils.isEmpty(leaseApplyOutList)) {
list.addAll(leaseApplyOutList);
for (LeaseApplyInfo applyInfo : list) {
if (applyInfo.getPreCountNum().compareTo(applyInfo.getAlNum()) == 0) {
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus());
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatusName());
} else {
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatus());
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatusName());
}
}
for (LeaseApplyInfo applyInfo : list) {
if (applyInfo.getPreCountNum().compareTo(applyInfo.getAlNum()) == 0) {
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus());
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatusName());
} else {
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatus());
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatusName());
}
}
}
@ -609,26 +607,16 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
List<LeaseApplyInfo> leaseApplyOutList = leaseApplyInfoMapper.selectPublish(leaseApplyInfo);
if (!CollectionUtils.isEmpty(leaseApplyOutList)) {
list.addAll(leaseApplyOutList);
}
if (!CollectionUtils.isEmpty(list)) {
for (LeaseApplyInfo applyInfo : list) {
// 根据id去查询出库数量
LeaseApplyInfo outList = leaseApplyInfoMapper.getOutList(applyInfo);
if (outList != null) {
if (applyInfo.getPreCountNum().compareTo(outList.getAlNum()) == 0) {
applyInfo.setIsConfirm(2);
} else {
applyInfo.setIsConfirm(1);
}
} else {
applyInfo.setIsConfirm(1);
}
}
} else {
if (!CollectionUtils.isEmpty(list)) {
for (LeaseApplyInfo applyInfo : list) {
// 根据id去查询出库数量
LeaseApplyInfo outList = leaseApplyInfoMapper.getOutList(applyInfo);
if (outList != null) {
if (applyInfo.getPreCountNum().compareTo(outList.getAlNum()) == 0) {
// 根据id去查询总出库数量
LeaseApplyInfo totalInfo = leaseApplyInfoMapper.getOutList(applyInfo);
// 根据id去查询确认总出库数量
LeaseApplyInfo info = leaseApplyInfoMapper.getInfoList(applyInfo);
if (totalInfo != null) {
if (info != null) {
if (info.getAlNum().compareTo(totalInfo.getAlNum()) == 0) {
applyInfo.setIsConfirm(2);
} else {
applyInfo.setIsConfirm(1);
@ -636,6 +624,8 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
} else {
applyInfo.setIsConfirm(1);
}
} else {
applyInfo.setIsConfirm(1);
}
}
}
@ -678,35 +668,7 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
.filter(item -> containsKeyword(item, keyWord))
.collect(Collectors.toList());
}
// // 判断状态
// if (!CollectionUtils.isEmpty(leaseApplyInfo.getStatusList())) {
// // 将集合sortedList中状态taskStatus包含在leaseApplyInfo.getStatusList()中的元素
// sortedList = sortedList.stream()
// .filter(item -> leaseApplyInfo.getStatusList().contains(item.getTaskStatus()))
// .collect(Collectors.toList());
// }
}
sortedList.removeIf(Objects::isNull);
if (leaseApplyInfo.getIsConfirm() != null) {
if (leaseApplyInfo.getIsConfirm() == 1) {
for (LeaseApplyInfo item : sortedList) {
if(item.getPreCountNum().compareTo(item.getAlNum()) != 0){
item.setIsConfirm(1);
}else{
//查找签名的数量之和是否为
}
}
// sortedList.removeIf(item -> item.getIsConfirm() != null && item.getIsConfirm() == 2);
} else if (leaseApplyInfo.getIsConfirm() == 2) {
sortedList.removeIf(item -> item.getIsConfirm() == null || item.getIsConfirm() != 2);
}
}
// 再次移除可能的null值
sortedList.removeIf(Objects::isNull);
// 只有出库完成的任务才需要进行确认这里过滤掉任务状态不等于4出库已完成
// sortedList.removeIf(item -> item.getTaskStatus() != 4);
return sortedList;
}
@ -728,11 +690,17 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
}
if (!CollectionUtils.isEmpty(list)) {
for (LeaseApplyInfo applyInfo : list) {
// 根据id去查询出库数量
LeaseApplyInfo outList = leaseApplyInfoMapper.getOutList(applyInfo);
if (outList != null) {
if (applyInfo.getPreCountNum().compareTo(outList.getAlNum()) == 0) {
applyInfo.setIsConfirm(2);
// 根据id去查询总出库数量
LeaseApplyInfo totalInfo = leaseApplyInfoMapper.getOutList(applyInfo);
// 根据id去查询确认总出库数量
LeaseApplyInfo info = leaseApplyInfoMapper.getInfoList(applyInfo);
if (totalInfo != null) {
if (info != null) {
if (info.getAlNum().compareTo(totalInfo.getAlNum()) == 0) {
applyInfo.setIsConfirm(2);
} else {
applyInfo.setIsConfirm(1);
}
} else {
applyInfo.setIsConfirm(1);
}
@ -793,7 +761,9 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
private boolean containsKeyword(LeaseApplyInfo item, String keyWord) {
return (item.getMaTypeNames() != null && item.getMaTypeNames().contains(keyWord)) ||
(item.getLeaseUnit() != null && item.getLeaseUnit().contains(keyWord)) ||
(item.getUnitName() != null && item.getUnitName().contains(keyWord)) ||
(item.getLeaseProject() != null && item.getLeaseProject().contains(keyWord)) ||
(item.getProjectName() != null && item.getProjectName().contains(keyWord)) ||
(item.getCode() != null && item.getCode().contains(keyWord)) ||
(item.getCreateBy() != null && item.getCreateBy().contains(keyWord)) ||
(item.getLeasePerson() != null && item.getLeasePerson().contains(keyWord)) ||
@ -1274,6 +1244,24 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
*/
@Override
public AjaxResult leaseOut(LeaseOutRequestVo leaseOutRequestVo) {
// 判断库存是否充足
if (!CollectionUtils.isEmpty(leaseOutRequestVo.getLeaseOutDetailsList())) {
LeaseOutDetails leaseOutDetails = leaseOutRequestVo.getLeaseOutDetailsList().get(0);
if (leaseOutDetails != null) {
if (leaseOutDetails.getManageType().equals(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId())) {
LeaseApplyDetails details = leaseApplyDetailsMapper.getPendingLeaseApplyDetails(leaseOutDetails);
if (leaseOutDetails.getInputNum().compareTo(details.getOutNum()) > 0) {
return AjaxResult.error("出库数量大于领料数量,请重新输入选择");
}
}
if (leaseOutDetails.getManageType().equals(MaTypeManageTypeEnum.CODE_DEVICE.getTypeId())) {
LeaseApplyDetails details = leaseApplyDetailsMapper.getPendingCodeLeaseApplyDetails(leaseOutDetails);
if (BigDecimal.valueOf(leaseOutRequestVo.getLeaseOutDetailsList().size()).compareTo(details.getOutNum()) > 0) {
return AjaxResult.error("出库数量大于领料数量,请重新输入选择");
}
}
}
}
for (LeaseOutDetails bean : leaseOutRequestVo.getLeaseOutDetailsList()) {
if (Objects.isNull(bean)) {
continue;

View File

@ -901,8 +901,8 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
*/
private boolean containsKeyWord(LeasePublishInfo item, String keyWord) {
return (item.getMaTypeNames() != null && item.getMaTypeNames().contains(keyWord)) ||
(item.getUnitName() != null && item.getUnitName().contains(keyWord)) ||
(item.getProjectName() != null && item.getProjectName().contains(keyWord)) ||
(item.getLeaseUnit() != null && item.getLeaseUnit().contains(keyWord)) ||
(item.getLeaseProject() != null && item.getLeaseProject().contains(keyWord)) ||
(item.getCode() != null && item.getCode().contains(keyWord)) ||
(item.getCreateBy() != null && item.getCreateBy().contains(keyWord)) ||
(item.getLeasePerson() != null && item.getLeasePerson().contains(keyWord)) ||

View File

@ -292,7 +292,9 @@ public class ProAuthorizeServiceImpl implements ProAuthorizeService {
private boolean containsKeyWord(LeasePublishInfo item, String keyWord) {
return (item.getMaTypeNames() != null && item.getMaTypeNames().contains(keyWord)) ||
(item.getUnitName() != null && item.getUnitName().contains(keyWord)) ||
(item.getLeaseUnit() != null && item.getLeaseUnit().contains(keyWord)) ||
(item.getProjectName() != null && item.getProjectName().contains(keyWord)) ||
(item.getLeaseProject() != null && item.getLeaseProject().contains(keyWord)) ||
(item.getCode() != null && item.getCode().contains(keyWord)) ||
(item.getCreateBy() != null && item.getCreateBy().contains(keyWord)) ||
(item.getLeasePerson() != null && item.getLeasePerson().contains(keyWord)) ||

View File

@ -149,4 +149,15 @@ public class RepairAuditDetails extends BaseEntity {
@ApiModelProperty(value = "单位")
private String unitName;
@ApiModelProperty(value = "关键字")
private String keyWord;
public String getKeyWord() {
return keyWord;
}
public void setKeyWord(String keyWord) {
this.keyWord = keyWord;
}
}

View File

@ -196,7 +196,7 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
}
}
if (CollectionUtil.isNotEmpty(repairQuestList)) {
String keyWord = repairAuditDetails.getKeyword();
String keyWord = repairAuditDetails.getKeyWord();
// 如果关键字不为空进行过滤
if (!StringUtils.isBlank(keyWord)) {
repairQuestList = repairQuestList.stream()
@ -221,6 +221,7 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
private boolean containsKeyword(ScrapApplyDetailsVO item, String keyWord) {
return (item.getItemType() != null && item.getItemType().contains(keyWord)) ||
(item.getRepairTaskCode() != null && item.getRepairTaskCode().contains(keyWord)) ||
(item.getScrapNum() != null && item.getScrapNum().contains(keyWord)) ||
(item.getRepairNum() != null && item.getRepairNum().contains(keyWord)) ||
(item.getUnitName() != null && item.getUnitName().contains(keyWord)) ||
(item.getProjectName() != null && item.getProjectName().contains(keyWord)) ||

View File

@ -1069,6 +1069,7 @@ public class RepairServiceImpl implements RepairService {
.setCreateBy(loginUser.getUsername());
repairApplyRecord.setScrapType(partList.get(0).getScrapType());
repairApplyRecord.setScrapReason(partList.get(0).getScrapReason());
repairApplyRecord.setScrapId(partList.get(0).getScrapId());
// 不选维修配件时, 只添加维修记录表
repairMapper.addRecord(repairApplyRecord);
}
@ -1082,6 +1083,7 @@ public class RepairServiceImpl implements RepairService {
.setCreateBy(loginUser.getUsername());
repairApplyRecord.setScrapType(partList.get(0).getScrapType());
repairApplyRecord.setScrapReason(partList.get(0).getScrapReason());
repairApplyRecord.setScrapId(partList.get(0).getScrapId());
// 不选维修配件时, 只添加维修记录表
repairMapper.addRecord(repairApplyRecord);
}

View File

@ -427,6 +427,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="getMonthMaxOrderByDate" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
bm_qrcode_box
WHERE
MONTH ( create_time ) = #{month}
AND YEAR ( create_time ) = #{year}
</select>
<update id="updateTaskStatus">
UPDATE tm_task SET task_status = 22 WHERE task_id = #{taskId}
</update>

View File

@ -673,5 +673,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
parent_id = #{record.parentId}
AND new_type = #{record.typeId}
</select>
<select id="getPendingLeaseApplyDetails" resultType="com.bonus.material.lease.domain.LeaseApplyDetails">
SELECT
parent_id AS parentId,
type_id AS typeId,
pre_num AS preNum,
al_num AS alNum,
pre_num - IFNULL( al_num, 0 ) AS outNum
FROM
lease_apply_details
WHERE
id = #{id}
</select>
<select id="getPendingCodeLeaseApplyDetails" resultType="com.bonus.material.lease.domain.LeaseApplyDetails">
SELECT
parent_id AS parentId,
type_id AS typeId,
pre_num AS preNum,
al_num AS alNum,
pre_num - IFNULL( al_num, 0 ) AS outNum
FROM
lease_apply_details
WHERE
parent_id = #{parentId} and type_id = #{typeId}
</select>
</mapper>

View File

@ -135,12 +135,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="directAuditTime != null "> and lai.direct_audit_time = #{directAuditTime}</if>
<if test="directAuditRemark != null and directAuditRemark != ''"> and lai.direct_audit_remark = #{directAuditRemark}</if>
<if test="companyId != null "> and lai.company_id = #{companyId}</if>
<if test="statusList != null and statusList.size() > 0">
<!--<if test="statusList != null and statusList.size() > 0">
and tt.task_status in
<foreach item="item" collection="statusList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</if>-->
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
and COALESCE(lai.release_time, lai.create_time) BETWEEN CONCAT(#{startTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59')
</if>
@ -721,17 +721,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
su.sign_url AS leaseSignUrl,
su.sign_type AS leaseSignType,
tt.task_type AS taskType,
lai.material_man AS materialMan,
lod.confirm_time AS confirmTime,
lod.confirm_remark AS confirmRemark,
mt3.type_id AS firstId,
lpd.create_time AS releaseTime,
bp.external_id as externalId,
lai.create_time as createTime
bp.external_id as externalId
FROM
lease_apply_info lai
lease_publish_details lpd
LEFT JOIN lease_apply_info lai ON lai.id = lpd.parent_id
LEFT JOIN tm_task tt ON lai.task_id = tt.task_id
LEFT JOIN lease_publish_details lpd ON lpd.parent_id = lai.id
LEFT JOIN (SELECT IFNULL( sum(out_num ), 0) AS num, parent_id, publish_task, is_confirm, confirm_remark, confirm_time, lease_sign_id from lease_out_details
GROUP BY parent_id) lod ON lpd.parent_id = lod.parent_id
LEFT JOIN bm_unit bu ON bu.unit_id = lpd.unit_id
@ -758,20 +754,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND lpd.publish_task = #{publishTask}
</if>
GROUP BY
lai.id
ORDER BY
lpd.create_time DESC
lpd.publish_task
ORDER BY lpd.create_time DESC
</select>
<select id="getOutList" resultType="com.bonus.common.biz.domain.lease.LeaseApplyInfo">
SELECT
parent_id as id,
SUM( lod.out_num ) as alNum
SUM(out_num) as alNum
FROM
lease_out_details lod
lease_out_details
WHERE
is_confirm = 2
AND parent_id = #{id}
parent_id = #{id}
HAVING
SUM( out_num ) > 0
</select>
<update id="confirmLeaseTask">
@ -869,4 +865,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and create_time BETWEEN CONCAT(#{startTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59')
</if>
</select>
<select id="getInfoList" resultType="com.bonus.common.biz.domain.lease.LeaseApplyInfo">
SELECT
parent_id AS id,
SUM( out_num ) AS alNum
FROM
lease_out_details
WHERE
is_confirm = 2
AND parent_id = #{id}
HAVING
SUM( out_num ) > 0
</select>
</mapper>