新购验收绑定修改

This commit is contained in:
syruan 2024-12-24 19:30:58 +08:00
parent 022052d82b
commit 3fa849fa98
18 changed files with 188 additions and 106 deletions

View File

@ -15,10 +15,11 @@ public enum PurchaseTaskStatusEnum {
TO_CHECK(2, "待验收", PurchaseTaskStageEnum.CHECK.getCode()),
TO_BIND(3, "待绑定", PurchaseTaskStageEnum.BIND.getCode()),
TO_STORE(4, "待入库", PurchaseTaskStageEnum.STORE.getCode()),
TO_CHECK_AFTER_REJECT(12, "验收(驳回)", PurchaseTaskStageEnum.CHECK.getCode()),
TO_BIND_AFTER_REJECT(13, "绑定(驳回)", PurchaseTaskStageEnum.BIND.getCode()),
TO_STORE_AFTER_REJECT(14, "入库(驳回)", PurchaseTaskStageEnum.STORE.getCode()),
TO_CHECK_AFTER_REJECT(12, "验收(驳回)", PurchaseTaskStageEnum.MANAGE.getCode()),
TO_BIND_AFTER_REJECT(13, "绑定(驳回)", PurchaseTaskStageEnum.CHECK.getCode()),
TO_STORE_AFTER_REJECT(14, "入库(驳回)", PurchaseTaskStageEnum.BIND.getCode()),
IN_STORE(19, "已入库", PurchaseTaskStageEnum.STORE.getCode()),
TASK_IN_PROGRESS(21, "入库进行中", PurchaseTaskStageEnum.STORE.getCode()),
TASK_FINISHED(22, "入库已完成", PurchaseTaskStageEnum.STORE.getCode());
@ -34,26 +35,32 @@ public enum PurchaseTaskStatusEnum {
}
// 判断任务状态是否为此阶段所属状态
public static boolean isStatusOfStage(Integer status, PurchaseTaskStageEnum stageEnum) {
PurchaseTaskStatusEnum findEnum = null;
for (PurchaseTaskStatusEnum statusEnum : values()) {
if (statusEnum.status.equals(status)) {
findEnum = statusEnum;
break;
}
public static boolean isStatusOfStage(Integer status, PurchaseTaskStageEnum stageEnum, Integer manageType) {
if (status == null || stageEnum == null || manageType == null) {
return true;
}
if (findEnum == null || stageEnum == null) {
PurchaseTaskStatusEnum findEnum = PurchaseTaskStatusEnum.getByStatus(status);
if (findEnum == null) {
return true;
} else {
}
// 如果是最后的入库完成状态那么说明流程已走完不需要再对比状态了
if (Objects.equals(findEnum.getStatus(), TASK_FINISHED.getStatus()) || Objects.equals(findEnum.getStatus(), IN_STORE.getStatus())) {
return false;
}
return findEnum.getStage().equals(stageEnum.getCode());
// 如果是验收阶段, 并且是数量管理的物资那么入库被驳回的也要判断为未完成因为计数管理不需要绑定直接从验收到入库
if (stageEnum == PurchaseTaskStageEnum.CHECK) {
if (Objects.equals(findEnum, PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT) && Objects.equals(manageType, 1)) {
return true;
}
}
return findEnum.getStage().equals(stageEnum.getCode());
}
public static PurchaseTaskStatusEnum getByStatus(Integer status) {
for (PurchaseTaskStatusEnum statusEnum : values()) {
if (statusEnum.status.equals(status)) {

View File

@ -64,6 +64,13 @@ public interface MachineMapper
*/
int deleteMachineByMaId(Long maId);
/**
* 根据maCode,typeId 删除机具设备
*
* @return 结果
*/
int deleteMachineByMaCodeAndTypeId(@Param("maCode") String maCode, @Param("typeId") Long typeId);
/**
* 批量删除机具设备管理
*

View File

@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
@ -77,7 +78,7 @@ public class PurchaseBindController extends BaseController {
@PreventRepeatSubmit
@RequiresPermissions("purchase:bind:reject")
@PostMapping("/reject")
public AjaxResult reject(@RequestBody PurchaseDto dto) {
public AjaxResult reject(@RequestBody @NotNull(message = "参数不能为空") PurchaseDto dto) {
return purchaseBindService.reject(dto);
}

View File

@ -89,7 +89,7 @@ public class PurchaseCheckInfoController extends BaseController {
//@RequiresPermissions("purchase:info:edit")
@SysLog(title = "新购验收任务", businessType = OperaType.UPDATE, module = "物资新购->修改新购验收任务")
@PutMapping
public AjaxResult edit(@RequestBody PurchaseCheckDto purchaseCheckDto) {
public AjaxResult edit(@RequestBody @NotNull(message = "请求参数不能为空") @Valid PurchaseCheckDto purchaseCheckDto) {
try {
return toAjax(purchaseCheckInfoService.updatePurchaseCheckInfo(purchaseCheckDto));
} catch (Exception e) {

View File

@ -8,14 +8,7 @@ import com.bonus.material.common.annotation.PreventRepeatSubmit;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.material.purchase.domain.PurchaseMacodeInfo;
import com.bonus.material.purchase.service.IPurchaseMacodeInfoService;
@ -111,10 +104,10 @@ public class PurchaseMacodeInfoController extends BaseController {
*/
@ApiOperation(value = "删除新购验收编号管理")
@PreventRepeatSubmit
@RequiresPermissions("purchase:info:remove")
// @RequiresPermissions("purchase:info:remove")
@SysLog(title = "新购验收编号管理", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除新购验收编号管理")
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
@PostMapping("/un_bind")
public AjaxResult unBind(@RequestBody List<Integer> ids) {
return toAjax(purchaseMacodeInfoService.deletePurchaseMacodeInfoByIds(ids));
}
}

View File

@ -69,7 +69,7 @@ public class PurchaseNoticePersonController extends BaseController {
@ApiOperation(value = "导出新购短信通知人员列表")
@PreventRepeatSubmit
@RequiresPermissions("purchase:person:notice")
@SysLog(title = "新购短信通知人员", businessType = OperaType.EXPORT, module = "物资新购->导出新购短信通知人员")
@SysLog(title = "新购短信管理", businessType = OperaType.EXPORT, module = "物资新购->导出新购短信通知人员")
@PostMapping("/export")
public void export(HttpServletResponse response, PurchaseNoticePerson purchaseNoticePerson) {
List<PurchaseNoticePerson> list = purchaseNoticePersonService.selectPurchaseNoticePersonList(purchaseNoticePerson);
@ -137,7 +137,7 @@ public class PurchaseNoticePersonController extends BaseController {
@ApiOperation(value = "修改新购短信通知人员")
@PreventRepeatSubmit
@RequiresPermissions("purchase:person:notice")
@SysLog(title = "新购短信通知人员", businessType = OperaType.UPDATE, module = "物资新购->修改新购短信通知人员")
@SysLog(title = "新购短信管理", businessType = OperaType.UPDATE, module = "物资新购->修改新购短信通知人员")
@PutMapping
public AjaxResult edit(@RequestBody PurchaseNoticePerson purchaseNoticePerson) {
try {

View File

@ -12,6 +12,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import com.bonus.common.core.web.domain.BaseEntity;
import lombok.experimental.Accessors;
/**
* 新购验收任务详细对象 purchase_check_details
@ -20,6 +21,7 @@ import com.bonus.common.core.web.domain.BaseEntity;
@EqualsAndHashCode(callSuper = false)
@Data
@ToString
@Accessors(chain = true)
public class PurchaseCheckDetails extends BaseEntity {
private static final long serialVersionUID = 1L;

View File

@ -15,11 +15,10 @@ import java.util.Date;
* @author xsheng
* @date 2024-10-16
*/
@Data
@ToString
public class PurchaseMacodeInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键id */
@ -59,6 +58,8 @@ public class PurchaseMacodeInfo extends BaseEntity {
@Excel(name = "状态", readConverterExp = "0=,待入库,1=,已入库")
private String status;
private String keyWord;
/** 数据所属组织 */
@Excel(name = "数据所属组织")
@ApiModelProperty(value = "数据所属组织")

View File

@ -57,7 +57,9 @@ public interface PurchaseMacodeInfoMapper {
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deletePurchaseMacodeInfoByIds(Long[] ids);
public int deletePurchaseMacodeInfoByIds(@Param("ids") List<Integer> ids);
public int updatePurchaseMacodeInfoByIds(@Param("ids") List<Integer> ids);
public int getPurchaseMaCodeCount(@Param("taskId") Long taskId, @Param("typeId") Long typeId);
}

View File

@ -48,7 +48,7 @@ public interface IPurchaseMacodeInfoService {
* @param ids 需要删除的新购验收编号管理主键集合
* @return 结果
*/
public int deletePurchaseMacodeInfoByIds(Long[] ids);
public int deletePurchaseMacodeInfoByIds(List<Integer> ids);
/**
* 删除新购验收编号管理信息

View File

@ -232,35 +232,32 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult reject(PurchaseDto dto) {
//一级页面驳回
int result = 0;
if (dto.getTaskId() != null) {
//一级页面驳回
//根据任务id查询详细信息
List<PurchaseVo> list = purchaseBindMapper.getDetails(dto);
if (CollectionUtils.isNotEmpty(list)) {
for (PurchaseVo purchaseVo : list) {
//更新状态为已驳回
if (purchaseVo.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND.getStatus()) ||
purchaseVo.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus())) {
purchaseBindMapper.updateStatusById(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus(), purchaseVo.getPurchaseId());
if (purchaseVo.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND.getStatus()) || purchaseVo.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus())) {
result += purchaseBindMapper.updateStatusById(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus(), purchaseVo.getPurchaseId());
}
}
}
//result += tmTaskMapper.updateStatusById(MaterialConstants.TEN_CONSTANT, dto.getTaskId());
}
} else if (dto.getPurchaseId() != null) {
// 二级页面驳回
if (dto.getPurchaseId() != null) {
List<String> idList = Arrays.asList(dto.getPurchaseId().split(","));
String[] idList = dto.getPurchaseId().split(",");
for (String purchaseId : idList) {
result += purchaseBindMapper.updateStatusById(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus(), purchaseId);
}
}
if (result > 0) {
return AjaxResult.success("操作成功");
}
} else {
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
}

View File

@ -7,7 +7,6 @@ import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import cn.hutool.core.map.MapUtil;
import com.bonus.common.biz.constant.BmConfigItems;
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
import com.bonus.common.biz.enums.PurchaseTaskStageEnum;
@ -30,7 +29,6 @@ import com.bonus.material.purchase.mapper.PurchaseMacodeInfoMapper;
import com.bonus.material.task.domain.TmTask;
import com.bonus.material.task.mapper.TmTaskMapper;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import com.bonus.material.purchase.mapper.PurchaseCheckInfoMapper;
@ -50,7 +48,7 @@ import static com.bonus.common.biz.constant.MaterialConstants.PURCHASE_TASK_TYPE
@Service
public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
@Autowired
@Resource
private IBmConfigService bmConfigService;
@Resource
@ -59,7 +57,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
@Resource
private PurchaseCheckDetailsMapper purchaseCheckDetailsMapper;
@Autowired
@Resource
private PurchaseMacodeInfoMapper purchaseMacodeInfoMapper;
@Resource
@ -87,20 +85,35 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
PurchaseCheckInfo purchaseCheckInfo = purchaseCheckInfoMapper.selectPurchaseCheckInfoById(purchaseQueryDto.getId());
if (purchaseCheckInfo != null) {
purchaseCheckDtoResult.setPurchaseCheckInfo(purchaseCheckInfo);
boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
List<PurchaseCheckDetails> purchaseCheckDetailsList;
if (isAllowPartTransfer) {
purchaseCheckDetailsList = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
if (purchaseQueryDto.getStatusList().contains(PurchaseTaskStatusEnum.TO_STORE.getStatus())) {
purchaseCheckDetailsList = purchaseCheckDetailsList.stream()
.filter(o -> MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(o.getManageType()) ||
MaTypeManageTypeEnum.CODE_DEVICE.getTypeId().equals(o.getManageType()) && getPurchaseMaCodeCount(o.getTaskId(), o.getTypeId()) > 0)
.collect(Collectors.toList());
// boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
List<PurchaseCheckDetails> purchaseCheckDetailsList = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
if (purchaseQueryDto.getTaskStage() != null) {
// 根据阶段来过滤详情数据
switch (purchaseQueryDto.getTaskStage()) {
case PURCHASE_TASK_STAGE_MANAGE:
// 新购管理阶段展示全部任务不进行过滤
break;
case PURCHASE_TASK_STAGE_CHECK:
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o -> !PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus())).collect(Collectors.toList());
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o -> !PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus())).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_BIND:
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o ->
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) && !PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK.getStatus().equals(o.getStatus()) && !PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus().equals(o.getStatus())
).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_STORE:
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o -> PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus())
).collect(Collectors.toList());
break;
default:
System.err.println("未知的新购任务阶段:" + purchaseQueryDto.getTaskStage());
}
} else {
purchaseQueryDto.setStatusList(null);
purchaseCheckDetailsList = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
}
//针对于app查询可能存在的验收图片
extractedFile(purchaseCheckDetailsList);
purchaseCheckDtoResult.setPurchaseCheckDetailsList(purchaseCheckDetailsList);
@ -110,7 +123,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
/**
* 提取app新购验收文件信息
* @param purchaseCheckDetailsList
* @param purchaseCheckDetailsList 新购验收明细列表
*/
private void extractedFile(List<PurchaseCheckDetails> purchaseCheckDetailsList) {
if (!CollectionUtils.isEmpty(purchaseCheckDetailsList)) {
@ -169,19 +182,19 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
break;
case PURCHASE_TASK_STAGE_CHECK:
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> !PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus())).collect(Collectors.toList());
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> !PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus())).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_BIND:
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus())
!PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus().equals(o.getStatus())
).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_STORE:
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) && !PurchaseTaskStatusEnum.TO_CHECK.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus()) && !PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus().equals(o.getStatus())
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus())
).collect(Collectors.toList());
break;
default:
@ -203,7 +216,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
throw new IllegalArgumentException("采购数量和价格必须为非负数");
}
if (!isIncludeStage) {
isIncludeStage = PurchaseTaskStatusEnum.isStatusOfStage(detail.getStatus(), PurchaseTaskStageEnum.getByCode(purchaseQueryDto.getTaskStage()));
isIncludeStage = PurchaseTaskStatusEnum.isStatusOfStage(detail.getStatus(), PurchaseTaskStageEnum.getByCode(purchaseQueryDto.getTaskStage()), detail.getManageType());
}
// 更新 purchaseMaTotalNumber
@ -309,11 +322,13 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
if (!CollectionUtils.isEmpty(purchaseCheckDetailsList)) {
for (PurchaseCheckDetails details : purchaseCheckDetailsList) {
details.setTaskId(taskId);
details.setStatus(PurchaseTaskStatusEnum.TO_NOTICE.getStatus());
details.setStatus(Objects.equals(PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus(), details.getStatus()) ?
PurchaseTaskStatusEnum.TO_CHECK.getStatus() :
PurchaseTaskStatusEnum.TO_NOTICE.getStatus());
details.setInputStatus("0");
List<BmFileInfo> bmFileInfos = details.getBmFileInfos();
if (!CollectionUtils.isEmpty(bmFileInfos)) {
bmFileInfos.stream().forEach(o -> o.setTaskId(taskId));
bmFileInfos.forEach(o -> o.setTaskId(taskId));
bmFileInfoMapper.insertBmFileInfos(bmFileInfos);
}
}
@ -341,13 +356,13 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
List<PurchaseCheckDetails> codeList = purchaseCheckDetails.stream().filter(o -> MaTypeManageTypeEnum.CODE_DEVICE.getTypeId().equals(o.getManageType())).collect(Collectors.toList());
List<PurchaseCheckDetails> numList = purchaseCheckDetails.stream().filter(o -> MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(o.getManageType())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(codeList) && codeList.size() > 0) {
if (!CollectionUtils.isEmpty(codeList)) {
for (PurchaseCheckDetails details : codeList) {
details.setStatus(PurchaseTaskStatusEnum.TO_BIND.getStatus());
updateCount += purchaseCheckDetailsMapper.updatePurchaseDetails4Check(details);
}
}
if (!CollectionUtils.isEmpty(numList) && numList.size() > 0) {
if (!CollectionUtils.isEmpty(numList)) {
for (PurchaseCheckDetails details : numList) {
details.setStatus(PurchaseTaskStatusEnum.TO_STORE.getStatus());
updateCount += purchaseCheckDetailsMapper.updatePurchaseDetails4Check(details);
@ -367,6 +382,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
AjaxResult result = new AjaxResult();
if (!CollectionUtils.isEmpty(purchaseVerifyVo.getPurchaseCheckDetailsList())) {
if (BooleanUtils.isTrue(purchaseVerifyVo.getVerifyPass())) {
// 验收通过处理流程
for (PurchaseCheckDetails details : purchaseVerifyVo.getPurchaseCheckDetailsList()) {
if (MaTypeManageTypeEnum.CODE_DEVICE.getTypeId().equals(details.getManageType())) {
details.setStatus(PurchaseTaskStatusEnum.TO_BIND.getStatus());
@ -377,8 +393,9 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
extractedFile(details);
}
} else {
// 验收驳回处理流程
for (PurchaseCheckDetails details : purchaseVerifyVo.getPurchaseCheckDetailsList()) {
details.setStatus(PurchaseTaskStatusEnum.TO_NOTICE.getStatus());
details.setStatus(PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus());
result = purchaseCheckDetailsMapper.updatePurchaseDetails4Check(details) > 0 ? AjaxResult.success("detail验证驳回成功") : AjaxResult.error("details无验证信息");
tmTaskMapper.updateTmTask(new TmTask()
.setTaskId(details.getTaskId())
@ -396,7 +413,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
/**
* app新购验收图片上传方法抽取
* @param details
* @param details 详情
*/
private void extractedFile(PurchaseCheckDetails details) {
if (!CollectionUtils.isEmpty(details.getBmFileInfos())) {
@ -458,6 +475,14 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
public boolean updatePurchaseCheckInfo(PurchaseCheckDto purchaseCheckDto) {
purchaseCheckDto.getPurchaseCheckInfo().setUpdateTime(DateUtils.getNowDate());
purchaseCheckDto.getPurchaseCheckInfo().setUpdateBy(SecurityUtils.getUsername());
if (!CollectionUtils.isEmpty(purchaseCheckDto.getPurchaseCheckDetailsList())) {
purchaseCheckDto.getPurchaseCheckDetailsList().removeIf(Objects::isNull);
purchaseCheckDto.getPurchaseCheckDetailsList().removeIf(o -> Objects.isNull(o.getStatus()));
purchaseCheckDto.getPurchaseCheckDetailsList().removeIf(o ->
!Objects.equals(o.getStatus(), PurchaseTaskStatusEnum.TO_NOTICE.getStatus()) &&
!Objects.equals(o.getStatus(), PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus())
);
}
try {
Long[] ids = new Long[]{purchaseCheckDto.getPurchaseCheckInfo().getId()};
purchaseCheckDetailsMapper.deletePurchaseCheckDetailsByParentIds(ids);

View File

@ -1,13 +1,20 @@
package com.bonus.material.purchase.service.impl;
import java.math.BigDecimal;
import java.util.List;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.material.ma.mapper.MachineMapper;
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
import com.bonus.material.purchase.mapper.PurchaseCheckDetailsMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bonus.material.purchase.mapper.PurchaseMacodeInfoMapper;
import com.bonus.material.purchase.domain.PurchaseMacodeInfo;
import com.bonus.material.purchase.service.IPurchaseMacodeInfoService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* 新购验收编号管理Service业务层处理
@ -17,9 +24,16 @@ import com.bonus.material.purchase.service.IPurchaseMacodeInfoService;
*/
@Service
public class PurchaseMacodeInfoServiceImpl implements IPurchaseMacodeInfoService {
@Autowired
private PurchaseMacodeInfoMapper purchaseMacodeInfoMapper;
@Resource
private MachineMapper machineMapper;
@Resource
private PurchaseCheckDetailsMapper purchaseCheckDetailsMapper;
/**
* 查询新购验收编号管理
*
@ -81,8 +95,34 @@ public class PurchaseMacodeInfoServiceImpl implements IPurchaseMacodeInfoService
* @return 结果
*/
@Override
public int deletePurchaseMacodeInfoByIds(Long[] ids) {
return purchaseMacodeInfoMapper.deletePurchaseMacodeInfoByIds(ids);
@Transactional(rollbackFor = Exception.class)
public int deletePurchaseMacodeInfoByIds(List<Integer> ids) {
for (Integer id : ids) {
PurchaseMacodeInfo purchaseMacodeInfo = purchaseMacodeInfoMapper.selectPurchaseMacodeInfoById(Long.valueOf(id));
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsList(new PurchaseCheckDetails()
.setTaskId(purchaseMacodeInfo.getTaskId()).setTypeId(purchaseMacodeInfo.getTypeId()));
if (!purchaseCheckDetails.isEmpty()) {
purchaseCheckDetailsMapper.updatePurchaseCheckDetails(new PurchaseCheckDetails()
.setId(purchaseCheckDetails.get(0).getId())
.setBindNum(purchaseCheckDetails.get(0).getBindNum().subtract(BigDecimal.ONE))
);
} else {
throw new ServiceException("未找到对应验收详情数据,请检查数据是否正确");
}
int delSize = machineMapper.deleteMachineByMaCodeAndTypeId(purchaseMacodeInfo.getMaCode(), purchaseMacodeInfo.getTypeId());
if (delSize != 1) {
throw new ServiceException("机具物资表删除失败,物资清除:" + delSize + "条,数据已回滚");
}
}
int delTotal = purchaseMacodeInfoMapper.updatePurchaseMacodeInfoByIds(ids);
if (delTotal != ids.size()) {
throw new ServiceException("删除失败,解绑:" + (ids.size() - delTotal) + "条,数据已回滚");
}
return delTotal;
}
/**

View File

@ -72,13 +72,6 @@ public class PurchaseNoticePersonServiceImpl implements IPurchaseNoticePersonSer
@Override
@Transactional
public AjaxResult batchSendSms(PurchaseNoticePersonDto purchaseNoticePersonDto) {
// for (String phoneNumber : purchaseNoticePersonDto.getPhoneNumbers()) {
// if (phoneNumber != null && phoneNumber.length() != 11) {
// String decrypted = Sm4Utils.decrypt(phoneNumber);
// }
// }
for (int i = 0; i < purchaseNoticePersonDto.getPhoneNumbers().size(); i++) {
String phoneNumber = purchaseNoticePersonDto.getPhoneNumbers().get(i);
if (phoneNumber != null && phoneNumber.length() != 11) {
@ -86,9 +79,6 @@ public class PurchaseNoticePersonServiceImpl implements IPurchaseNoticePersonSer
purchaseNoticePersonDto.getPhoneNumbers().set(i, decrypted);
}
}
String splitPhoneNumber = String.join(",", purchaseNoticePersonDto.getPhoneNumbers());
try {
String sendResult = SmsUtils.smsToken(splitPhoneNumber, purchaseNoticePersonDto.getContent(),"");
@ -99,13 +89,8 @@ public class PurchaseNoticePersonServiceImpl implements IPurchaseNoticePersonSer
.setTaskType(TmTaskTypeEnum.TM_TASK_PURCHASE.getTaskTypeId())
.setTaskStatus(PurchaseTaskStatusEnum.TASK_IN_PROGRESS.getStatus())
);
// 修改采购明细的任务状态
purchaseCheckDetailsService.batchUpdateDetailsTaskStatus(
purchaseNoticePersonDto.getTaskId(),
PurchaseTaskStatusEnum.TO_CHECK.getStatus(), ""
);
purchaseCheckDetailsService.batchUpdateDetailsTaskStatus(purchaseNoticePersonDto.getTaskId(), PurchaseTaskStatusEnum.TO_CHECK.getStatus(), "");
return AjaxResult.success("短信发送成功:" + sendResult);
} else {
return AjaxResult.error("短信发送失败,发送结果为空");

View File

@ -297,6 +297,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
delete from ma_machine where ma_id = #{maId}
</delete>
<delete id="deleteMachineByMaIds" parameterType="String">
delete from ma_machine where ma_id in
<foreach item="maId" collection="array" open="(" separator="," close=")">
@ -370,4 +371,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ma.ma_id
limit 1
</select>
<delete id="deleteMachineByMaCodeAndTypeId">
delete from ma_machine where ma_code = #{maCode} and type_id = #{typeId}
and ma_status = '0'
</delete>
</mapper>

View File

@ -98,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
UPDATE purchase_check_details
SET `status` = #{updatedStatus}
WHERE
id = #{id}
id = #{id} and status = '3' or status = '14'
</update>
<update id="updateStorageNum">

View File

@ -38,7 +38,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectPurchaseCheckDetailsVo">
select id, task_id, type_id, purchase_price, purchase_tax_price, purchase_num, check_num, bind_num, check_result, supplier_id, status, create_by, production_time, create_time, update_by, update_time, remark, check_url_name, check_url, input_num, input_status, input_time, file_name, file_url, company_id, fix_code from purchase_check_details
select id, task_id, type_id, purchase_price, purchase_tax_price, purchase_num, check_num, bind_num, check_result,
supplier_id, status, create_by, production_time, create_time, update_by, update_time, remark, check_url_name,
check_url, input_num, input_status, input_time, file_name, file_url, company_id, fix_code
from purchase_check_details
</sql>
<sql id="selectPurchaseCheckDetailsJoinVo">
@ -224,6 +227,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
delete from purchase_check_details where id = #{id}
</delete>
<!-- 限制条件 严格匹配字典表及枚举类中定义的状态码 -->
<delete id="deletePurchaseCheckDetailsByParentIds" parameterType="Long">
delete from purchase_check_details where task_id in (
select task_id
@ -233,7 +237,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
)
) and status = 1 or status = 12
</delete>
<delete id="deletePurchaseCheckDetailsByIds" parameterType="String">
@ -312,6 +316,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</insert>
<!-- 这里的status限制是待通知或验收被驳回后对应的字典值 -->
<update id="batchUpdateDetailsTaskStatus">
update
purchase_check_details
@ -319,6 +324,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
`status` = #{newTaskStatus}, check_result = #{checkResult}
where
task_id = #{taskId}
and
`status` = 1 or `status` = 12
</update>
<!-- <update id="updatePurchaseDetails">-->
@ -340,10 +347,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update
purchase_check_details
<set>
`status` = #{status},
check_result = #{checkResult},
check_num = purchase_num,
check_time = NOW(),
`status` = #{status},check_result = #{checkResult},check_num = purchase_num,check_time = NOW(),
<if test="warnDocuments != null and warnDocuments != ''">
warn_documents = #{warnDocuments},
</if>
@ -351,14 +355,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
reason = #{reason}
</if>
</set>
where
1=1
<where>
<if test="taskId != null">
and task_id = #{taskId}
</if>
<if test="typeId != null">
and type_id = #{typeId}
</if>
</where>
</update>
<select id="getCountOfNoneThisStatus" resultType="Integer">

View File

@ -26,13 +26,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectPurchaseMacodeInfoVo">
select pmi.id, pmi.task_id, pmi.type_id, pmi.ma_code, pmi.qr_code, pmi.status,
select pmi.id, pmi.task_id, pmi.type_id, pmi.ma_code, pmi.qr_code, if(mm.ma_status = '0' or mm.ma_status = '5' or mm.ma_status = '9', 0, 1) as status,
pmi.create_by, pmi.create_time, pmi.update_by, pmi.update_time, pmi.remark, pmi.company_id, pmi.out_fac_code,
mt.type_name, mt.unit_name, mtp.type_name as ma_type_name, pcd.production_time
from bm_qrcode_info pmi
left join ma_type mt on pmi.type_id = mt.type_id
left join ma_type mtp on mt.parent_id = mtp.type_id
left join purchase_check_details pcd on pmi.task_id = pcd.task_id and pmi.type_id = pcd.type_id
left join ma_machine mm on pmi.type_id = mm.type_id and pmi.ma_code = mm.ma_code
</sql>
<select id="selectPurchaseMacodeInfoList" parameterType="com.bonus.material.purchase.domain.PurchaseMacodeInfo" resultMap="PurchaseMacodeInfoResult">
@ -47,6 +48,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="codeType != null and codeType != ''"> and pmi.code_type = #{codeType}</if>
<if test="status != null and status != ''"> and pmi.status = #{status}</if>
<if test="companyId != null "> and pmi.company_id = #{companyId}</if>
<if test="keyWord != null and keyWord != ''">
and (pmi.ma_code like concat('%', #{keyWord}, '%') or pmi.qr_code like concat('%', #{keyWord}, '%'))
</if>
and pmi.ma_code is not null
</where>
</select>
@ -118,11 +123,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<delete id="deletePurchaseMacodeInfoByIds" parameterType="String">
delete from bm_qrcode_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<update id="updatePurchaseMacodeInfoByIds" parameterType="String">
update bm_qrcode_info set ma_code = null where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<select id="getPurchaseMaCodeCount" resultType="Integer">
select count(1) from bm_qrcode_info where task_id = #{taskId} and type_id = #{typeId}
</select>