领用申请,领用记录查询

This commit is contained in:
hayu 2025-02-17 17:43:58 +08:00
parent cbc6e0fb39
commit 36ceb1b340
15 changed files with 941 additions and 20 deletions

View File

@ -250,4 +250,7 @@ public class LeaseApplyInfo extends BaseEntity{
*/
@ApiModelProperty(value = "是否为领用申请")
private Integer isLease;
@ApiModelProperty(value = "采购申请编号")
private String applyCode;
}

View File

@ -19,8 +19,7 @@ public enum TmTaskTypeEnum {
TM_TASK_REPAIR_INPUT(11, "修饰后入库任务"),
TM_TASK_PART_LEASE(12, "配件领料任务"),
TM_TASK_PART_TYPE(13, "配件新购"),
TM_TASK_REPAIR_NUM(14, "数量维修人员信息附件"),
TM_TASK_LEASE_INPUT(15, "领用任务");
TM_TASK_REPAIR_NUM(14, "数量维修人员信息附件");
private final Integer taskTypeId;
private final String taskTypeName;

View File

@ -0,0 +1,104 @@
package com.bonus.material.lease.controller;
import cn.hutool.core.convert.Convert;
import com.bonus.common.biz.config.ListPagingUtil;
import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
import com.bonus.common.core.utils.ServletUtils;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.material.common.annotation.PreventRepeatSubmit;
import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
import com.bonus.material.lease.service.ILeaseApplyInfoService;
import com.bonus.material.lease.service.ILeaseTaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
/**
* @author hay
* @description 业务办理--领用任务
* @date 2025/2/17 13:13
*/
@Api(tags = "领用任务接口")
@RestController
@RequestMapping("/leaseTask")
public class LeaseTaskController extends BaseController {
@Resource
private ILeaseTaskService service;
/**
* 新增领用任务
*/
@ApiOperation(value = "新增领用任务")
@PreventRepeatSubmit
@SysLog(title = "领用任务", businessType = OperaType.INSERT, logType = 1, module = "领用申请->新增领用任务")
@PostMapping
public AjaxResult add(@NotNull(message = "领用任务不能为空") @RequestBody LeaseApplyRequestVo leaseApplyRequestVo) {
try {
return service.insertLeaseApplyInfo(leaseApplyRequestVo);
} catch (Exception e) {
return error("系统错误, " + e.getMessage());
}
}
/**
* 领用记录查询
*/
@ApiOperation(value = "领用记录列表查询")
@GetMapping("/list")
public AjaxResult list(LeaseApplyInfo leaseApplyInfo) {
Integer pageIndex = Convert.toInt(ServletUtils.getParameter("pageNum"), 1);
Integer pageSize = Convert.toInt(ServletUtils.getParameter("pageSize"), 10);
try {
List<LeaseApplyInfo> list = service.selectLeaseApplyInfoList(leaseApplyInfo);
return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list));
} catch (Exception e) {
return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, new ArrayList<>()));
}
}
/**
* 领用记录详情查看
*/
@ApiOperation(value = "领用记录详情查看")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@NotNull(message = "领用任务ID不能为空") @PathVariable("id") Long id,
@RequestParam(value = "keyWord", required = false) String keyWord) {
return success(service.selectLeaseApplyInfoById(id, keyWord));
}
/**
* 修改领用任务
*/
@ApiOperation(value = "修改领用任务")
@PreventRepeatSubmit
@SysLog(title = "领用任务", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改领用任务")
@PutMapping
public AjaxResult edit(@RequestBody @NotNull LeaseApplyRequestVo leaseApplyRequestVo) {
try {
return toAjax(service.updateLeaseApplyInfo(leaseApplyRequestVo));
} catch (Exception e) {
return error("系统错误, " + e.getMessage());
}
}
/**
* 删除领用任务
*/
@ApiOperation(value = "删除领用任务")
@PreventRepeatSubmit
@SysLog(title = "领用任务", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除领用任务")
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(service.deleteLeaseApplyInfoByIds(ids));
}
}

View File

@ -0,0 +1,63 @@
package com.bonus.material.lease.mapper;
import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
import com.bonus.material.lease.domain.LeaseApplyDetails;
import java.util.List;
/**
* @description 业务办理--领用任务
* @author hay
* @date 2025/2/17 13:18
*/
public interface LeaseTaskMapper {
/**
* 新增领用任务
*
* @param leaseApplyInfo 领用任务
* @return 结果
*/
int insertLeaseApplyInfo(LeaseApplyInfo leaseApplyInfo);
/**
* 插入详情数据
*
* @param leaseApplyDetails 领用任务详情
* @return 结果
*/
int insertLeaseApplyDetailsList(List<LeaseApplyDetails> leaseApplyDetails);
/**
* 领用记录列表查询
*
* @param leaseApplyInfo 领用任务
* @return 领用任务集合
*/
List<LeaseApplyInfo> selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo);
/**
* 查询领用任务详细列表
*
* @param leaseApplyDetails 领用任务详细
* @return 领用任务详细集合
*/
List<LeaseApplyDetails> selectLeaseApplyDetailsList(LeaseApplyDetails leaseApplyDetails);
/**
* 修改领用任务
*
* @param leaseApplyInfo 领用任务
* @return 结果
*/
int updateLeaseApplyInfo(LeaseApplyInfo leaseApplyInfo);
/**
* 查询领用任务
*
* @param leaseApplyInfo
* @return 领用任务
*/
LeaseApplyInfo selectLeaseApplyInfoById(LeaseApplyInfo leaseApplyInfo);
}

View File

@ -0,0 +1,59 @@
package com.bonus.material.lease.service;
import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
import java.util.List;
/**
* @author hay
* @description 业务办理--领用任务
* @date 2025/2/17 13:15
*/
public interface ILeaseTaskService {
/**
* 新增领用任务
*
* @param leaseApplyRequestVo 领用任务
* @return 结果
*/
AjaxResult insertLeaseApplyInfo(LeaseApplyRequestVo leaseApplyRequestVo);
/**
* 领用记录列表查询
*
* @param leaseApplyInfo 领用任务
* @return 领用任务集合
*/
List<LeaseApplyInfo> selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo);
/**
* 领用记录详情查看
*
* @param id
* @param keyWord
* @return
*/
LeaseApplyRequestVo selectLeaseApplyInfoById(Long id, String keyWord);
/**
* 修改领用任务
*
* @param leaseApplyRequestVo 领用任务
* @return 结果
*/
boolean updateLeaseApplyInfo(LeaseApplyRequestVo leaseApplyRequestVo);
/**
* 批量删除领用任务
*
* @param ids 需要删除的领用任务主键集合
* @return 结果
*/
int deleteLeaseApplyInfoByIds(Long[] ids);
}

View File

@ -177,33 +177,25 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
/**
* 新增领料任务
*
*
* @param leaseApplyRequestVo 领料任务
* @return 结果
*/
@Override
public AjaxResult insertLeaseApplyInfo(LeaseApplyRequestVo leaseApplyRequestVo) {
if (null == leaseApplyRequestVo.getLeaseApplyInfo()) {
return AjaxResult.error("请先填写任务信息");
return AjaxResult.error("请先填写领料任务信息");
}
if (CollectionUtil.isEmpty(leaseApplyRequestVo.getLeaseApplyDetailsList())) {
return AjaxResult.error("请先添加任务物资明细");
return AjaxResult.error("请先添加领料任务物资明细");
}
leaseApplyRequestVo.getLeaseApplyInfo().setCreateTime(DateUtils.getNowDate());
leaseApplyRequestVo.getLeaseApplyInfo().setCreateBy(SecurityUtils.getUsername());
try {
int thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_LEASE.getTaskTypeId());
String taskCode = genderTaskCode(thisMonthMaxOrder);
Integer taskStatus;
if (leaseApplyRequestVo.getLeaseApplyInfo().getIsLease()!=null){
//领用申请任务
taskStatus=LeaseTaskStatusEnum.LEASE_TASK_ZERO.getStatus();
} else {
//领料申请任务
taskStatus=LeaseTaskStatusEnum.LEASE_TASK_TO_PUBLISHED.getStatus();
}
TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_LEASE.getTaskTypeId(),
taskStatus,
LeaseTaskStatusEnum.LEASE_TASK_TO_PUBLISHED.getStatus(),
leaseApplyRequestVo.getLeaseApplyInfo().getCompanyId(),thisMonthMaxOrder + 1, taskCode);
tmTask.setCreateTime(DateUtils.getNowDate());
tmTask.setCreateBy(SecurityUtils.getUsername());

View File

@ -0,0 +1,320 @@
package com.bonus.material.lease.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
import com.bonus.common.biz.enums.LeaseTaskStatusEnum;
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;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.back.domain.vo.MaCodeVo;
import com.bonus.material.basic.mapper.BmFileInfoMapper;
import com.bonus.material.lease.domain.LeaseApplyDetails;
import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
import com.bonus.material.lease.mapper.LeaseApplyDetailsMapper;
import com.bonus.material.lease.mapper.LeaseApplyInfoMapper;
import com.bonus.material.lease.mapper.LeaseTaskMapper;
import com.bonus.material.lease.service.ILeaseTaskService;
import com.bonus.material.task.domain.TmTask;
import com.bonus.material.task.domain.TmTaskAgreement;
import com.bonus.material.task.mapper.TmTaskAgreementMapper;
import com.bonus.material.task.mapper.TmTaskMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @author hay
* @description 业务办理--领用任务
* @date 2025/2/17 13:16
*/
@Service
@Slf4j
public class LeaseTaskServiceImpl implements ILeaseTaskService {
@Resource
private LeaseTaskMapper mapper;
@Resource
private LeaseApplyInfoMapper leaseApplyInfoMapper;
@Resource
private LeaseApplyDetailsMapper leaseApplyDetailsMapper;
@Resource
private TmTaskMapper tmTaskMapper;
@Resource
TmTaskAgreementMapper tmTaskAgreementMapper;
@Resource
private BmFileInfoMapper bmFileInfoMapper;
/**
* 新增领用任务
*
* @param leaseApplyRequestVo 领用任务
* @return 结果
*/
@Override
public AjaxResult insertLeaseApplyInfo(LeaseApplyRequestVo leaseApplyRequestVo) {
if (null == leaseApplyRequestVo.getLeaseApplyInfo()) {
return AjaxResult.error("请先填写领用任务信息");
}
if (CollectionUtil.isEmpty(leaseApplyRequestVo.getLeaseApplyDetailsList())) {
return AjaxResult.error("请先添加领用任务物资明细");
}
leaseApplyRequestVo.getLeaseApplyInfo().setCreateTime(DateUtils.getNowDate());
leaseApplyRequestVo.getLeaseApplyInfo().setCreateBy(SecurityUtils.getUsername());
try {
int thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_LEASE.getTaskTypeId());
String taskCode = genderTaskCode(thisMonthMaxOrder);
TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_LEASE.getTaskTypeId(),
LeaseTaskStatusEnum.LEASE_TASK_ZERO.getStatus(),
leaseApplyRequestVo.getLeaseApplyInfo().getCompanyId(),thisMonthMaxOrder + 1, taskCode);
tmTask.setCreateTime(DateUtils.getNowDate());
tmTask.setCreateBy(SecurityUtils.getUsername());
tmTaskMapper.insertTmTask(tmTask);
TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), leaseApplyRequestVo.getLeaseApplyInfo().getAgreementId());
tmTaskAgreement.setCreateTime(DateUtils.getNowDate());
tmTaskAgreement.setCreateBy(SecurityUtils.getUsername());
tmTaskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement);
leaseApplyRequestVo.getLeaseApplyInfo().setTaskId(tmTask.getTaskId());
leaseApplyRequestVo.getLeaseApplyInfo().setCode(taskCode);
/** 设置审批人为默认的董班长 --防止代码冲突 **/
Long peopleId = leaseApplyInfoMapper.getDirectAuditBy();
leaseApplyRequestVo.getLeaseApplyInfo().setDirectAuditBy(peopleId);
/** 设置审批人为默认的董班长 --防止代码冲突 **/
int count = mapper.insertLeaseApplyInfo(leaseApplyRequestVo.getLeaseApplyInfo());
if (!CollectionUtils.isEmpty(leaseApplyRequestVo.getLeaseApplyInfo().getBmFileInfos())) {
leaseApplyRequestVo.getLeaseApplyInfo().getBmFileInfos().forEach(bmFileInfo -> {
bmFileInfo.setTaskType(2);
bmFileInfo.setTaskId(tmTask.getTaskId());
bmFileInfo.setModelId(leaseApplyRequestVo.getLeaseApplyInfo().getId());
bmFileInfo.setFileType(5L);
bmFileInfo.setCreateBy(SecurityUtils.getUsername());
bmFileInfo.setCreateTime(DateUtils.getNowDate());
bmFileInfoMapper.insertBmFileInfo(bmFileInfo);
});
}
if (count > 0) {
return insertPurchaseCheckDetails(leaseApplyRequestVo.getLeaseApplyDetailsList(), leaseApplyRequestVo.getLeaseApplyInfo().getId());
} else {
return AjaxResult.error("新增任务失败,lease_apply_info表插入0条");
}
} catch (DataAccessException e) {
return AjaxResult.error("数据库操作失败:" + e.getMessage());
} catch (Exception e) {
return AjaxResult.error("新增任务失败:" + e.getMessage());
}
}
/**
* 领用记录列表查询
*
* @param leaseApplyInfo 领用任务
* @return 领用任务
*/
@Override
public List<LeaseApplyInfo> selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo) {
Long userId = SecurityUtils.getUserId();
leaseApplyInfo.setUserId(userId == 0 ? null : userId);
List<LeaseApplyInfo> list = mapper.selectLeaseApplyInfoList(leaseApplyInfo);
if (!CollectionUtils.isEmpty(list)) {
String keyWord = leaseApplyInfo.getKeyWord();
// 如果关键字不为空进行过滤
if (!StringUtils.isBlank(keyWord)) {
list = list.stream()
.filter(item -> containsKeyword(item, keyWord))
.collect(Collectors.toList());
}
}
return list;
}
/**
* 根据id查询领用任务
*
* @param id 领用任务id
* @return 领用任务
*/
@Override
public LeaseApplyRequestVo selectLeaseApplyInfoById(Long id, String keyWord) {
try {
LeaseApplyInfo leaseApplyInfo = new LeaseApplyInfo();
leaseApplyInfo.setId(id);
Long userId = SecurityUtils.getUserId();
leaseApplyInfo.setUserId(userId);
Optional<LeaseApplyInfo> optionalInfo = Optional.ofNullable(mapper.selectLeaseApplyInfoById(leaseApplyInfo));
LeaseApplyRequestVo leaseApplyRequestVo = new LeaseApplyRequestVo();
optionalInfo.ifPresent(info -> {
BmFileInfo bmFileInfo = new BmFileInfo();
bmFileInfo.setModelId(id);
bmFileInfo.setTaskType(2);
bmFileInfo.setFileType(5L);
List<BmFileInfo> bmFileInfoList = bmFileInfoMapper.selectBmFileInfoList(bmFileInfo);
if (!CollectionUtils.isEmpty(bmFileInfoList)) {
info.setBmFileInfos(bmFileInfoList);
}
/** 设置审批人签名url 防止代码冲突 **/
String directAuditUrl = leaseApplyInfoMapper.getDirectAuditUrl(info);
info.setDirectAuditSignUrl(directAuditUrl);
/** 设置审批人签名url 防止代码冲突 **/
/** 设置发料单位 防止代码冲突 **/
if(info.getDirectAuditBy() != null){
String sendUnit = leaseApplyInfoMapper.getSendUnit(info);
info.setSendUnit(sendUnit);
}
/** 设置发料单位 防止代码冲突 **/
leaseApplyRequestVo.setLeaseApplyInfo(info);
// 获取领料单详情
List<LeaseApplyDetails> details = mapper.selectLeaseApplyDetailsList(new LeaseApplyDetails(info.getId(), keyWord, userId));
if (!CollectionUtils.isEmpty(details)) {
leaseApplyRequestVo.setLeaseApplyDetailsList(details);
for (LeaseApplyDetails detail : details) {
// 获取编码详情
List<MaCodeVo> maCodeVoList = leaseApplyDetailsMapper.getCodeList(id, detail.getTypeId());
if (!CollectionUtils.isEmpty(maCodeVoList)) {
detail.setMaCodeVoList(maCodeVoList);
}
}
}
});
return leaseApplyRequestVo;
} catch (Exception e) {
// 记录异常日志
System.err.println("Error occurred while selecting lease apply info by ID: " + id + e.getMessage());
throw new RuntimeException("Failed to select lease apply info", e);
}
}
@Override
public boolean updateLeaseApplyInfo(LeaseApplyRequestVo leaseApplyRequestVo) {
try {
// 提取到局部变量中减少重复代码
LeaseApplyInfo leaseApplyInfo = leaseApplyRequestVo.getLeaseApplyInfo();
if (leaseApplyInfo != null && leaseApplyInfo.getId() != null) {
leaseApplyInfo.setUpdateTime(DateUtils.getNowDate());
leaseApplyInfo.setUpdateBy(SecurityUtils.getUsername());
// 去除创建一个新的数组对象直接复用
Long[] ids = {leaseApplyInfo.getId()};
if (CollectionUtil.isNotEmpty(leaseApplyInfo.getBmFileInfos())) {
// 删除原有数据
BmFileInfo bmFileInfo = new BmFileInfo();
bmFileInfo.setTaskId(leaseApplyInfo.getTaskId());
bmFileInfo.setModelId(leaseApplyInfo.getId());
bmFileInfo.setTaskType(2);
bmFileInfo.setFileType(5L);
bmFileInfoMapper.deleteBmFileInfoByBizInfo(bmFileInfo);
for (BmFileInfo fileInfo : leaseApplyInfo.getBmFileInfos()) {
fileInfo.setTaskId(leaseApplyInfo.getTaskId());
fileInfo.setModelId(leaseApplyInfo.getId());
fileInfo.setTaskType(2);
fileInfo.setFileType(5L);
fileInfo.setCreateBy(SecurityUtils.getUsername());
fileInfo.setCreateTime(DateUtils.getNowDate());
bmFileInfoMapper.insertBmFileInfo(fileInfo);
}
}
if (CollectionUtil.isNotEmpty(leaseApplyRequestVo.getLeaseApplyDetailsList())) {
// 业务逻辑代码
leaseApplyDetailsMapper.deleteLeaseApplyDetailsByParentIds(ids);
insertPurchaseCheckDetails(leaseApplyRequestVo.getLeaseApplyDetailsList(), leaseApplyInfo.getId());
}
// 修改外层info
mapper.updateLeaseApplyInfo(leaseApplyInfo);
return true;
}
return false;
} catch (DataAccessException dae) {
throw new ServiceException("数据访问异常: " + dae.getMessage());
} catch (IllegalArgumentException iae) {
throw new ServiceException("非法参数异常: " + iae.getMessage());
} catch (Exception e) {
throw new ServiceException("未知异常: " + e.getMessage());
}
}
/**
* 批量删除领用任务
*
* @param ids 需要删除的领用任务主键
* @return 结果
*/
@Override
public int deleteLeaseApplyInfoByIds(Long[] ids) {
return leaseApplyInfoMapper.deleteLeaseApplyInfoByIds(ids);
}
/**
* 关键字搜索
* @param item
* @param keyWord
* @return
*/
private boolean containsKeyword(LeaseApplyInfo 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.getCode() != null && item.getCode().contains(keyWord)) ||
(item.getCreateBy() != null && item.getCreateBy().contains(keyWord)) ||
(item.getLeasePerson() != null && item.getLeasePerson().contains(keyWord)) ||
(item.getLeasePhone() != null && item.getLeasePhone().contains(keyWord)) ||
(item.getContractPart() != null && item.getContractPart().contains(keyWord)) ||
(item.getImpUnitName() != null && item.getImpUnitName().contains(keyWord));
}
private AjaxResult insertPurchaseCheckDetails(List<LeaseApplyDetails> leaseApplyDetailsList, Long parentId) {
if (!CollectionUtils.isEmpty(leaseApplyDetailsList)) {
for (LeaseApplyDetails details : leaseApplyDetailsList) {
details.setParentId(parentId);
details.setCreateTime(DateUtils.getNowDate());
details.setCreateBy(SecurityUtils.getUsername());
}
// 批量插入详情数据
int count = mapper.insertLeaseApplyDetailsList(leaseApplyDetailsList);
if (count > 0) {
return AjaxResult.success("新增任务成功");
} else {
return AjaxResult.error("新增任务失败,lease_apply_detail详情表插入0条");
}
} else {
return AjaxResult.success("新增任务成功");
}
}
/**
* 生成任务编号并构造Tm_Task任务对象
* @param thisMonthMaxOrder 当月最大单号
* @return 任务对象
*/
private static String genderTaskCode(Integer thisMonthMaxOrder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date nowDate = DateUtils.getNowDate();
String format = dateFormat.format(nowDate);
String result = format.replace("-", "");
return MaterialConstants.LEASE_TASK_TYPE_LABEL + result + String.format("-%03d", thisMonthMaxOrder + 1);
}
}

View File

@ -126,4 +126,14 @@ public class StandardConfigManageController extends BaseController {
return service.delConfigDetails(bean);
}
/**
* 根据配置id查询配置明细
* 返回参数和规格型号树参数一致
*/
@ApiOperation(value = "根据配置id查询配置明细")
@GetMapping("/getListsByConfigId")
public AjaxResult getListsByConfigId(StandardConfigDetailsVo bean) {
return service.getListsByConfigId(bean);
}
}

View File

@ -44,6 +44,9 @@ public class StandardConfigDetailsVo extends Type {
@ApiModelProperty(value = "物资名称")
private String typeName;
@ApiModelProperty(value = "类型名称")
private String maTypeName;
@ApiModelProperty(value = "规格ID")
private Long typeId;
@ -56,12 +59,26 @@ public class StandardConfigDetailsVo extends Type {
@ApiModelProperty(value = "计量单位")
private String unit;
@ApiModelProperty(value = "计量单位")
private String unitName;
@ApiModelProperty(value = "数量")
private BigDecimal num;
@ApiModelProperty(value = "预领数量")
private BigDecimal preNum;
/** 实时库存 */
@ApiModelProperty(value = "实时库存")
private BigDecimal storageNum;
@ApiModelProperty(value = "备注")
private String remark;
/** 管理方式(0编号 1计数) */
@ApiModelProperty(value = "管理方式(0编号 1计数)")
private String manageType;
@ApiModelProperty(value = "创建者")
private String createBy;

View File

@ -114,4 +114,12 @@ public interface StandardConfigManageMapper {
* @return
*/
List<StandardConfigBean> getConfigLevelTwoList(StandardConfigBean bean);
/**
* 根据配置id查询配置明细
* 返回参数和规格型号树参数一致
* @param configId
* @return
*/
List<StandardConfigDetailsVo> getListsByConfigId(Long configId);
}

View File

@ -82,4 +82,12 @@ public interface StandardConfigManageService {
* @return
*/
AjaxResult getConfigLevelTwoList(StandardConfigBean bean);
/**
* 根据配置id查询配置明细
* 返回参数和规格型号树参数一致
* @param bean
* @return
*/
AjaxResult getListsByConfigId(StandardConfigDetailsVo bean);
}

View File

@ -79,6 +79,18 @@ public class StandardConfigManageServiceImpl implements StandardConfigManageServ
}
}
@Override
public AjaxResult getListsByConfigId(StandardConfigDetailsVo bean) {
List<StandardConfigDetailsVo> list = new ArrayList<>();
try {
list= mapper.getListsByConfigId(bean.getConfigId());
return AjaxResult.success(list);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.success(new ArrayList<>());
}
}
@Override
public int insertConfig(StandardConfigBean bean) {
//根据类型名称判断去重

View File

@ -112,10 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="leaseType != null and leaseType != ''"> and lai.lease_type = #{leaseType}</if>
<if test="estimateLeaseTime != null "> and lai.estimate_lease_time = #{estimateLeaseTime}</if>
<if test="costBearingParty != null and costBearingParty != ''"> and lai.cost_bearing_party = #{costBearingParty}</if>
<if test="isLease == null">and tt.task_status != '0'</if>
<if test="isLease != null">
and lai.config_id is not null
</if>
and tt.task_status != '0'
</where>
GROUP BY lai.id
ORDER BY tt.task_status,tt.create_time desc
@ -153,7 +150,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="leaseType != null">lease_type,</if>
<if test="estimateLeaseTime != null">estimate_lease_time,</if>
<if test="costBearingParty != null">cost_bearing_party,</if>
<if test="configId != null">config_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="code != null">#{code},</if>
@ -180,7 +176,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="leaseType != null">#{leaseType},</if>
<if test="estimateLeaseTime != null">#{estimateLeaseTime},</if>
<if test="costBearingParty != null">#{costBearingParty},</if>
<if test="configId != null">#{configId},</if>
</trim>
</insert>

View File

@ -0,0 +1,301 @@
<?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="com.bonus.material.lease.mapper.LeaseTaskMapper">
<resultMap type="com.bonus.common.biz.domain.lease.LeaseApplyInfo" id="LeaseApplyInfoResult">
<result property="id" column="id" />
<result property="code" column="code" />
<result property="taskId" column="task_id" />
<result property="leasePerson" column="lease_person" />
<result property="phone" column="phone" />
<result property="type" column="type" />
<result property="companyAuditBy" column="company_audit_by" />
<result property="companyAuditTime" column="company_audit_time" />
<result property="companyAuditRemark" column="company_audit_remark" />
<result property="deptAuditBy" column="dept_audit_by" />
<result property="deptAuditTime" column="dept_audit_time" />
<result property="deptAuditRemark" column="dept_audit_remark" />
<result property="directAuditBy" column="direct_audit_by" />
<result property="directAuditTime" column="direct_audit_time" />
<result property="directAuditRemark" column="direct_audit_remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="companyId" column="company_id" />
<result property="directId" column="direct_id" />
<result property="leaseType" column="lease_type" />
<result property="estimateLeaseTime" column="estimate_lease_time" />
<result property="costBearingParty" column="cost_bearing_party" />
<result property="leaseProject" column="pro_name" />
<result property="leaseProjectId" column="project_id" />
<result property="leaseUnit" column="unit_name" />
<result property="leaseUnitId" column="unit_id" />
<result property="agreementCode" column="agreement_code" />
<result property="leaseSignUrl" column="lease_sign_url" />
<result property="leaseSignType" column="lease_sign_type" />
<result property="applyCode" column="apply_code" />
</resultMap>
<resultMap type="com.bonus.material.lease.domain.LeaseApplyDetails" id="LeaseApplyDetailsResult">
<result property="id" column="id" />
<result property="parentId" column="parent_id" />
<result property="typeId" column="type_id" />
<result property="typeName" column="type_name" />
<result property="maTypeName" column="ma_type_name" />
<result property="unitName" column="unit_name" />
<result property="unitValue" column="unit_value" />
<result property="storageNum" column="storage_num" />
<result property="preNum" column="pre_num" />
<result property="auditNum" column="audit_num" />
<result property="alNum" column="al_num" />
<result property="status" column="status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="companyId" column="company_id" />
</resultMap>
<sql id="selectLeaseApplyInfoVo">
select
lai.id, lai.code, lai.task_id, lai.lease_person, lai.phone, lai.type, lai.company_audit_by,lai.apply_code,
lai.company_audit_time, lai.company_audit_remark, lai.dept_audit_by, lai.dept_audit_time,
lai.dept_audit_remark, lai.direct_audit_by, lai.direct_audit_time, lai.direct_audit_remark,
lai.create_by, lai.create_time, lai.update_by, lai.update_time, lai.remark, lai.company_id,
lai.direct_id, lai.lease_type, lai.estimate_lease_time, lai.cost_bearing_party, lai.lease_sign_url, lai.lease_sign_type,
bai.unit_id,bai.project_id,bu.unit_name, bp.pro_name, bai.agreement_code, tt.task_status as taskStatus,
sda.dict_label as taskStatusName,
IFNULL(sum(lad.pre_num),0) as preCountNum,
IFNULL(sum(lad.al_num),0) as alNum,
GROUP_CONCAT(DISTINCT mt1.type_name) AS maTypeNames,
bp.contract_part as contractPart,
sd.dept_name as impUnitName
from
lease_apply_info lai
left join tm_task tt on lai.task_id = tt.task_id
left join lease_apply_details lad on lai.id = lad.parent_id
left join tm_task_agreement tta on lai.task_id = tta.task_id
left join bm_agreement_info bai on tta.agreement_id = bai.agreement_id
left join bm_unit bu on bu.unit_id = bai.unit_id
left join bm_project bp on bp.pro_id = bai.project_id
left join sys_dept sd on sd.dept_id = bp.imp_unit
left join sys_dict_data sda on tt.task_status = sda.dict_value
and sda.dict_type = 'lease_task_status'
left join ma_type mt on lad.type_id = mt.type_id and mt.del_flag = '0'
left join ma_type mt1 on mt.parent_id = mt1.type_id and mt1.del_flag = '0'
<!-- <if test="userId != null">-->
<!-- JOIN ma_type_keeper mtk ON mtk.type_id = lad.type_id AND mtk.user_id = #{userId}-->
<!-- </if>-->
</sql>
<sql id="selectLeaseApplyDetailsVo">
select
lad.id, lad.parent_id, mt.type_id, mt.type_name, mt2.type_name as ma_type_name,
CASE mt.manage_type
WHEN 0 THEN
IFNULL(subquery0.num, 0)
ELSE
IFNULL(mt.storage_num, 0)
END as storage_num,
mt.manage_type as manageType,
(lad.pre_num - IF(lad.al_num IS NULL,'0',lad.al_num)) AS outNum,
IFNULL(lad.pre_num,0) as pre_num,
IFNULL(lad.audit_num,0) as audit_num,
IFNULL(lad.al_num,0) as al_num,
IFNULL(lad.status,0) as status, mt.unit_name,mt.unit_value,
lad.create_by, lad.create_time, lad.update_by, lad.update_time, lad.remark, lad.company_id
from
lease_apply_details lad
left join
ma_type mt on lad.type_id = mt.type_id and mt.`level` = '4' and mt.del_flag = '0'
left join
ma_type mt2 on mt2.type_id = mt.parent_id and mt2.`level` = '3' and mt2.del_flag = '0'
left join (SELECT mt.type_id,
mt2.type_name AS typeName,
mt.type_name AS typeModelName,
count(mm.ma_id) num
FROM ma_machine mm
LEFT JOIN ma_type mt ON mt.type_id = mm.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_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 = mt.type_id
<!-- <if test="userId != null">-->
<!-- JOIN ma_type_keeper mtk ON mtk.type_id = lad.type_id AND mtk.user_id = #{userId}-->
<!-- </if>-->
</sql>
<insert id="insertLeaseApplyInfo" parameterType="com.bonus.common.biz.domain.lease.LeaseApplyInfo" useGeneratedKeys="true" keyProperty="id">
insert into lease_apply_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="code != null">code,</if>
<if test="taskId != null">task_id,</if>
<if test="leasePerson != null">lease_person,</if>
<if test="phone != null">phone,</if>
<if test="type != null">type,</if>
<if test="companyAuditBy != null">company_audit_by,</if>
<if test="companyAuditTime != null">company_audit_time,</if>
<if test="companyAuditRemark != null">company_audit_remark,</if>
<if test="deptAuditBy != null">dept_audit_by,</if>
<if test="deptAuditTime != null">dept_audit_time,</if>
<if test="deptAuditRemark != null">dept_audit_remark,</if>
<if test="directAuditBy != null">direct_audit_by,</if>
<if test="directAuditTime != null">direct_audit_time,</if>
<if test="directAuditRemark != null">direct_audit_remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
<if test="companyId != null">company_id,</if>
<if test="directId != null">direct_id,</if>
<if test="leaseType != null">lease_type,</if>
<if test="estimateLeaseTime != null">estimate_lease_time,</if>
<if test="costBearingParty != null">cost_bearing_party,</if>
<if test="applyCode != null">apply_code,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="code != null">#{code},</if>
<if test="taskId != null">#{taskId},</if>
<if test="leasePerson != null">#{leasePerson},</if>
<if test="phone != null">#{phone},</if>
<if test="type != null">#{type},</if>
<if test="companyAuditBy != null">#{companyAuditBy},</if>
<if test="companyAuditTime != null">#{companyAuditTime},</if>
<if test="companyAuditRemark != null">#{companyAuditRemark},</if>
<if test="deptAuditBy != null">#{deptAuditBy},</if>
<if test="deptAuditTime != null">#{deptAuditTime},</if>
<if test="deptAuditRemark != null">#{deptAuditRemark},</if>
<if test="directAuditBy != null">#{directAuditBy},</if>
<if test="directAuditTime != null">#{directAuditTime},</if>
<if test="directAuditRemark != null">#{directAuditRemark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
<if test="companyId != null">#{companyId},</if>
<if test="directId != null">#{directId},</if>
<if test="leaseType != null">#{leaseType},</if>
<if test="estimateLeaseTime != null">#{estimateLeaseTime},</if>
<if test="costBearingParty != null">#{costBearingParty},</if>
<if test="applyCode != null">#{applyCode},</if>
</trim>
</insert>
<insert id="insertLeaseApplyDetailsList" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
insert into lease_apply_details
(parent_id, type_id, pre_num, al_num, `status`, create_by, create_time, update_by,
update_time, remark, company_id)
values
<foreach collection="list" item="item" separator=",">
(#{item.parentId,jdbcType=INTEGER}, #{item.typeId,jdbcType=INTEGER}, #{item.preNum,jdbcType=INTEGER},
#{item.alNum,jdbcType=INTEGER}, #{item.status,jdbcType=VARCHAR}, #{item.createBy,jdbcType=VARCHAR},
NOW(), #{item.updateBy,jdbcType=VARCHAR}, NOW(),
#{item.remark,jdbcType=VARCHAR}, #{item.companyId,jdbcType=INTEGER})
</foreach>
</insert>
<update id="updateLeaseApplyInfo">
update lease_apply_info
<trim prefix="SET" suffixOverrides=",">
<if test="code != null">code = #{code},</if>
<if test="taskId != null">task_id = #{taskId},</if>
<if test="leasePerson != null">lease_person = #{leasePerson},</if>
<if test="phone != null">phone = #{phone},</if>
<if test="type != null">`type` = #{type},</if>
<if test="companyAuditBy != null">company_audit_by = #{companyAuditBy},</if>
<if test="companyAuditTime != null">company_audit_time = #{companyAuditTime},</if>
<if test="companyAuditRemark != null">company_audit_remark = #{companyAuditRemark},</if>
<if test="deptAuditBy != null">dept_audit_by = #{deptAuditBy},</if>
<if test="deptAuditTime != null">dept_audit_time = #{deptAuditTime},</if>
<if test="deptAuditRemark != null">dept_audit_remark = #{deptAuditRemark},</if>
<if test="directAuditBy != null">direct_audit_by = #{directAuditBy},</if>
<if test="directAuditTime != null">direct_audit_time = #{directAuditTime},</if>
<if test="directAuditRemark != null">direct_audit_remark = #{directAuditRemark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="applyCode != null">apply_code = #{applyCode},</if>
update_time = now(),
<if test="remark != null">remark = #{remark},</if>
<if test="companyId != null">company_id = #{companyId},</if>
<if test="directId != null">direct_id = #{directId},</if>
<if test="leaseType != null">lease_type = #{leaseType},</if>
<if test="estimateLeaseTime != null">estimate_lease_time = #{estimateLeaseTime},</if>
<if test="costBearingParty != null">cost_bearing_party = #{costBearingParty},</if>
</trim>
where id = #{id}
</update>
<select id="selectLeaseApplyInfoList" parameterType="com.bonus.common.biz.domain.lease.LeaseApplyInfo" resultMap="LeaseApplyInfoResult">
<include refid="selectLeaseApplyInfoVo"/>
<where>
<if test="code != null and code != ''"> and lai.code = #{code}</if>
<if test="taskId != null "> and lai.task_id = #{taskId}</if>
<if test="leasePerson != null and leasePerson != ''"> and lai.lease_person = #{leasePerson}</if>
<if test="phone != null and phone != ''"> and lai.phone = #{phone}</if>
<if test="type != null and type != ''"> and lai.type = #{type}</if>
<if test="companyAuditBy != null "> and lai.company_audit_by = #{companyAuditBy}</if>
<if test="companyAuditTime != null "> and lai.company_audit_time = #{companyAuditTime}</if>
<if test="companyAuditRemark != null and companyAuditRemark != ''"> and lai.company_audit_remark = #{companyAuditRemark}</if>
<if test="deptAuditBy != null "> and lai.dept_audit_by = #{deptAuditBy}</if>
<if test="deptAuditTime != null "> and lai.dept_audit_time = #{deptAuditTime}</if>
<if test="deptAuditRemark != null and deptAuditRemark != ''"> and lai.dept_audit_remark = #{deptAuditRemark}</if>
<if test="directAuditBy != null "> and lai.direct_audit_by = #{directAuditBy}</if>
<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">
and tt.task_status in
<foreach item="item" collection="statusList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="keyWord != null and keyWord != ''">
and (bu.unit_name like concat('%', #{keyWord}, '%') or
bp.pro_name like concat('%', #{keyWord}, '%') or
lai.code like concat('%', #{keyWord}, '%') or
lai.create_by like concat('%', #{keyWord}, '%') or
lai.lease_person like concat('%', #{keyWord}, '%') or
lai.phone like concat('%', #{keyWord}, '%') or
bp.contract_part like concat('%', #{keyWord}, '%') or
sd.dept_name like concat('%', #{keyWord}, '%')
)
</if>
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
<![CDATA[ AND DATE_FORMAT( lai.create_time, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime} ]]>
</if>
<if test="directId != null "> and lai.direct_id = #{directId}</if>
<if test="leaseType != null and leaseType != ''"> and lai.lease_type = #{leaseType}</if>
<if test="estimateLeaseTime != null "> and lai.estimate_lease_time = #{estimateLeaseTime}</if>
<if test="costBearingParty != null and costBearingParty != ''"> and lai.cost_bearing_party = #{costBearingParty}</if>
and lai.apply_code is not null
</where>
GROUP BY lai.id
ORDER BY tt.task_status,tt.create_time desc
</select>
<select id="selectLeaseApplyDetailsList" parameterType="com.bonus.material.lease.domain.LeaseApplyDetails" resultMap="LeaseApplyDetailsResult">
<include refid="selectLeaseApplyDetailsVo"/>
<where>
<if test="parentId != null "> and lad.parent_id = #{parentId}</if>
<if test="keyword != null and keyword != ''">
AND (mt.type_name LIKE CONCAT('%', #{keyword}, '%')
OR mt2.type_name LIKE CONCAT('%', #{keyword}, '%'))
</if>
<if test="typeId != null "> and lad.type_id = #{typeId}</if>
<if test="preNum != null "> and lad.pre_num = #{preNum}</if>
<if test="auditNum != null "> and lad.audit_num = #{auditNum}</if>
<if test="alNum != null "> and lad.al_num = #{alNum}</if>
<if test="status != null and status != ''"> and lad.status = #{status}</if>
<if test="companyId != null "> and lad.company_id = #{companyId}</if>
</where>
</select>
<select id="selectLeaseApplyInfoById" parameterType="Long" resultMap="LeaseApplyInfoResult">
<include refid="selectLeaseApplyInfoVo"/>
where lai.id = #{id}
</select>
</mapper>

View File

@ -215,4 +215,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bsc.del_flag = 0
AND bsc.`level` = 2
</select>
<select id="getListsByConfigId" resultType="com.bonus.material.ma.domain.vo.StandardConfigDetailsVo">
select *
from (SELECT mt1.type_id as typeId,
mt1.manage_type as manageType,
mt2.type_name as maTypeName,
mt1.type_name as typeName,
mt1.unit_name as unitName,
bscd.num as preNum,
CASE mt1.manage_type
WHEN 0 THEN
IFNULL(subquery0.num, 0)
ELSE
IFNULL(mt1.storage_num, 0)
END as storageNum
FROM bm_standard_config_details bscd
LEFT JOIN ma_type mt1 on mt1.type_id = bscd.type_id and mt1.del_flag = 0
LEFT JOIN ma_type mt2 ON mt2.type_id = mt1.parent_id and mt2.del_flag = 0
left join (SELECT mt.type_id,
mt2.type_name AS typeName,
mt.type_name AS typeModelName,
count(mm.ma_id) num
FROM ma_machine mm
LEFT JOIN ma_type mt ON mt.type_id = mm.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_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 = mt1.type_id
WHERE bscd.config_id = #{configId}) a
where a.storageNum !=0
</select>
</mapper>