Browse Source

外包账单功能开发

yzc 1 year ago
parent
commit
6c7bdd2d38

+ 8 - 1
hx-common/src/main/java/com/fjhx/common/enums/CodingRuleEnum.java

@@ -183,7 +183,14 @@ public enum CodingRuleEnum {
             getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
     )),
 
-
+    /**
+     * 外包账单
+     */
+    EPIBOLY_BILL("epiboly_bill", "外包账单", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "EB-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
     ;
 
 

+ 71 - 0
hx-oa/src/main/java/com/fjhx/oa/controller/epiboly/EpibolyBillController.java

@@ -0,0 +1,71 @@
+package com.fjhx.oa.controller.epiboly;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.epiboly.dto.EpibolyBillDto;
+import com.fjhx.oa.entity.epiboly.dto.EpibolyBillSelectDto;
+import com.fjhx.oa.entity.epiboly.vo.EpibolyBillVo;
+import com.fjhx.oa.service.epiboly.EpibolyBillService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 外包加工账单 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2024-04-15
+ */
+@RestController
+@RequestMapping("/epibolyBill")
+public class EpibolyBillController {
+
+    @Autowired
+    private EpibolyBillService epibolyBillService;
+
+    /**
+     * 外包加工账单分页
+     */
+    @PostMapping("/page")
+    public Page<EpibolyBillVo> page(@RequestBody EpibolyBillSelectDto dto) {
+        return epibolyBillService.getPage(dto);
+    }
+
+    /**
+     * 外包加工账单明细
+     */
+    @PostMapping("/detail")
+    public EpibolyBillVo detail(@RequestBody BaseSelectDto dto) {
+        return epibolyBillService.detail(dto.getId());
+    }
+
+    /**
+     * 外包加工账单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody EpibolyBillDto epibolyBillDto) {
+        epibolyBillService.add(epibolyBillDto);
+    }
+
+    /**
+     * 外包加工账单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody EpibolyBillDto epibolyBillDto) {
+        epibolyBillService.edit(epibolyBillDto);
+    }
+
+    /**
+     * 外包加工账单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        epibolyBillService.delete(dto.getId());
+    }
+
+}

+ 25 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/epiboly/dto/EpibolyBillDto.java

@@ -0,0 +1,25 @@
+package com.fjhx.oa.entity.epiboly.dto;
+
+import com.fjhx.file.entity.ObsFile;
+import com.fjhx.oa.entity.epiboly.po.EpibolyBill;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 外包加工账单新增编辑入参实体
+ *
+ * @author
+ * @since 2024-04-15
+ */
+@Getter
+@Setter
+public class EpibolyBillDto extends EpibolyBill {
+
+    /**
+     * 账单附件与凭证
+     */
+    private List<ObsFile> fileList;
+
+}

+ 22 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/epiboly/dto/EpibolyBillSelectDto.java

@@ -0,0 +1,22 @@
+package com.fjhx.oa.entity.epiboly.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 外包加工账单列表查询入参实体
+ *
+ * @author
+ * @since 2024-04-15
+ */
+@Getter
+@Setter
+public class EpibolyBillSelectDto extends BaseSelectDto {
+
+    /**
+     * 承包商
+     */
+    private Long contractorId;
+
+}

+ 85 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/epiboly/po/EpibolyBill.java

@@ -0,0 +1,85 @@
+package com.fjhx.oa.entity.epiboly.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 外包加工账单
+ * </p>
+ *
+ * @author
+ * @since 2024-04-15
+ */
+@Getter
+@Setter
+@TableName("epiboly_bill")
+public class EpibolyBill extends BasePo {
+
+    private String code;
+
+    private Integer status;
+
+    /**
+     * 流程id
+     */
+    private Long flowId;
+
+    /**
+     * 申请时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date applyTime;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
+
+    /**
+     * 承包商
+     */
+    private Long contractorId;
+
+    /**
+     * 账期
+     */
+    private String accountPeriod;
+
+    /**
+     * 账期金额
+     */
+    private BigDecimal accountPeriodAmount;
+
+    /**
+     * 预付金额
+     */
+    private BigDecimal prepaidAmount;
+
+    /**
+     * 最终金额
+     */
+    private BigDecimal finalAmount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 流程异常备注
+     */
+    private String flowAbnormalRemark;
+
+}

+ 26 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/epiboly/vo/EpibolyBillVo.java

@@ -0,0 +1,26 @@
+package com.fjhx.oa.entity.epiboly.vo;
+
+import com.fjhx.oa.entity.epiboly.po.EpibolyBill;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 外包加工账单列表查询返回值实体
+ *
+ * @author
+ * @since 2024-04-15
+ */
+@Getter
+@Setter
+public class EpibolyBillVo extends EpibolyBill {
+
+    private String createUserName;
+    private String deptName;
+    private String companyName;
+
+    /**
+     * 承包商
+     */
+    private String contractorName;
+
+}

+ 5 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/invoice/dto/InvoiceApplySelectDto.java

@@ -14,4 +14,9 @@ import lombok.Setter;
 @Setter
 public class InvoiceApplySelectDto extends BaseSelectDto {
 
+    /**
+     * 审批状态
+     */
+    private Integer status;
+
 }

+ 26 - 0
hx-oa/src/main/java/com/fjhx/oa/mapper/epiboly/EpibolyBillMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.oa.mapper.epiboly;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.epiboly.po.EpibolyBill;
+import com.fjhx.oa.entity.epiboly.vo.EpibolyBillVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 外包加工账单 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2024-04-15
+ */
+public interface EpibolyBillMapper extends BaseMapper<EpibolyBill> {
+
+    /**
+     * 外包加工账单分页
+     */
+    Page<EpibolyBillVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<EpibolyBill> wrapper);
+
+}

+ 46 - 0
hx-oa/src/main/java/com/fjhx/oa/service/epiboly/EpibolyBillService.java

@@ -0,0 +1,46 @@
+package com.fjhx.oa.service.epiboly;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.oa.entity.epiboly.dto.EpibolyBillDto;
+import com.fjhx.oa.entity.epiboly.dto.EpibolyBillSelectDto;
+import com.fjhx.oa.entity.epiboly.po.EpibolyBill;
+import com.fjhx.oa.entity.epiboly.vo.EpibolyBillVo;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 外包加工账单 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-15
+ */
+public interface EpibolyBillService extends BaseService<EpibolyBill> {
+
+    /**
+     * 外包加工账单分页
+     */
+    Page<EpibolyBillVo> getPage(EpibolyBillSelectDto dto);
+
+    /**
+     * 外包加工账单明细
+     */
+    EpibolyBillVo detail(Long id);
+
+    /**
+     * 外包加工账单新增
+     */
+    void add(EpibolyBillDto epibolyBillDto);
+
+    /**
+     * 外包加工账单编辑
+     */
+    void edit(EpibolyBillDto epibolyBillDto);
+
+    /**
+     * 外包加工账单删除
+     */
+    void delete(Long id);
+
+}

+ 107 - 0
hx-oa/src/main/java/com/fjhx/oa/service/epiboly/impl/EpibolyBillServiceImpl.java

@@ -0,0 +1,107 @@
+package com.fjhx.oa.service.epiboly.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.common.service.coding.CodingRuleService;
+import com.fjhx.common.service.contractor.ContractorService;
+import com.fjhx.common.utils.AuthorityUtils;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.oa.entity.epiboly.dto.EpibolyBillDto;
+import com.fjhx.oa.entity.epiboly.dto.EpibolyBillSelectDto;
+import com.fjhx.oa.entity.epiboly.po.EpibolyBill;
+import com.fjhx.oa.entity.epiboly.vo.EpibolyBillVo;
+import com.fjhx.oa.mapper.epiboly.EpibolyBillMapper;
+import com.fjhx.oa.service.epiboly.EpibolyBillService;
+import com.fjhx.tenant.utils.DeptUstil;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
+import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 外包加工账单 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2024-04-15
+ */
+@Service
+public class EpibolyBillServiceImpl extends ServiceImpl<EpibolyBillMapper, EpibolyBill> implements EpibolyBillService {
+
+    @Autowired
+    private ContractorService contractorService;
+    @Autowired
+    private CodingRuleService codingRuleService;
+
+    @Override
+    public Page<EpibolyBillVo> getPage(EpibolyBillSelectDto dto) {
+        IWrapper<EpibolyBill> wrapper = getWrapper();
+
+        //权限过滤
+        AuthorityUtils.cofAuthority("eb", EpibolyBill::getCompanyId, wrapper);
+
+        wrapper.keyword(dto.getKeyword(),
+                new SqlField("eb", EpibolyBill::getCode),
+                new SqlField("eb", EpibolyBill::getFinalAmount)
+        );
+
+        wrapper.eq("eb", EpibolyBill::getContractorId, dto.getContractorId());
+
+        wrapper.orderByDesc("eb", EpibolyBill::getId);
+        Page<EpibolyBillVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        setInfo(page.getRecords());
+        return page;
+    }
+
+    @Override
+    public EpibolyBillVo detail(Long id) {
+        EpibolyBill EpibolyBill = this.getById(id);
+        EpibolyBillVo result = BeanUtil.toBean(EpibolyBill, EpibolyBillVo.class);
+        Arrays.asList(result);
+        return result;
+    }
+
+    void setInfo(List<EpibolyBillVo> records) {
+        if (ObjectUtil.isEmpty(records)) {
+            return;
+        }
+        UserUtil.assignmentNickName(records, EpibolyBill::getCreateUser, EpibolyBillVo::setCreateUserName);
+        DeptUstil.assignmentNickName(records, EpibolyBill::getDeptId, EpibolyBillVo::setDeptName);
+        DeptUstil.assignmentNickName(records, EpibolyBill::getCompanyId, EpibolyBillVo::setCompanyName);
+        //赋值承包商
+        contractorService.attributeAssign(records, EpibolyBillVo::getContractorId, (item, contractor) -> {
+            item.setContractorName(contractor.getName());
+        });
+    }
+
+    @DSTransactional
+    @Override
+    public void add(EpibolyBillDto dto) {
+        dto.setStatus(FlowStatusEnum1.PASS.getKey());
+        dto.setCode(codingRuleService.createCode(CodingRuleEnum.EPIBOLY_BILL.getKey(), null));
+        this.save(dto);
+        ObsFileUtil.saveFile(dto.getFileList(), dto.getId());
+    }
+
+    @Override
+    public void edit(EpibolyBillDto epibolyBillDto) {
+        this.updateById(epibolyBillDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 11 - 0
hx-oa/src/main/java/com/fjhx/oa/service/invoice/impl/InvoiceApplyServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.common.utils.AuthorityUtils;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.entity.flow.po.FlowExample;
 import com.fjhx.flow.enums.FlowStatusEnum;
@@ -26,6 +27,7 @@ import com.fjhx.tenant.utils.DeptUstil;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -57,6 +59,15 @@ public class InvoiceApplyServiceImpl extends ServiceImpl<InvoiceApplyMapper, Inv
     @Override
     public Page<InvoiceApplyVo> getPage(InvoiceApplySelectDto dto) {
         IWrapper<InvoiceApply> wrapper = getWrapper();
+
+        //权限过滤
+        AuthorityUtils.cofAuthority("ia", InvoiceApply::getCompanyId, wrapper);
+
+        wrapper.keyword(dto.getKeyword(),
+                new SqlField("ia", InvoiceApply::getCode)
+        );
+        wrapper.eq("ia", InvoiceApplySelectDto::getStatus, dto.getStatus());
+
         wrapper.orderByDesc("ia", InvoiceApply::getId);
         Page<InvoiceApplyVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         setInfo(page.getRecords());

+ 27 - 0
hx-oa/src/main/resources/mapper/epiboly/EpibolyBillMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.oa.mapper.epiboly.EpibolyBillMapper">
+    <select id="getPage" resultType="com.fjhx.oa.entity.epiboly.vo.EpibolyBillVo">
+        select eb.id,
+               eb.code,
+               eb.status,
+               eb.flow_id,
+               eb.apply_time,
+               eb.dept_id,
+               eb.company_id,
+               eb.contractor_id,
+               eb.account_period,
+               eb.account_period_amount,
+               eb.prepaid_amount,
+               eb.final_amount,
+               eb.remark,
+               eb.flow_abnormal_remark,
+               eb.create_user,
+               eb.create_time,
+               eb.update_user,
+               eb.update_time
+        from epiboly_bill eb
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>