新购接口优化

This commit is contained in:
sxu 2024-11-07 17:08:47 +08:00
parent a503514fc5
commit 1bc0b04d83
1 changed files with 34 additions and 49 deletions

View File

@ -30,9 +30,7 @@ import com.bonus.material.purchase.mapper.PurchaseCheckInfoMapper;
import com.bonus.material.purchase.domain.PurchaseCheckInfo; import com.bonus.material.purchase.domain.PurchaseCheckInfo;
import com.bonus.material.purchase.service.IPurchaseCheckInfoService; import com.bonus.material.purchase.service.IPurchaseCheckInfoService;
import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -165,12 +163,10 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional
public AjaxResult insertPurchaseCheckInfo(PurchaseCheckDto purchaseCheckInfo) { public AjaxResult insertPurchaseCheckInfo(PurchaseCheckDto purchaseCheckInfo) {
// 赋值创建时间
purchaseCheckInfo.getPurchaseCheckInfo().setCreateTime(DateUtils.getNowDate()); purchaseCheckInfo.getPurchaseCheckInfo().setCreateTime(DateUtils.getNowDate());
purchaseCheckInfo.getPurchaseCheckInfo().setUpdateTime(DateUtils.getNowDate());
purchaseCheckInfo.getPurchaseCheckInfo().setCreateBy(SecurityUtils.getUsername()); purchaseCheckInfo.getPurchaseCheckInfo().setCreateBy(SecurityUtils.getUsername());
purchaseCheckInfo.getPurchaseCheckInfo().setUpdateBy(SecurityUtils.getUsername());
try { try {
// 查询新购任务当月最大单号 // 查询新购任务当月最大单号
Integer thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), Long.valueOf(PurchaseTaskEnum.PURCHASE_TASK_STATUS_WAIT_NOTICE.getTaskTypeId())); Integer thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), Long.valueOf(PurchaseTaskEnum.PURCHASE_TASK_STATUS_WAIT_NOTICE.getTaskTypeId()));
@ -178,48 +174,14 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
thisMonthMaxOrder = Optional.ofNullable(thisMonthMaxOrder).orElse(0); thisMonthMaxOrder = Optional.ofNullable(thisMonthMaxOrder).orElse(0);
// 生成单号 // 生成单号
TmTask tmTask = genderTaskCode(purchaseCheckInfo, thisMonthMaxOrder); TmTask tmTask = genderTaskCode(purchaseCheckInfo, thisMonthMaxOrder);
Long taskId; tmTaskMapper.insertTmTask(tmTask);
Long taskId = tmTask.getTaskId();
// 开启事务
TransactionStatus transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
if (tmTaskMapper.insertTmTask(tmTask) > 0) {
taskId = tmTask.getTaskId();
} else {
transactionManager.rollback(transactionStatus);
return AjaxResult.error("新增任务失败_task表插入0条");
}
// tm_task 插入成功后再往新购验收info表中插入数据
purchaseCheckInfo.getPurchaseCheckInfo().setTaskId(taskId); purchaseCheckInfo.getPurchaseCheckInfo().setTaskId(taskId);
if (purchaseCheckInfoMapper.insertPurchaseCheckInfo(purchaseCheckInfo.getPurchaseCheckInfo()) > 0) { int count = purchaseCheckInfoMapper.insertPurchaseCheckInfo(purchaseCheckInfo.getPurchaseCheckInfo());
purchaseCheckInfo.getPurchaseCheckDetailsList().forEach( if (count > 0) {
details -> { return insertPurchaseCheckDetails(purchaseCheckInfo.getPurchaseCheckDetailsList(), taskId);
details.setTaskId(taskId);
details.setInputStatus("0");
});
// 批量插入详情数据
boolean purchaseCheckDetailsListAddResult = purchaseCheckDetailsMapper.insertPurchaseCheckDetailsList(purchaseCheckInfo.getPurchaseCheckDetailsList()) > 0;
// 批量插入附件列表
List<PurchaseCheckDetails> purchaseCheckDetailsList = purchaseCheckInfo.getPurchaseCheckDetailsList();
for (PurchaseCheckDetails purchaseCheckDetails : purchaseCheckDetailsList) {
List<BmFileInfo> bmFileInfos = purchaseCheckDetails.getBmFileInfos();
if (!CollectionUtils.isEmpty(bmFileInfos)) {
bmFileInfos.stream().forEach(o -> o.setTaskId(taskId));
bmFileInfoMapper.insertBmFileInfos(bmFileInfos);
}
}
if (purchaseCheckDetailsListAddResult) {
transactionManager.commit(transactionStatus);
return AjaxResult.success("新增任务成功");
} else {
transactionManager.rollback(transactionStatus);
return AjaxResult.error("新增任务失败,详情表插入0条");
}
} else { } else {
transactionManager.rollback(transactionStatus); return AjaxResult.error("新增任务失败,purchase_check_info表插入0条");
return AjaxResult.error("新增任务失败,info表插入0条");
} }
} catch (DataAccessException e) { } catch (DataAccessException e) {
return AjaxResult.error("数据库操作失败:" + e.getMessage()); return AjaxResult.error("数据库操作失败:" + e.getMessage());
@ -228,6 +190,29 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
} }
} }
private AjaxResult insertPurchaseCheckDetails(List<PurchaseCheckDetails> purchaseCheckDetailsList, Long taskId) {
if (!CollectionUtils.isEmpty(purchaseCheckDetailsList)) {
for (PurchaseCheckDetails details : purchaseCheckDetailsList) {
details.setTaskId(taskId);
details.setInputStatus("0");
List<BmFileInfo> bmFileInfos = details.getBmFileInfos();
if (!CollectionUtils.isEmpty(bmFileInfos)) {
bmFileInfos.stream().forEach(o -> o.setTaskId(taskId));
bmFileInfoMapper.insertBmFileInfos(bmFileInfos);
}
}
// 批量插入详情数据
int count = purchaseCheckDetailsMapper.insertPurchaseCheckDetailsList(purchaseCheckDetailsList);
if (count > 0) {
return AjaxResult.success("新增任务成功");
} else {
return AjaxResult.error("新增任务失败,purchase_check_detail详情表插入0条");
}
} else {
return AjaxResult.success("新增任务成功");
}
}
/** /**
* 验收通过 * 验收通过
* *
@ -309,14 +294,14 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional
public boolean updatePurchaseCheckInfo(PurchaseCheckDto purchaseCheckDto) { public boolean updatePurchaseCheckInfo(PurchaseCheckDto purchaseCheckDto) {
purchaseCheckDto.getPurchaseCheckInfo().setUpdateTime(DateUtils.getNowDate()); purchaseCheckDto.getPurchaseCheckInfo().setUpdateTime(DateUtils.getNowDate());
purchaseCheckDto.getPurchaseCheckInfo().setUpdateBy(SecurityUtils.getUsername()); purchaseCheckDto.getPurchaseCheckInfo().setUpdateBy(SecurityUtils.getUsername());
try { try {
List<PurchaseCheckDetails> purchaseCheckDetailsList = purchaseCheckDto.getPurchaseCheckDetailsList(); Long[] ids = new Long[]{purchaseCheckDto.getPurchaseCheckInfo().getId()};
for (PurchaseCheckDetails purchaseCheckDetails : purchaseCheckDetailsList) { deletePurchaseCheckInfoByIds(ids);
purchaseCheckDetailsMapper.updatePurchaseCheckDetails(purchaseCheckDetails); insertPurchaseCheckDetails(purchaseCheckDto.getPurchaseCheckDetailsList(), purchaseCheckDto.getPurchaseCheckInfo().getTaskId());
}
purchaseCheckInfoMapper.updatePurchaseCheckInfo(purchaseCheckDto.getPurchaseCheckInfo()); purchaseCheckInfoMapper.updatePurchaseCheckInfo(purchaseCheckDto.getPurchaseCheckInfo());
return true; return true;
} catch (Exception e) { } catch (Exception e) {