Compare commits

...

2 Commits

Author SHA1 Message Date
aikai
822da5435d Merge branch 'dev' of http://git.znkjfw.com/ak/zn-cloud into dev 2024-09-22 23:27:07 +08:00
aikai
9773183904 ```采购管理模块的流程和数据处理优化
- 重构采购计划和采购支付流程,使其符合最新的业务逻辑。
- 在数据库映射文件中添加新的字段映射,支持新功能。
- 更新采购管理服务实现,整合流程实例的创建和采购计划的处理。
- 优化数据权限查询,提升系统性能和安全性。
- 修正日期格式化工具类,以处理不常见的日期格式。
```
2024-09-22 23:26:12 +08:00
22 changed files with 223 additions and 49 deletions

View File

@ -399,7 +399,7 @@ public class DateUtils {
case 7:
return "星期日";
default:
throw new IllegalArgumentException("输入的数字必须在1-7之间代表星期一到星期日");
return "节假日补班";
}
}

View File

@ -3,10 +3,7 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanItemRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanSaveReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.*;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanItemDO;
import cn.iocoder.yudao.module.bpm.service.oa.BpmOASupplierProcurementPlanItemService;
@ -69,7 +66,7 @@ public class BpmOASupplierProcurementPlanController {
List<BpmOASupplierProcurementPlanItemDO> items = oaSupplierProcurementPlanItemService.getByProcurementPlanId(id);
List<BpmOASupplierProcurementPlanItemRespVO> itemVos = BeanUtils.toBean(items, BpmOASupplierProcurementPlanItemRespVO.class);
vo.setItems(itemVos);
return success(BeanUtils.toBean(oaSupplierProcurementPlan, BpmOASupplierProcurementPlanRespVO.class));
return success(vo);
}
@GetMapping("/page")
@ -80,4 +77,13 @@ public class BpmOASupplierProcurementPlanController {
return success(BeanUtils.toBean(pageResult, BpmOASupplierProcurementPlanRespVO.class));
}
@GetMapping("/getListBySupplierId")
@Operation(summary = "根据供应商id获取采购计划列表")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-procurement-plan:query')")
public CommonResult<List<BpmOASupplierProcurementPlanDO>> getListBySupplierId(@ModelAttribute BpmOASupplierProcurementPlanReqVO vo) {
List<BpmOASupplierProcurementPlanDO> vos = oaSupplierProcurementPlanService.getListBySupplierId(vo);
return success(vos);
}
}

View File

@ -15,7 +15,6 @@ public class BpmOASupplierSaveReqVO {
private Long id;
@Schema(description = "申请人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15417")
@NotNull(message = "申请人的用户编号不能为空")
private Long userId;
@Schema(description = "供应商id如果编辑的话需要", example = "28412")

View File

@ -49,6 +49,6 @@ public class BpmOASupplierProcurementPlanPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "是否结算 0待结算 1已结算未付款 2已付款")
@Schema(description = "是否结算 0待结算 1已结算未付款")
private Integer settlementFlag;
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 供应商采购计划分页 Request VO")
@Data
@ToString(callSuper = true)
public class BpmOASupplierProcurementPlanReqVO {
@Schema(description = "供应商id", example = "123")
private Long supplierId;
@Schema(description = "流程实例的编号", example = "5984")
private String processInstanceId;
@Schema(description = "开始时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime beginTime;
@Schema(description = "结束时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime endTime;
@Schema(description = "是否结算 0待结算 1已结算未付款")
private Integer settlementFlag;
}

View File

@ -53,7 +53,7 @@ public class BpmOASupplierProcurementPlanRespVO {
@Schema(description = "到货凭证", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadUserFile> theArrivalFileItems;
@Schema(description = "是否结算 0待结算 1已结算未付款 2已付款")
@Schema(description = "是否结算 0待结算 1已结算未付款")
private Integer settlementFlag;
@Schema(description = "子列表")

View File

@ -54,6 +54,6 @@ public class BpmOASupplierProcurementPlanSaveReqVO {
@Schema(description = "到货凭证", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadUserFile> theArrivalFileItems;
@Schema(description = "是否结算 0待结算 1已结算未付款 2已付款")
@Schema(description = "是否结算 0待结算 1已结算未付款")
private Integer settlementFlag;
}

View File

@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierpurchasepayment;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanRespVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanDO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
@ -23,6 +25,9 @@ public class BpmOASupplierPurchasePaymentRespVO {
@Schema(description = "供应商id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13580")
private Long supplierId;
@Schema(description = "供应商名称")
private String supplierName;
@Schema(description = "结算方式(字典值)")
private Integer settlementMethod;
@ -47,4 +52,8 @@ public class BpmOASupplierPurchasePaymentRespVO {
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
@Schema(description = "供应商采购计划列表")
private List<BpmOASupplierProcurementPlanDO> supplierProcurementPlans;
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanItemRespVO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@ -86,7 +87,13 @@ public class BpmOASupplierProcurementPlanDO extends BaseDO {
private List<UploadUserFile> theArrivalFileItems;
/**
* 是否结算 0待结算 1已结算未付款 2已付款
* 是否结算 0待结算 1已结算未付款
*/
private Integer settlementFlag;
/**
* 子列表
*/
@TableField(exist = false)
private List<BpmOASupplierProcurementPlanItemDO> items;
}

View File

@ -71,4 +71,16 @@ public class BpmOASupplierPurchasePaymentDO extends BaseDO {
*/
private String processInstanceId;
/**
* 供应商名称
*/
@TableField(exist = false)
private String supplierName;
/**
* 供应商采购计划列表
*/
@TableField(exist = false)
private List<BpmOASupplierProcurementPlanDO> supplierProcurementPlans;
}

View File

@ -5,7 +5,10 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierpurchasepayment.BpmOASupplierPurchasePaymentPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierPurchasePaymentDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 供应商采购付款 Mapper
@ -29,4 +32,20 @@ public interface BpmOASupplierPurchasePaymentMapper extends BaseMapperX<BpmOASup
.orderByDesc(BpmOASupplierPurchasePaymentDO::getId));
}
/**
* 通过id获取
*
* @param id
* @return
*/
BpmOASupplierPurchasePaymentDO getById(@Param("id") Long id);
/**
* 列表
*
* @param vo
* @param page
* @return
*/
IPage<BpmOASupplierPurchasePaymentDO> getOASupplierPurchasePaymentPage(@Param("vo") BpmOASupplierPurchasePaymentPageReqVO vo, @Param("page") Page<Object> page);
}

View File

@ -13,17 +13,11 @@ import cn.iocoder.yudao.module.bpm.controller.admin.financialpaymentitem.vo.Fina
import cn.iocoder.yudao.module.bpm.convert.message.BpmMessageConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpayment.FinancialPaymentDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpaymentitem.FinancialPaymentItemDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOACashDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAImprestDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReimbursementDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.*;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.financialpayment.FinancialPaymentMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.financialpaymentitem.FinancialPaymentItemMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOACashMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAImprestMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAProcurePayMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAReimbursementMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.*;
import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
@ -66,6 +60,8 @@ public class FinancialPaymentServiceImpl implements FinancialPaymentService {
@Resource
private BpmOAReimbursementMapper reimbursementMapper;
@Resource
private BpmOASupplierPurchasePaymentMapper supplierPurchasePaymentMapper;
@Resource
private SubscribeMessageSendApi subscribeMessageSendApi;
@Resource
private AdminUserApi userApi;
@ -107,6 +103,8 @@ public class FinancialPaymentServiceImpl implements FinancialPaymentService {
oAProcurePayMapper.updateById(new BpmOAProcurePayDO().setId(financialPayment.getObjectId()).setResult(BpmProcessInstanceResultEnum.BACK.getResult()));
} else if (financialPayment.getType() == 4) {
reimbursementMapper.updateById(new BpmOAReimbursementDO().setId(financialPayment.getObjectId()).setResult(BpmProcessInstanceResultEnum.BACK.getResult()));
} else if (financialPayment.getType() == 5) {
supplierPurchasePaymentMapper.updateById(new BpmOASupplierPurchasePaymentDO().setId(financialPayment.getObjectId()).setResult(BpmProcessInstanceResultEnum.BACK.getResult()));
}
BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(financialPayment.getProcessInstanceId())
.setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus())
@ -119,14 +117,14 @@ public class FinancialPaymentServiceImpl implements FinancialPaymentService {
if (StrUtil.isNotEmpty(adminUserRespDTO.getOpenId())) {
String result = vo.getStatus() == 1 ? "通过" : "拒绝";
String page = vo.getStatus() == 1 ?
"subPages/paymentVoucher/paymentVoucher?id=" + financialPayment.getProcessInstanceId() + "&isDetail=1" :
"pages/bpm/task/todo/examineApprove?id=" + financialPayment.getProcessInstanceId() + "&isDetail=1";
"subPages/paymentVoucher/paymentVoucher?id=" + financialPayment.getId() :
"pages/bpm/task/todo/examineApprove?id=" + financialPayment.getId() + "&isDetail=1";
// --- 发消息通知发起人
String time = financialPaymentItem.getCreateTime().format(Constants.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
subscribeMessageSendApi.sendApprovalResultNotification(
BpmMessageConvert.INSTANCE.convertApprovalResultNotificationPage(
adminUserRespDTO.getOpenId(), financialPayment.getProcessInstanceName(), time, result, (StrUtil.isEmpty(financialPaymentItem.getNotes()) ? result : financialPaymentItem.getNotes()),
page, "formal"));
"formal", page));
}
} catch (Exception e) {
log.error("财务管理审批发送通知人失败:{}", financialPayment);

View File

@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.bpm.service.oa;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanSaveReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanDO;
@ -69,4 +71,12 @@ public interface BpmOASupplierProcurementPlanService {
* @param settlementFlag
*/
void batchEditSettlementFlag(List<Long> ids, Integer settlementFlag);
/**
* 获取供应商采购列表
*
* @param vo
* @return
*/
List<BpmOASupplierProcurementPlanDO> getListBySupplierId(BpmOASupplierProcurementPlanReqVO vo);
}

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.bpm.service.oa;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@ -7,8 +8,8 @@ import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanSaveReqVO;
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASupplierProcurementPlanConvert;
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASupplierProcurementPlanItemConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanItemDO;
@ -23,6 +24,7 @@ import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 供应商采购计划 Service 实现类
@ -37,6 +39,9 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
private BpmOASupplierProcurementPlanMapper oaSupplierProcurementPlanMapper;
@Resource
private BpmOASupplierProcurementPlanItemMapper oaSupplierProcurementPlanItemMapper;
@Resource
private BpmOASupplierProcurementPlanItemService supplierProcurementPlanItemService;
@Resource
private BpmProcessInstanceApi processInstanceApi;
@Resource
@ -47,7 +52,7 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
/**
* OA 供应商资产采购申请 KEY
*/
public static final String PROCESS_KEY = "oa_supplier_procurement_plan_2";
public static final String PROCESS_KEY = "oa_gys_procurement_plan_2";
@Override
public Long createOaSupplierProcurementPlan(BpmOASupplierProcurementPlanSaveReqVO createReqVO) {
@ -57,14 +62,11 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
// 返回
Long userId = WebFrameworkUtils.getLoginUserId();
createReqVO.setUserId(userId);
// 采购支付对象转换
BpmOASupplierProcurementPlanDO oaSupplierProcurementPlanDO = BpmOASupplierProcurementPlanConvert.INSTANCE.convert(createReqVO);
oaSupplierProcurementPlanMapper.insert(oaSupplierProcurementPlanDO);
// 子列表转换
List<BpmOASupplierProcurementPlanItemDO> items = BpmOASupplierProcurementPlanItemConvert.INSTANCE.convert(createReqVO.getItems());
for (BpmOASupplierProcurementPlanItemDO item : items) {
item.setProcurementPlanId(oaSupplierProcurementPlanDO.getId());
item.setProcurementPlanId(oaSupplierProcurementPlan.getId());
item.setUserId(userId);
}
oaSupplierProcurementPlanItemMapper.insertBatch(items);
@ -87,13 +89,8 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
if (purchaseFileItems != null && !purchaseFileItems.isEmpty()) {
uploadBpmFileProcessInstanceId(processInstanceId, purchaseFileItems);
}
// List<UploadUserFile> theArrivalFileItems = createReqVO.getTheArrivalFileItems();
// //这里的逻辑如果fileItems不为空且有数据那么说明是上传了附件的则需要更工作流文件表对应的实例Id
// if (theArrivalFileItems != null && !theArrivalFileItems.isEmpty()) {
// uploadBpmFileProcessInstanceId(processInstanceId, theArrivalFileItems);
// }
// 返回
return oaSupplierProcurementPlanDO.getId();
return oaSupplierProcurementPlan.getId();
}
@Override
@ -132,4 +129,26 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
.in(BpmOASupplierProcurementPlanDO::getId, ids));
}
@Override
public List<BpmOASupplierProcurementPlanDO> getListBySupplierId(BpmOASupplierProcurementPlanReqVO vo) {
List<BpmOASupplierProcurementPlanDO> planDOS = oaSupplierProcurementPlanMapper.selectList(new LambdaQueryWrapper<BpmOASupplierProcurementPlanDO>()
.eq(vo.getSupplierId() != null, BpmOASupplierProcurementPlanDO::getSupplierId, vo.getSupplierId())
.gt(vo.getBeginTime() != null, BpmOASupplierProcurementPlanDO::getCreateTime, vo.getBeginTime())
.le(vo.getEndTime() != null, BpmOASupplierProcurementPlanDO::getCreateTime, vo.getEndTime())
.eq(vo.getProcessInstanceId() != null, BpmOASupplierProcurementPlanDO::getProcessInstanceId, vo.getProcessInstanceId())
.eq(vo.getSettlementFlag() != null, BpmOASupplierProcurementPlanDO::getSettlementFlag, vo.getSettlementFlag())
);
if (CollectionUtil.isNotEmpty(planDOS)) {
List<Long> planIds = planDOS.stream().map(BpmOASupplierProcurementPlanDO::getId).collect(Collectors.toList());
//获取到采购计划详情列表
List<BpmOASupplierProcurementPlanItemDO> supplierProcurementPlanItemDOS = oaSupplierProcurementPlanItemMapper.selectList(
new LambdaQueryWrapper<BpmOASupplierProcurementPlanItemDO>().in(BpmOASupplierProcurementPlanItemDO::getProcurementPlanId, planIds));
Map<Long, List<BpmOASupplierProcurementPlanItemDO>> map = supplierProcurementPlanItemDOS.stream().collect(Collectors.groupingBy(BpmOASupplierProcurementPlanItemDO::getProcurementPlanId));
for (BpmOASupplierProcurementPlanDO planDO : planDOS) {
planDO.setItems(map.get(planDO.getId()));
}
}
return planDOS;
}
}

View File

@ -4,15 +4,19 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierpurchasepayment.BpmOASupplierPurchasePaymentPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierpurchasepayment.BpmOASupplierPurchasePaymentSaveReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpayment.FinancialPaymentDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanItemDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierPurchasePaymentDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOASupplierProcurementPlanItemMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOASupplierProcurementPlanMapper;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOASupplierPurchasePaymentMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.financialpayment.FinancialPaymentService;
@ -20,6 +24,8 @@ import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -56,12 +62,16 @@ public class BpmOASupplierPurchasePaymentServiceImpl extends BpmOABaseService im
private FinancialPaymentService financialPaymentService;
@Resource
private AdminUserApi userApi;
@Resource
private BpmOASupplierProcurementPlanMapper supplierProcurementPlanMapper;
@Resource
private BpmOASupplierProcurementPlanItemMapper supplierProcurementPlanItemMapper;
/**
* 供应商采购支付
*/
public static final String PROCESS_KEY = "oa_supplier_purchase_payment_2";
public static final String PROCESS_KEY = "oa_supplier_pay_2";
@Override
public Long createOASupplierPurchasePayment(BpmOASupplierPurchasePaymentSaveReqVO createReqVO) {
@ -108,12 +118,22 @@ public class BpmOASupplierPurchasePaymentServiceImpl extends BpmOABaseService im
@Override
public BpmOASupplierPurchasePaymentDO getOASupplierPurchasePayment(Long id) {
return supplierPurchasePaymentMapper.selectById(id);
BpmOASupplierPurchasePaymentDO supplierPurchasePaymentDO = supplierPurchasePaymentMapper.getById(id);
List<Long> supplierProcurementPlanIds = Arrays.stream(supplierPurchasePaymentDO.getSupplierProcurementPlanIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
List<BpmOASupplierProcurementPlanDO> planDOS = supplierProcurementPlanMapper.selectList(new LambdaQueryWrapper<BpmOASupplierProcurementPlanDO>().in(BpmOASupplierProcurementPlanDO::getId, supplierProcurementPlanIds));
List<BpmOASupplierProcurementPlanItemDO> planItemDOS = supplierProcurementPlanItemMapper.selectList(new LambdaQueryWrapper<BpmOASupplierProcurementPlanItemDO>().in(BpmOASupplierProcurementPlanItemDO::getProcurementPlanId, supplierProcurementPlanIds));
Map<Long, List<BpmOASupplierProcurementPlanItemDO>> itemMap = planItemDOS.stream().collect(Collectors.groupingBy(BpmOASupplierProcurementPlanItemDO::getProcurementPlanId));
for (BpmOASupplierProcurementPlanDO planDO : planDOS) {
planDO.setItems(itemMap.get(planDO.getId()));
}
supplierPurchasePaymentDO.setSupplierProcurementPlans(planDOS);
return supplierPurchasePaymentDO;
}
@Override
public PageResult<BpmOASupplierPurchasePaymentDO> getOASupplierPurchasePaymentPage(BpmOASupplierPurchasePaymentPageReqVO pageReqVO) {
return supplierPurchasePaymentMapper.selectPage(pageReqVO);
IPage<BpmOASupplierPurchasePaymentDO> assetsDOIPage = supplierPurchasePaymentMapper.getOASupplierPurchasePaymentPage(pageReqVO, MyBatisUtils.buildPage(pageReqVO));
return new PageResult<>(assetsDOIPage.getRecords(), assetsDOIPage.getTotal());
}
@Override

View File

@ -9,4 +9,45 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="getById"
resultType="cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierPurchasePaymentDO">
select
a.*,
ifnull(b.supplier_name,"其他") as supplierName
from bpm_oa_supplier_purchase_payment as a
left join zc_supplier as b on a.supplier_id = b.id
where a.id = #{id}
</select>
<select id="getOASupplierPurchasePaymentPage"
resultType="cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierPurchasePaymentDO">
select
a.*,
ifnull(b.supplier_name,"其他") as supplierName
from bpm_oa_supplier_purchase_payment as a
left join zc_supplier as b on a.supplier_id = b.id
<where>
a.deleted = 0
<if test="vo.userId != null">
and a.user_id = #{userId}
</if>
<if test="vo.supplierId != null">
and a.supplier_id = #{vo.supplierId}
</if>
<if test="vo.settlementMethod != null">
and a.settlement_method = #{vo.settlementMethod}
</if>
<if test="vo.processInstanceId != null and vo.processInstanceId != ''">
and a.process_instance_id = #{processInstanceId}
</if>
<if test="vo.createTime != null and vo.createTime.length > 0">
<if test="vo.createTime[0] != null">
and a.create_time &gt;= #{vo.createTime[0]}
</if>
<if test="vo.createTime[1] != null">
and a.create_time &lt;= #{vo.createTime[1]}
</if>
</if>
</where>
order by a.create_time desc
</select>
</mapper>

View File

@ -83,8 +83,8 @@ public class SupplierController {
@GetMapping("/allList")
@Operation(summary = "获得供应商列表")
public CommonResult<List<SupplierRespVO>> productList() {
List<SupplierDO> items = supplierService.allList();
public CommonResult<List<SupplierRespVO>> productList(@RequestParam(name = "status", required = false) Integer status) {
List<SupplierDO> items = supplierService.allList(status);
return success(BeanUtils.toBean(items, SupplierRespVO.class));
}

View File

@ -22,6 +22,9 @@ public class MyManageModelDTO {
@Schema(description = "类型 1日报 2周报")
private Integer type;
@Schema(description = "模版id")
private Long formId;
@Schema(description = "开始时间 格式yyyy-MM-dd")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)

View File

@ -73,5 +73,5 @@ public interface SupplierService {
*
* @return
*/
List<SupplierDO> allList();
List<SupplierDO> allList(Integer status);
}

View File

@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.supplier.SupplierDO;
import cn.iocoder.yudao.module.system.dal.dataobject.supplier.SupplierProductDO;
import cn.iocoder.yudao.module.system.dal.mysql.supplier.SupplierMapper;
import cn.iocoder.yudao.module.system.dal.mysql.supplier.SupplierProductMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -107,7 +108,8 @@ public class SupplierServiceImpl implements SupplierService {
}
@Override
public List<SupplierDO> allList() {
return supplierMapper.selectList();
public List<SupplierDO> allList(Integer status) {
return supplierMapper.selectList(new LambdaQueryWrapper<SupplierDO>()
.eq(status != null, SupplierDO::getStatus, status));
}
}

View File

@ -95,4 +95,4 @@ public interface LogInstanceService {
* @return
*/
LogInstanceNextOrUpVO getNextOrUp(LogInstancePageReqVO dto, Long id, Integer pagingType);
}
}

View File

@ -366,13 +366,9 @@ public class LogStatisticsServiceImpl implements LogStatisticsService {
@Override
public List<LogStatisticsModelVO> getMyManageModelStatistics(MyManageModelDTO dto) {
List<Long> formIds = logUseMapper.getFormIdsByDataPermission(null);
if (formIds.isEmpty()) {
return Collections.emptyList();
}
List<LogStatisticsModelVO> list = new ArrayList<>();
List<LogFormDO> formList = logFormMapper.selectList(new LambdaQueryWrapper<LogFormDO>()
.in(LogFormDO::getId, formIds)
.eq(dto.getFormId() != null, LogFormDO::getId, dto.getFormId())
.eq(LogFormDO::getStatus, 0)
.isNotNull(LogFormDO::getRuleId)
);