1.供应商采购计划关联资产 - 在上传到货凭证后在资产管理中对应资产会自动分配到相关部门中

2.解决工厂大屏数据没有工厂人员报错问题
3.连调小程序端采购支付 采购付款 流程
This commit is contained in:
aikai 2024-09-23 18:28:26 +08:00
parent 822da5435d
commit 56360fc932
33 changed files with 356 additions and 60 deletions

View File

@ -11,7 +11,6 @@ import cn.iocoder.yudao.module.bpm.service.oa.BpmOASupplierProcurementPlanServic
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -34,23 +33,27 @@ public class BpmOASupplierProcurementPlanController {
@PostMapping("/create")
@Operation(summary = "创建供应商采购计划")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-procurement-plan:create')")
public CommonResult<Long> createOaSupplierProcurementPlan(@Valid @RequestBody BpmOASupplierProcurementPlanSaveReqVO createReqVO) {
return success(oaSupplierProcurementPlanService.createOaSupplierProcurementPlan(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新供应商采购计划")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-procurement-plan:update')")
public CommonResult<Boolean> updateOaSupplierProcurementPlan(@Valid @RequestBody BpmOASupplierProcurementPlanSaveReqVO updateReqVO) {
oaSupplierProcurementPlanService.updateOaSupplierProcurementPlan(updateReqVO);
return success(true);
}
@PutMapping("/uploadDeliveryReceipt")
@Operation(summary = "上传到货凭证")
public CommonResult<Boolean> uploadDeliveryReceipt(@Valid @RequestBody TheArrivalFileItemsVO vo) {
oaSupplierProcurementPlanService.uploadDeliveryReceipt(vo);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除供应商采购计划")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-procurement-plan:delete')")
public CommonResult<Boolean> deleteOaSupplierProcurementPlan(@RequestParam("id") Long id) {
oaSupplierProcurementPlanService.deleteOaSupplierProcurementPlan(id);
return success(true);
@ -59,7 +62,6 @@ public class BpmOASupplierProcurementPlanController {
@GetMapping("/get")
@Operation(summary = "获得供应商采购计划")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-procurement-plan:query')")
public CommonResult<BpmOASupplierProcurementPlanRespVO> getOaSupplierProcurementPlan(@RequestParam("id") Long id) {
BpmOASupplierProcurementPlanDO oaSupplierProcurementPlan = oaSupplierProcurementPlanService.getOaSupplierProcurementPlan(id);
BpmOASupplierProcurementPlanRespVO vo = BeanUtils.toBean(oaSupplierProcurementPlan, BpmOASupplierProcurementPlanRespVO.class);
@ -71,7 +73,6 @@ public class BpmOASupplierProcurementPlanController {
@GetMapping("/page")
@Operation(summary = "获得供应商采购计划分页")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-procurement-plan:query')")
public CommonResult<PageResult<BpmOASupplierProcurementPlanRespVO>> getOaSupplierProcurementPlanPage(@Valid BpmOASupplierProcurementPlanPageReqVO pageReqVO) {
PageResult<BpmOASupplierProcurementPlanDO> pageResult = oaSupplierProcurementPlanService.getOaSupplierProcurementPlanPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, BpmOASupplierProcurementPlanRespVO.class));
@ -80,7 +81,6 @@ public class BpmOASupplierProcurementPlanController {
@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

@ -31,14 +31,12 @@ public class BpmOASupplierPurchasePaymentController {
@PostMapping("/create")
@Operation(summary = "创建供应商采购付款")
@PreAuthorize("@ss.hasPermission('bpm:OA-supplier-purchase-payment:create')")
public CommonResult<Long> createOASupplierPurchasePayment(@Valid @RequestBody BpmOASupplierPurchasePaymentSaveReqVO createReqVO) {
return success(oASupplierPurchasePaymentServiceBpm.createOASupplierPurchasePayment(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新供应商采购付款")
@PreAuthorize("@ss.hasPermission('bpm:OA-supplier-purchase-payment:update')")
public CommonResult<Boolean> updateOASupplierPurchasePayment(@Valid @RequestBody BpmOASupplierPurchasePaymentSaveReqVO updateReqVO) {
oASupplierPurchasePaymentServiceBpm.updateOASupplierPurchasePayment(updateReqVO);
return success(true);
@ -47,7 +45,6 @@ public class BpmOASupplierPurchasePaymentController {
@DeleteMapping("/delete")
@Operation(summary = "删除供应商采购付款")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('bpm:OA-supplier-purchase-payment:delete')")
public CommonResult<Boolean> deleteOASupplierPurchasePayment(@RequestParam("id") Long id) {
oASupplierPurchasePaymentServiceBpm.deleteOASupplierPurchasePayment(id);
return success(true);
@ -56,7 +53,6 @@ public class BpmOASupplierPurchasePaymentController {
@GetMapping("/get")
@Operation(summary = "获得供应商采购付款")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('bpm:OA-supplier-purchase-payment:query')")
public CommonResult<BpmOASupplierPurchasePaymentRespVO> getOASupplierPurchasePayment(@RequestParam("id") Long id) {
BpmOASupplierPurchasePaymentDO oASupplierPurchasePayment = oASupplierPurchasePaymentServiceBpm.getOASupplierPurchasePayment(id);
return success(BeanUtils.toBean(oASupplierPurchasePayment, BpmOASupplierPurchasePaymentRespVO.class));
@ -64,7 +60,6 @@ public class BpmOASupplierPurchasePaymentController {
@GetMapping("/page")
@Operation(summary = "获得供应商采购付款分页")
@PreAuthorize("@ss.hasPermission('bpm:OA-supplier-purchase-payment:query')")
public CommonResult<PageResult<BpmOASupplierPurchasePaymentRespVO>> getOASupplierPurchasePaymentPage(@Valid BpmOASupplierPurchasePaymentPageReqVO pageReqVO) {
PageResult<BpmOASupplierPurchasePaymentDO> pageResult = oASupplierPurchasePaymentServiceBpm.getOASupplierPurchasePaymentPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, BpmOASupplierPurchasePaymentRespVO.class));

View File

@ -39,14 +39,12 @@ public class BpmOaSupplierController {
@PostMapping("/create")
@Operation(summary = "创建OA供应商审核")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier:create')")
public CommonResult<Long> createOaSupplier(@Valid @RequestBody BpmOASupplierSaveReqVO createReqVO) {
return success(oaSupplierService.createOaSupplier(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新OA供应商审核")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier:update')")
public CommonResult<Boolean> updateOaSupplier(@Valid @RequestBody BpmOASupplierSaveReqVO updateReqVO) {
oaSupplierService.updateOaSupplier(updateReqVO);
return success(true);
@ -55,7 +53,6 @@ public class BpmOaSupplierController {
@DeleteMapping("/delete")
@Operation(summary = "删除OA供应商审核")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier:delete')")
public CommonResult<Boolean> deleteOaSupplier(@RequestParam("id") Long id) {
oaSupplierService.deleteOaSupplier(id);
return success(true);
@ -64,7 +61,6 @@ public class BpmOaSupplierController {
@GetMapping("/get")
@Operation(summary = "获得OA供应商审核")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier:query')")
public CommonResult<BpmOASupplierRespVO> getOaSupplier(@RequestParam("id") Long id) {
BpmOASupplierDO oaSupplier = oaSupplierService.getOaSupplier(id);
BpmOASupplierRespVO vo = BeanUtils.toBean(oaSupplier, BpmOASupplierRespVO.class);
@ -76,7 +72,6 @@ public class BpmOaSupplierController {
@GetMapping("/page")
@Operation(summary = "获得OA供应商审核分页")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier:query')")
public CommonResult<PageResult<BpmOASupplierRespVO>> getOaSupplierPage(@Valid BpmOASupplierPageReqVO pageReqVO) {
PageResult<BpmOASupplierDO> pageResult = oaSupplierService.getOaSupplierPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, BpmOASupplierRespVO.class));

View File

@ -31,14 +31,12 @@ public class BpmOaSupplierProductController {
@PostMapping("/create")
@Operation(summary = "创建OA供应商商品")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-product:create')")
public CommonResult<Long> createOaSupplierProduct(@Valid @RequestBody BpmOASupplierProductSaveReqVO createReqVO) {
return success(oaSupplierProductService.createOaSupplierProduct(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新OA供应商商品")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-product:update')")
public CommonResult<Boolean> updateOaSupplierProduct(@Valid @RequestBody BpmOASupplierProductSaveReqVO updateReqVO) {
oaSupplierProductService.updateOaSupplierProduct(updateReqVO);
return success(true);
@ -47,7 +45,6 @@ public class BpmOaSupplierProductController {
@DeleteMapping("/delete")
@Operation(summary = "删除OA供应商商品")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-product:delete')")
public CommonResult<Boolean> deleteOaSupplierProduct(@RequestParam("id") Long id) {
oaSupplierProductService.deleteOaSupplierProduct(id);
return success(true);
@ -56,7 +53,6 @@ public class BpmOaSupplierProductController {
@GetMapping("/get")
@Operation(summary = "获得OA供应商商品")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-product:query')")
public CommonResult<BpmOASupplierProductRespVO> getOaSupplierProduct(@RequestParam("id") Long id) {
BpmOASupplierProductDO oaSupplierProduct = oaSupplierProductService.getOaSupplierProduct(id);
return success(BeanUtils.toBean(oaSupplierProduct, BpmOASupplierProductRespVO.class));
@ -64,7 +60,6 @@ public class BpmOaSupplierProductController {
@GetMapping("/page")
@Operation(summary = "获得OA供应商商品分页")
@PreAuthorize("@ss.hasPermission('bpm:oa-supplier-product:query')")
public CommonResult<PageResult<BpmOASupplierProductRespVO>> getOaSupplierProductPage(@Valid BpmOASupplierProductPageReqVO pageReqVO) {
PageResult<BpmOASupplierProductDO> pageResult = oaSupplierProductService.getOaSupplierProductPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, BpmOASupplierProductRespVO.class));

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplier;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -46,4 +47,7 @@ public class BpmOASupplierProductRespVO {
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
@Schema(description = "资产类型名称")
private String assetsTypeName;
}

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -49,4 +50,11 @@ public class BpmOASupplierProcurementPlanItemRespVO {
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
@Schema(description = "工厂名称")
private String factoryName;
@Schema(description = "资产类型名称")
private String typeName;
}

View File

@ -45,6 +45,9 @@ public class BpmOASupplierProcurementPlanPageReqVO extends PageParam {
@Schema(description = "流程实例的编号", example = "5984")
private String processInstanceId;
@Schema(description = "是否上传凭证 0否 1是")
private Integer certificateFlag;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;

View File

@ -15,7 +15,7 @@ public class BpmOASupplierProcurementPlanSaveReqVO {
private Long id;
@Schema(description = "申请人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31616")
@NotNull(message = "申请人的用户编号不能为空")
// @NotNull(message = "申请人的用户编号不能为空")
private Long userId;
@Schema(description = "供应商id", example = "123")

View File

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class TheArrivalFileItemsVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29981")
private Long id;
@Schema(description = "到货凭证", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadUserFile> theArrivalFileItems;
}

View File

@ -1,20 +1,22 @@
package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 供应商采购计划子 DO
*
* @author 艾楷
*/
@TableName("bpm_oa_supplier_procurement_plan_item")
@KeySequence("bpm_oa_supplier_procurement_plan_item_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@KeySequence("bpm_oa_supplier_procurement_plan_item_seq")
// 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@ -41,7 +43,7 @@ public class BpmOASupplierProcurementPlanItemDO extends BaseDO {
*/
private Long factoryId;
/**
* 供应商商品id
* 供应商商品id (-1 = 其他)
*/
private Long supplierProductId;
/**
@ -72,5 +74,14 @@ public class BpmOASupplierProcurementPlanItemDO extends BaseDO {
* 备注
*/
private String remark;
/**
* 工厂名称
*/
@TableField(exist = false)
private String factoryName;
/**
* 资产类型名称
*/
@TableField(exist = false)
private String typeName;
}

View File

@ -1,12 +1,14 @@
package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* OA供应商商品 DO
*
@ -68,4 +70,11 @@ public class BpmOASupplierProductDO extends BaseDO {
*/
private String remarks;
/**
* 资产类型名称
*/
@TableField(exist = false)
private String assetsTypeName;
}

View File

@ -6,6 +6,9 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanItemPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanItemDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 供应商采购计划子 Mapper
@ -30,4 +33,11 @@ public interface BpmOASupplierProcurementPlanItemMapper extends BaseMapperX<BpmO
.orderByDesc(BpmOASupplierProcurementPlanItemDO::getId));
}
/**
* 通过采购计划id获取采购计划子表
*
* @param procurementPlanId
* @return
*/
List<BpmOASupplierProcurementPlanItemDO> getByProcurementPlanId(@Param("procurementPlanId") Long procurementPlanId);
}

View File

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplierprocurementplan.BpmOASupplierProcurementPlanPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 供应商采购计划 Mapper
@ -16,7 +17,7 @@ import org.apache.ibatis.annotations.Mapper;
public interface BpmOASupplierProcurementPlanMapper extends BaseMapperX<BpmOASupplierProcurementPlanDO> {
default PageResult<BpmOASupplierProcurementPlanDO> selectPage(BpmOASupplierProcurementPlanPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BpmOASupplierProcurementPlanDO>()
LambdaQueryWrapperX<BpmOASupplierProcurementPlanDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<BpmOASupplierProcurementPlanDO>()
.eqIfPresent(BpmOASupplierProcurementPlanDO::getUserId, reqVO.getUserId())
.likeIfPresent(BpmOASupplierProcurementPlanDO::getSupplierName, reqVO.getSupplierName())
.eqIfPresent(BpmOASupplierProcurementPlanDO::getSettlementMethod, reqVO.getSettlementMethod())
@ -27,7 +28,12 @@ public interface BpmOASupplierProcurementPlanMapper extends BaseMapperX<BpmOASup
.eqIfPresent(BpmOASupplierProcurementPlanDO::getResult, reqVO.getResult())
.eqIfPresent(BpmOASupplierProcurementPlanDO::getProcessInstanceId, reqVO.getProcessInstanceId())
.betweenIfPresent(BpmOASupplierProcurementPlanDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(BpmOASupplierProcurementPlanDO::getId));
.orderByDesc(BpmOASupplierProcurementPlanDO::getId);
if (reqVO.getCertificateFlag() != null) {
lambdaQueryWrapperX.isNull(reqVO.getCertificateFlag() == 0, BpmOASupplierProcurementPlanDO::getTheArrivalFileItems);
lambdaQueryWrapperX.isNotNull(reqVO.getCertificateFlag() == 1, BpmOASupplierProcurementPlanDO::getTheArrivalFileItems);
}
return selectPage(reqVO, lambdaQueryWrapperX);
}
}

View File

@ -6,6 +6,9 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.supplier.BpmOASupplierProductPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProductDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* OA供应商商品 Mapper
@ -30,4 +33,11 @@ public interface BpmOASupplierProductMapper extends BaseMapperX<BpmOASupplierPro
.orderByDesc(BpmOASupplierProductDO::getId));
}
/**
* 通过供应商id获取商品列表
*
* @param oaSupplierId
* @return
*/
List<BpmOASupplierProductDO> getByOaSupplierId(@Param("oaSupplierId") Long oaSupplierId);
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.rpc.config;
import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import cn.iocoder.yudao.module.system.api.assets.AssetsApi;
import cn.iocoder.yudao.module.system.api.attendance.AttendanceApi;
import cn.iocoder.yudao.module.system.api.bank.BankApi;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
@ -21,7 +22,7 @@ import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = {FileApi.class, RoleApi.class, DeptApi.class, PostApi.class, AdminUserApi.class, SmsSendApi.class, DictDataApi.class, NotifyMessageSendApi.class,
SubscribeMessageSendApi.class, SocialClientApi.class, UsersExtApi.class, AttendanceApi.class, BankApi.class, ConfigApi.class, PositionApi.class, SupplierApi.class
SubscribeMessageSendApi.class, SocialClientApi.class, UsersExtApi.class, AttendanceApi.class, BankApi.class, ConfigApi.class, PositionApi.class, SupplierApi.class, AssetsApi.class
})
public class RpcConfiguration {
}

View File

@ -59,8 +59,7 @@ public class BpmOASupplierProcurementPlanItemServiceImpl implements BpmOASupplie
@Override
public List<BpmOASupplierProcurementPlanItemDO> getByProcurementPlanId(Long procurementPlanId) {
return oaSupplierProcurementPlanItemMapper.selectList(new LambdaQueryWrapper<BpmOASupplierProcurementPlanItemDO>()
.eq(BpmOASupplierProcurementPlanItemDO::getProcurementPlanId, procurementPlanId));
return oaSupplierProcurementPlanItemMapper.getByProcurementPlanId(procurementPlanId);
}
}

View File

@ -3,8 +3,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.controller.admin.oa.vo.supplierprocurementplan.TheArrivalFileItemsVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanDO;
import javax.validation.Valid;
@ -79,4 +79,11 @@ public interface BpmOASupplierProcurementPlanService {
* @return
*/
List<BpmOASupplierProcurementPlanDO> getListBySupplierId(BpmOASupplierProcurementPlanReqVO vo);
/**
* 上传到货凭证
*
* @param vo
*/
void uploadDeliveryReceipt(TheArrivalFileItemsVO vo);
}

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.bpm.service.oa;
import cn.hutool.core.collection.CollectionUtil;
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;
@ -10,17 +11,22 @@ 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.controller.admin.oa.vo.supplierprocurementplan.TheArrivalFileItemsVO;
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;
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.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.system.api.assets.AssetsApi;
import cn.iocoder.yudao.module.system.api.assets.dto.SupplierAssetAllocationDTO;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -46,6 +52,11 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
private BpmProcessInstanceApi processInstanceApi;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@Resource
private AssetsApi assetsApi;
@Resource
private DeptApi deptApi;
// @Resource
// private BpmProcessInstanceService processInstanceService;
@ -57,11 +68,10 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
@Override
public Long createOaSupplierProcurementPlan(BpmOASupplierProcurementPlanSaveReqVO createReqVO) {
// 插入
BpmOASupplierProcurementPlanDO oaSupplierProcurementPlan = BeanUtils.toBean(createReqVO, BpmOASupplierProcurementPlanDO.class);
oaSupplierProcurementPlanMapper.insert(oaSupplierProcurementPlan);
// 返回
Long userId = WebFrameworkUtils.getLoginUserId();
createReqVO.setUserId(userId);
BpmOASupplierProcurementPlanDO oaSupplierProcurementPlan = BeanUtils.toBean(createReqVO, BpmOASupplierProcurementPlanDO.class);
oaSupplierProcurementPlanMapper.insert(oaSupplierProcurementPlan);
// 子列表转换
List<BpmOASupplierProcurementPlanItemDO> items = BpmOASupplierProcurementPlanItemConvert.INSTANCE.convert(createReqVO.getItems());
@ -151,4 +161,35 @@ public class BpmOASupplierProcurementPlanServiceImpl extends BpmOABaseService im
return planDOS;
}
@Override
public void uploadDeliveryReceipt(TheArrivalFileItemsVO vo) {
BpmOASupplierProcurementPlanDO supplierProcurementPlanDO = oaSupplierProcurementPlanMapper.selectById(vo.getId());
//判断是否需要更新到资产
Boolean updateAssetFlag = false;
if (CollectionUtil.isEmpty(supplierProcurementPlanDO.getTheArrivalFileItems())) {
updateAssetFlag = true;
}
supplierProcurementPlanDO.setTheArrivalFileItems(vo.getTheArrivalFileItems());
oaSupplierProcurementPlanMapper.updateById(supplierProcurementPlanDO);
// ----- 如果需要更新到资产 -
if (updateAssetFlag) {
List<BpmOASupplierProcurementPlanItemDO> itemDOS = supplierProcurementPlanItemService.getByProcurementPlanId(vo.getId());
// 新增资产 + 分配资产
List<SupplierAssetAllocationDTO> dtos = new ArrayList<>();
// -- 根据工厂ids 获取部门ids
CommonResult<Map<Long, Long>> mapCommonResult = deptApi.getDeptListByFactoryIds(itemDOS.stream().map(BpmOASupplierProcurementPlanItemDO::getFactoryId).collect(Collectors.toList()));
Map<Long, Long> map = mapCommonResult.getCheckedData();
for (BpmOASupplierProcurementPlanItemDO itemDO : itemDOS) {
SupplierAssetAllocationDTO dto = new SupplierAssetAllocationDTO();
dto.setName(itemDO.getSupplierProductName())
.setAmount(itemDO.getActualPrice())
.setTypeId(itemDO.getTypeId())
.setNum(itemDO.getNum())
.setInDeptId(map.get(itemDO.getFactoryId()));
dtos.add(dto);
}
assetsApi.supplierAssetAllocation(dtos);
}
}
}

View File

@ -59,8 +59,7 @@ public class BpmOaSupplierProductServiceImpl implements BpmOaSupplierProductServ
@Override
public List<BpmOASupplierProductDO> getByOaSupplierId(Long oaSupplierId) {
return oaSupplierProductMapper.selectList(new LambdaQueryWrapper<BpmOASupplierProductDO>()
.eq(BpmOASupplierProductDO::getOaSupplierId, oaSupplierId));
return oaSupplierProductMapper.getByOaSupplierId(oaSupplierId);
}
}

View File

@ -9,4 +9,17 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="getByProcurementPlanId"
resultType="cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProcurementPlanItemDO">
select a.*,
b.name as factoryName,
c.name as typeName
from bpm_oa_supplier_procurement_plan_item as a
left join sf_factory_info as b on a.factory_id = b.id
left join zc_assets_type as c on a.type_id = c.id
<where>
a.deleted = 0
and a.procurement_plan_id = #{procurementPlanId}
</where>
</select>
</mapper>

View File

@ -9,4 +9,15 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="getByOaSupplierId"
resultType="cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASupplierProductDO">
select a.*,
b.name as assetsTypeName
from bpm_oa_supplier_product as a
left join zc_assets_type as b on a.assets_type_id = b.id
<where>
a.deleted = 0
and a.oa_supplier_id = #{oaSupplierId}
</where>
</select>
</mapper>

View File

@ -0,0 +1,25 @@
package cn.iocoder.yudao.module.system.api.assets;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.system.api.assets.dto.SupplierAssetAllocationDTO;
import cn.iocoder.yudao.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory =
@Tag(name = "RPC 服务 - 资产类型")
public interface AssetsApi {
String PREFIX = ApiConstants.PREFIX + "/assets";
@PostMapping(PREFIX + "/supplierAssetAllocation")
@Operation(summary = "供应商资产分配")
CommonResult supplierAssetAllocation(@RequestBody List<SupplierAssetAllocationDTO> dtos);
}

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.system.api.assets.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
@Data
@Accessors(chain = true)
public class SupplierAssetAllocationDTO {
/**
* 资产名称
*/
private String name;
/**
* 资产价格
*/
private BigDecimal amount;
/**
* 资产类型id
*/
private Long typeId;
/**
* 资产数量
*/
private Integer num;
/**
* 入库部门id
*/
private Long inDeptId;
}

View File

@ -82,8 +82,13 @@ public interface DeptApi {
return CollectionUtils.convertMap(list, DeptRespDTO::getId);
}
@GetMapping(PREFIX + "/getChildDeptList")
@Operation(summary = "获得指定部门的所有子部门id")
@Parameter(name = "deptId", description = "用户id", example = "146", required = true)
CommonResult<List<Long>> getChildDeptList(@RequestParam("deptId") Long deptId);
@PostMapping(PREFIX + "/getDeptListByFactoryIds")
@Operation(summary = "根据工厂ids获取部门ids")
CommonResult<Map<Long, Long>> getDeptListByFactoryIds(@RequestBody List<Long> factoryIds);
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.system.api.assets;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.module.system.api.assets.dto.SupplierAssetAllocationDTO;
import cn.iocoder.yudao.module.system.service.assets.AssetsService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController // 提供 RESTful API 接口 Feign 调用
@Validated
@DataPermission(enable = false)
public class AssetsApiImpl implements AssetsApi {
@Resource
private AssetsService assetsService;
@Override
public CommonResult supplierAssetAllocation(List<SupplierAssetAllocationDTO> dtos) {
assetsService.supplierAssetAllocation(dtos);
return CommonResult.success("ok");
}
}

View File

@ -17,6 +17,7 @@ import javax.annotation.Resource;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -122,4 +123,14 @@ public class DeptApiImpl implements DeptApi {
List<Long> ids = deptDOS.stream().map(DeptDO::getId).collect(Collectors.toList());
return success(ids);
}
@Override
public CommonResult<Map<Long, Long>> getDeptListByFactoryIds(List<Long> factoryIds) {
List<DeptDO> deptDOS = deptService.getDeptListByFactoryIds(factoryIds);
if (CollectionUtil.isEmpty(deptDOS)){
return success(Collections.emptyMap());
}
Map<Long, Long> map = deptDOS.stream().collect(Collectors.toMap(DeptDO::getFactoryId, DeptDO::getId));
return success(map);
}
}

View File

@ -44,7 +44,6 @@ public class SupplierController {
@PutMapping("/edit")
@Operation(summary = "更新供应商列表(OA已审核通过后插入)")
@PreAuthorize("@ss.hasPermission('system:supplier:update')")
public CommonResult<Boolean> edit(@Valid @RequestBody SupplierRpcDTO supplierRpcDTO) {
supplierService.saveOrEdit(supplierRpcDTO);
return success(true);
@ -53,7 +52,6 @@ public class SupplierController {
@PutMapping("/editStatus")
@Operation(summary = "更新供应商状态")
@PreAuthorize("@ss.hasPermission('system:supplier:update')")
public CommonResult<Boolean> editStatus(@Valid @RequestBody SupplierSaveReqVO vo) {
supplierService.editStatus(vo);
return success(true);
@ -62,7 +60,6 @@ public class SupplierController {
@DeleteMapping("/delete")
@Operation(summary = "删除供应商列表(OA已审核通过后插入)")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('system:supplier:delete')")
public CommonResult<Boolean> deleteSupplier(@RequestParam("id") Long id) {
supplierService.deleteSupplier(id);
return success(true);
@ -71,7 +68,6 @@ public class SupplierController {
@GetMapping("/get")
@Operation(summary = "获得供应商列表(OA已审核通过后插入)")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:supplier:query')")
public CommonResult<SupplierRespVO> getSupplier(@RequestParam("id") Long id) {
SupplierDO supplier = supplierService.getSupplier(id);
SupplierRespVO vo = BeanUtils.toBean(supplier, SupplierRespVO.class);
@ -98,7 +94,6 @@ public class SupplierController {
@GetMapping("/page")
@Operation(summary = "获得供应商列表(OA已审核通过后插入)分页")
@PreAuthorize("@ss.hasPermission('system:supplier:query')")
public CommonResult<PageResult<SupplierRespVO>> getSupplierPage(@Valid SupplierPageReqVO pageReqVO) {
PageResult<SupplierDO> pageResult = supplierService.getSupplierPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, SupplierRespVO.class));
@ -106,7 +101,6 @@ public class SupplierController {
@GetMapping("/export-excel")
@Operation(summary = "导出供应商列表(OA已审核通过后插入) Excel")
@PreAuthorize("@ss.hasPermission('system:supplier:export')")
@OperateLog(type = EXPORT)
public void exportSupplierExcel(@Valid SupplierPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {

View File

@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.system.service.assets;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.system.controller.admin.assets.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.assets.AssetsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.system.api.assets.dto.SupplierAssetAllocationDTO;
import cn.iocoder.yudao.module.system.controller.admin.assets.vo.AssetsPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.assets.vo.AssetsSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.assets.AssetsDO;
import javax.validation.Valid;
import java.util.List;
/**
* 资产 Service 接口
@ -52,4 +54,10 @@ public interface AssetsService {
*/
PageResult<AssetsDO> getAssetsPage(AssetsPageReqVO pageReqVO);
/**
* 供应商资产分配
*
* @param dtos
*/
void supplierAssetAllocation(List<SupplierAssetAllocationDTO> dtos);
}

View File

@ -3,8 +3,10 @@ package cn.iocoder.yudao.module.system.service.assets;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.module.system.api.assets.dto.SupplierAssetAllocationDTO;
import cn.iocoder.yudao.module.system.controller.admin.assets.vo.AssetsPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.assets.vo.AssetsSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.assets.vo.DeptAssetsInOutStockSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.assets.AssetsDO;
import cn.iocoder.yudao.module.system.dal.dataobject.assets.AssetsTypeDO;
import cn.iocoder.yudao.module.system.dal.mysql.assets.AssetsMapper;
@ -16,6 +18,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 资产 Service 实现类
@ -74,4 +79,32 @@ public class AssetsServiceImpl implements AssetsService {
return new PageResult<>(assetsDOIPage.getRecords(), assetsDOIPage.getTotal());
}
@Override
public void supplierAssetAllocation(List<SupplierAssetAllocationDTO> dtos) {
// 新增资产
List<AssetsDO> assetsDOS = new ArrayList<>();
List<DeptAssetsInOutStockSaveReqVO> vos = new ArrayList<>();
for (SupplierAssetAllocationDTO dto : dtos) {
AssetsDO assets = new AssetsDO();
assets.setId(IdWorker.getId());
assets.setName(dto.getName());
assets.setStatus(0);
assets.setAmount(dto.getAmount());
assets.setStock(dto.getNum());
assets.setTypeId(dto.getTypeId());
assets.setAssetsNo(IdWorker.get32UUID());
assetsDOS.add(assets);
DeptAssetsInOutStockSaveReqVO vo = new DeptAssetsInOutStockSaveReqVO();
vo.setInDeptId(dto.getInDeptId());
vo.setAssetsId(assets.getId());
vo.setNum(dto.getNum());
vos.add(vo);
}
// -- 批量新增
assetsMapper.insertBatch(assetsDOS);
// -- 批量分配
deptAssetsInOutStockService.createDeptAssetsInOutStock(-1L, vos);
}
}

View File

@ -127,6 +127,7 @@ public interface DeptService {
/**
* 获取部门类型为公司的部门信息
*
* @return 部门信息列表
*/
List<DeptDO> getCompanyDept();
@ -144,4 +145,12 @@ public interface DeptService {
* @return
*/
List<DeptDO> getFactoryDeptList(Long factoryId);
/**
* 根据工厂ids获取部门列表
*
* @param factoryIds
* @return
*/
List<DeptDO> getDeptListByFactoryIds(List<Long> factoryIds);
}

View File

@ -314,4 +314,10 @@ public class DeptServiceImpl implements DeptService {
.isNotNull(DeptDO::getFactoryId)
.eq(DeptDO::getStatus, CommonStatusEnum.ENABLE.getStatus()));
}
@Override
public List<DeptDO> getDeptListByFactoryIds(List<Long> factoryIds) {
return deptMapper.selectList(new LambdaQueryWrapper<DeptDO>()
.in(DeptDO::getFactoryId, factoryIds));
}
}

View File

@ -18,6 +18,8 @@ import cn.iocoder.yudao.framework.common.util.string.StrUtils;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import cn.iocoder.yudao.module.system.controller.admin.user.dto.UserPageDTO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.factoryUser.FactoryUserPageReqVO;

View File

@ -292,11 +292,21 @@ public class ScreenDataServiceImpl implements ScreenDataService {
// ---------------------------------- 用户 ----------------------------------
// -- 通过工厂id获取部门列表 -> 再通过部门列表获取用户列表
List<AdminUserRpcVO> users = adminUserApi.getFactoryUsers(factoryId).getData();
vo.setTotal(users.size());
int femaleTotal = (int) users.stream().filter(a -> a.getSex() == 2).count();
int total = 0;
int femaleTotal = 0;
int maleTotal = 0;
if (CollectionUtil.isNotEmpty(users)) {
total = users.size();
femaleTotal = (int) users.stream().filter(a -> a.getSex() == 2).count();
maleTotal = users.size() - femaleTotal;
} else {
users = Collections.emptyList();
}
vo.setTotal(total);
vo.setFemaleTotal(femaleTotal);
vo.setMaleTotal(users.size() - femaleTotal);
vo.setMaleTotal(maleTotal);
vo.setUsers(users);
// ---------------------------------- 窑炉 ----------------------------------
List<FactoryKilnDO> factoryKilnDOS = factoryKilnService.getFactoryKilnByFactoryId(factoryId);
vo.setYlNum(factoryKilnDOS.size());