diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeaseOutSign.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeaseOutSign.java new file mode 100644 index 00000000..f132efc7 --- /dev/null +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeaseOutSign.java @@ -0,0 +1,22 @@ +package com.bonus.common.biz.domain.lease; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * @Author ma_sh + * @create 2025/6/20 17:16 + */ +@EqualsAndHashCode(callSuper = false) +@Data +@ToString +public class LeaseOutSign { + + @ApiModelProperty(value = "出库人签名URL") + private String outSignUrl; + + @ApiModelProperty(value = "出库人签名类型") + private int outSignType; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/archives/service/impl/ArchivesServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/archives/service/impl/ArchivesServiceImpl.java index 41193f0c..f10d3ef4 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/archives/service/impl/ArchivesServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/archives/service/impl/ArchivesServiceImpl.java @@ -608,6 +608,11 @@ public class ArchivesServiceImpl implements ArchivesService { } info.setUserId(userId); ElcSignatureInfo elcSignatureInfo = archivesMapper.getSign(info); + if (elcSignatureInfo != null) { + if (StringUtils.isNotBlank(elcSignatureInfo.getSignUrl())) { + elcSignatureInfo.setSignUrl("data:image/png;base64," + elcSignatureInfo.getSignUrl()); + } + } return AjaxResult.success(elcSignatureInfo); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java index 00aa94f5..02c8d56f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java @@ -156,6 +156,17 @@ public class BackApplyInfoController extends BaseController { return backApplyInfoService.getMachineById(dto); } + /** + * 根据单位和工程id查询领料机具 + * @param dto + * @return + */ + @ApiOperation(value = "根据单位和工程id查询领料机具") + @GetMapping("/selectMachineById") + public AjaxResult selectMachineById(BackApplyInfo dto){ + return backApplyInfoService.selectMachineById(dto); + } + /** * app根据设备编码去检索领料详情 * @param dto @@ -326,6 +337,16 @@ public class BackApplyInfoController extends BaseController { return backApplyInfoService.deleteBackApplyInfoById(backApplyInfo.getId()); } + /** + * todo :删除退料任务,仅供app使用(整张单据删除时,里面有内容,不允许删除) + */ + @ApiOperation(value = "APP删除退料任务") + @PreventRepeatSubmit + @PostMapping("/deleteByApp") + public AjaxResult deleteByApp(@RequestBody BackApplyInfo backApplyInfo) { + return backApplyInfoService.deleteByApp(backApplyInfo.getId()); + } + /** * app内层删除退料任务 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java index fd373809..13313097 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java @@ -151,5 +151,19 @@ public interface IBackApplyInfoService { * @return */ BackApplyInfoVo selectSecondList(BackApplyInfoVo dto); + + /** + * 根据单位和工程id查询领料机具 + * @param dto + * @return + */ + AjaxResult selectMachineById(BackApplyInfo dto); + + /** + * APP删除退料任务 + * @param id + * @return + */ + AjaxResult deleteByApp(Long id); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java index 28a6c357..283dad89 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java @@ -92,7 +92,9 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { String directAuditUrl = backApplyInfoMapper.getDirectAuditUrl(backApplyInfo); backApplyInfo.setDirectAuditSignUrl(directAuditUrl); /** 设置审批人签名url 防止代码冲突 **/ - + if (StringUtils.isNotBlank(backApplyInfo.getBackSignUrl())) { + backApplyInfo.setBackSignUrl("data:image/png;base64," + backApplyInfo.getBackSignUrl()); + } backApplyRequestVo.setBackApplyInfo(backApplyInfo); //查询退料详情信息 backApplyInfo.setKeyWord(keyWord); @@ -1176,7 +1178,7 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { @Override public AjaxResult getMachine(BackApplyInfo dto) { // 首先根据id、maCode或者qrCode进行查询,看此条数据是否已经存在该退料单中 - if (dto.getId() != null) { + if (dto.getId() != null && (StringUtils.isNotBlank(dto.getMaCode()) || StringUtils.isNotBlank(dto.getQrCode()))) { List maCodeVoList = backApplyInfoMapper.getMachineByIdAndCode(dto); if (CollectionUtils.isNotEmpty(maCodeVoList)) { return AjaxResult.error("该编码已存在该退料单中,请重新选择"); @@ -1197,7 +1199,7 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { } return AjaxResult.success(list); } - return AjaxResult.error(HttpCodeEnum.SYSTEM_ERROR.getCode(), "编码检索为空"); + return AjaxResult.error(HttpCodeEnum.SYSTEM_ERROR.getCode(), "检索为空或该设备非该单位和工程所领"); } /** @@ -1439,6 +1441,54 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { return vo; } + /** + * 根据单位和工程id查询领料机具 + * @param dto + * @return + */ + @Override + public AjaxResult selectMachineById(BackApplyInfo dto) { + List list = backApplyInfoMapper.getMachineById(dto); + if (CollectionUtils.isNotEmpty(list)) { + // 根据id查询该单据可能存在的设备编码 + List maCodeVos = backApplyInfoMapper.selectByCode(dto.getId()); + if (CollectionUtils.isNotEmpty(maCodeVos)) { + // 获取maCodeVos中的编码 + List maCodes = maCodeVos.stream().map(MaCodeVo::getMaCode).collect(Collectors.toList()); + // 将maCodes中存在于list集合中的编码,把数据从list集合中去除 + list = list.stream(). + filter(info -> !maCodes.contains(info.getMaCode())). + collect(Collectors.toList()); + } + } + return AjaxResult.success(list); + } + + /** + * APP删除退料任务 + * @param id + * @return + */ + @Override + public AjaxResult deleteByApp(Long id) { + try { + // 查询信息 + BackApplyInfo backApplyInfo = backApplyInfoMapper.selectBackApplyInfoById(id); + List backApplyDetailsList = backApplyInfoMapper.selectBackApplyDetailsListByTaskId(backApplyInfo); + if (CollectionUtils.isNotEmpty(backApplyDetailsList)) { + return AjaxResult.error("该单据中存在相关退料数据,不允许删除"); + } + // 删除相关任务信息 + int result = deleteTaskInfo(backApplyInfo); + if (result > 0) { + return AjaxResult.success(result); + } + } catch (Exception e) { + e.printStackTrace(); + } + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg()); + } + /** * 关键字搜索 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/vo/LeaseApplyRequestVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/vo/LeaseApplyRequestVo.java index 5114e773..319899f6 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/vo/LeaseApplyRequestVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/domain/vo/LeaseApplyRequestVo.java @@ -1,7 +1,7 @@ package com.bonus.material.lease.domain.vo; +import com.bonus.common.biz.domain.lease.LeaseOutSign; import com.bonus.common.core.web.domain.BaseEntity; -import com.bonus.material.back.domain.vo.MaCodeVo; import com.bonus.material.lease.domain.LeaseApplyDetails; import com.bonus.common.biz.domain.lease.LeaseApplyInfo; import io.swagger.annotations.ApiModelProperty; @@ -34,6 +34,11 @@ public class LeaseApplyRequestVo extends BaseEntity { private List leaseOutVoList; + /** + * 库管签名集合 + */ + private List kgSignList; + private int statusFlag; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java index e7aa1011..79662cdf 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/mapper/LeaseApplyInfoMapper.java @@ -3,6 +3,7 @@ package com.bonus.material.lease.mapper; import java.util.Date; import java.util.List; import com.bonus.common.biz.domain.lease.LeaseApplyInfo; +import com.bonus.common.biz.domain.lease.LeaseOutSign; import org.apache.ibatis.annotations.Param; /** @@ -99,4 +100,11 @@ public interface LeaseApplyInfoMapper { * @return */ List getNoSignList(LeaseApplyInfo leaseApplyInfo); + + /** + * 查询领料单的领料单出库签名 + * @param id + * @return + */ + List selectLeaseApplyOutList(Long id); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java index 49f815db..2484dd5a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java @@ -10,6 +10,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.bonus.common.biz.config.PoiOutPage; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.BmFileInfo; +import com.bonus.common.biz.domain.lease.LeaseOutSign; import com.bonus.common.biz.enums.HttpCodeEnum; import com.bonus.common.biz.enums.LeaseTaskStatusEnum; import com.bonus.common.biz.enums.MaMachineStatusEnum; @@ -122,6 +123,10 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { String sendUnit = leaseApplyInfoMapper.getSendUnit(info); info.setSendUnit(sendUnit); } + // 电子签名进行base64拼接 + if (StringUtils.isNotBlank(info.getLeaseSignUrl())) { + info.setLeaseSignUrl("data:image/png;base64," + info.getLeaseSignUrl()); + } /** 设置发料单位 防止代码冲突 **/ leaseApplyRequestVo.setLeaseApplyInfo(info); @@ -156,6 +161,16 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { } } } + // 根据id查询领料出库情况,查询出库人电子签名详情 + List outSignList = leaseApplyInfoMapper.selectLeaseApplyOutList(id); + if (!CollectionUtils.isEmpty(outSignList)) { + for (LeaseOutSign applyInfo : outSignList) { + if (StringUtils.isNotBlank(applyInfo.getOutSignUrl())) { + applyInfo.setOutSignUrl("data:image/png;base64," + applyInfo.getOutSignUrl()); + } + } + leaseApplyRequestVo.setKgSignList(outSignList); + } }); @@ -179,7 +194,7 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { List list = leaseApplyInfoMapper.selectLeaseApplyInfoList(leaseApplyInfo); // 如果statusList包含3、4、5,则为领料出库查询,需查询领用出库数据,进行拼接 if (!CollectionUtils.isEmpty(leaseApplyInfo.getStatusList())) { - if (leaseApplyInfo.getStatusList().contains(3) || leaseApplyInfo.getStatusList().contains(4) || leaseApplyInfo.getStatusList().contains(5)) { + if (leaseApplyInfo.getStatusList().containsAll(Arrays.asList(3, 4, 5))) { // 查询领用出库数据 List leaseApplyOutList = leaseApplyInfoMapper.selectPublishList(leaseApplyInfo); if (!CollectionUtils.isEmpty(leaseApplyOutList)) { @@ -209,7 +224,8 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { } // 使用 Stream API 进行降序排序 List sortedList = list.stream() - .sorted(Comparator.comparing(LeaseApplyInfo::getCreateTime).reversed()) + .sorted(Comparator.comparing(LeaseApplyInfo::getCreateTime, + Comparator.nullsFirst(Comparator.naturalOrder())).reversed()) .collect(Collectors.toList()); if (!CollectionUtils.isEmpty(sortedList)) { String keyWord = leaseApplyInfo.getKeyWord(); @@ -274,9 +290,9 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { } // 使用 Stream API 进行降序排序 List sortedList = list.stream() - .sorted(Comparator.comparing(LeaseApplyInfo::getCreateTime).reversed()) + .sorted(Comparator.comparing(LeaseApplyInfo::getCreateTime, + Comparator.nullsFirst(Comparator.naturalOrder())).reversed()) .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(sortedList)) { String keyWord = leaseApplyInfo.getKeyWord(); // 如果关键字不为空,进行过滤 @@ -779,12 +795,12 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { if (CollectionUtil.isNotEmpty(recordList)) { recordList = recordList.stream().filter(item -> item.getMaStatus().equals(MaMachineStatusEnum.IN_STORE.getStatus().toString())).collect(Collectors.toList()); if (recordList.size() > 0) { - msg = "监测到" + bmQrcodeInfo.getQrCode() + "符合出库条件,请确认是否出库!"; + msg = "监测到当前设备符合出库条件,请确认是否出库!"; }else{ - msg = "监测到" + bmQrcodeInfo.getQrCode() + "编码不符合出库条件,请检查后重新提交!"; + msg = "监测到当前设备不符合出库条件,无法出库!"; } } else { - msg = "监测到" + bmQrcodeInfo.getQrCode() + "编码不符合出库条件,请检查后重新提交!"; + msg = "监测到当前设备不符合出库条件,无法出库!!"; } // 返回包含设备列表和消息的结果 Map result = new HashMap<>(2); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseOutDetailsServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseOutDetailsServiceImpl.java index ef0b2142..c5ca9099 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseOutDetailsServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseOutDetailsServiceImpl.java @@ -443,7 +443,7 @@ public class LeaseOutDetailsServiceImpl implements ILeaseOutDetailsService { } if (res > 0) { // 插入领料出库明细表(lease_out_details) - record.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + record.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString()); res = leaseOutDetailsMapper.insertLeaseOutDetails(record); if (res > 0) { // 普通机具减少 (ma_type 设备规格表)的库存数量 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java index 43fc3270..7d49c880 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java @@ -3,10 +3,12 @@ package com.bonus.material.purchase.domain.vo; import com.bonus.material.archives.domain.ElcSignatureInfo; import com.bonus.material.purchase.domain.PurchaseCheckDetails; import com.bonus.material.purchase.domain.PurchaseSignRecord; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -27,7 +29,8 @@ public class PurchaseCheckFormVo { private String supplier; @ApiModelProperty(value = "到货日期") - private String arrivalDate; + @JsonFormat(pattern = "yyyy-MM-dd") + private Date arrivalDate; @ApiModelProperty(value = "供应科") private String supplyDept; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/domain/vo/ScrapDetailsListVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/domain/vo/ScrapDetailsListVo.java index a138fc61..a9413365 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/domain/vo/ScrapDetailsListVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/scrap/domain/vo/ScrapDetailsListVo.java @@ -51,7 +51,7 @@ public class ScrapDetailsListVo { private String scrapSource; /** (0自然,1人为) */ - @Excel(name = "损坏类型", readConverterExp = "0=自然损坏,1=人为损坏") + @Excel(name = "损坏类型") private String scrapType; @ApiModelProperty(value = "任务创建人昵称") diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml index 4405491b..f7613a09 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml @@ -125,9 +125,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and sai.ma_id = lod.ma_id LEFT JOIN bm_agreement_info ba ON sai.agreement_id = ba.agreement_id WHERE - 1 = 1 and mm.ma_status = '2' and mm.type_id = #{typeId} + mm.ma_status = '2' AND ba.unit_id = #{unitId} AND ba.project_id = #{proId} + + and mm.type_id = #{typeId} + GROUP BY mm.ma_code @@ -150,7 +153,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bu.unit_name AS unitName, bp.pro_id AS proId, bp.pro_name AS proName, - bai.direct_audit_by AS directAuditBy + bai.direct_audit_by AS directAuditBy, + bai.back_sign_url AS backSignUrl, + bai.back_sign_type AS backSignType FROM back_apply_info bai LEFT JOIN tm_task_agreement tta ON bai.task_id = tta.task_id @@ -303,39 +308,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + update lease_apply_info diff --git a/bonus-modules/bonus-material/src/main/resources/template/yewu.docx b/bonus-modules/bonus-material/src/main/resources/template/yewu.docx index cf68e69f..39afca99 100644 Binary files a/bonus-modules/bonus-material/src/main/resources/template/yewu.docx and b/bonus-modules/bonus-material/src/main/resources/template/yewu.docx differ