Browse Source

报销开发

anderx 2 years ago
parent
commit
9a1c2f1106

+ 3 - 0
src/main/java/com/goafanti/common/dao/ExpenseAccountMapper.java

@@ -3,6 +3,7 @@ package com.goafanti.common.dao;
 import com.goafanti.common.model.ExpenseAccount;
 import com.goafanti.common.model.FinanceCount;
 import com.goafanti.expenseAccount.bo.InputExpenseAccount;
+import com.goafanti.expenseAccount.bo.MainExpenseAccount;
 import com.goafanti.expenseAccount.bo.OutExpenseAccount;
 import com.goafanti.expenseAccount.bo.OutMyEAStatistics;
 import org.apache.ibatis.annotations.Param;
@@ -45,4 +46,6 @@ public interface ExpenseAccountMapper {
     List<ExpenseAccount> selectByIds(List<String> split);
 
     void updateByIds(@Param("list") List<String> list, @Param("status") Integer status);
+
+    MainExpenseAccount selectByMainId(Integer id);
 }

+ 57 - 0
src/main/java/com/goafanti/common/mapper/ExpenseAccountMapper.xml

@@ -634,6 +634,63 @@
     </foreach>
   </select>
 
+
+
+  <select id="selectByMainId" resultMap="MainMap">
+    select b.id,b.check_no,b.total_amount,b.order_no,o.contract_no,b.aname,b.apply_dep,b.pay_dep,
+           dep.name applyDepName,dep2.name payDepName, b.remarks,b.eaaid ,eap.name ,eap.bank ,eap.accounts ,b.status,b.process_status,
+           c.id sonId,c.total_amount sonAmount,c.`type` ,c.type_other ,c.user_names ,c.release_start ,c.release_end ,
+           d.id detId,d.`type` detType,d.amount ,d.start_district ,d.end_district
+    from expense_relationship a
+           left join expense_account b on a.id =b.id
+           left join department dep on b.apply_dep =dep.id left join department dep2 on b.pay_dep =dep2.id
+           left join t_order_new o on b.order_no =o.order_no left join expense_account_private eap on b.eaaid =eap.id
+           left join expense_account c on a.ea_id =c.id
+           left join expense_account_details d on c.id =d.eaid
+    where a.id= #{id}
+  </select>
+
+  <resultMap id="MainMap" type="com.goafanti.expenseAccount.bo.MainExpenseAccount">
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="check_no" jdbcType="VARCHAR" property="checkNo" />
+    <result column="total_amount" jdbcType="DECIMAL" property="totalAmount" />
+    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
+    <result column="contract_no" jdbcType="VARCHAR" property="contractNo" />
+    <result column="aname" jdbcType="VARCHAR" property="aname" />
+    <result column="apply_dep" jdbcType="VARCHAR" property="applyDep" />
+    <result column="pay_dep" jdbcType="VARCHAR" property="payDep" />
+    <result column="applyDepName" jdbcType="VARCHAR" property="applyDepName" />
+    <result column="payDepName" jdbcType="VARCHAR" property="payDepName" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="eaaid" jdbcType="INTEGER" property="eaaid" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="bank" jdbcType="VARCHAR" property="bank" />
+    <result column="accounts" jdbcType="VARCHAR" property="accounts" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="process_status" jdbcType="INTEGER" property="processStatus" />
+    <association property="sonList" resultMap="SonExpenseAccountMap"></association>
+  </resultMap>
+
+<!--c.total_amount sonAmount,c.`type` ,c.type_other ,c.user_names ,c.release_start ,c.release_end ,-->
+  <resultMap id="SonExpenseAccountMap" type="com.goafanti.expenseAccount.bo.SonExpenseAccount">
+    <id column="sonId" jdbcType="INTEGER" property="id" />
+    <result column="sonAmount" jdbcType="DECIMAL" property="totalAmount" />
+    <result column="type" jdbcType="INTEGER" property="type" />
+    <result column="type_other" jdbcType="VARCHAR" property="typeOther" />
+    <result column="user_names" jdbcType="VARCHAR" property="userNames" />
+    <result column="release_start" jdbcType="VARCHAR" property="releaseStart" />
+    <result column="release_end" jdbcType="VARCHAR" property="releaseEnd" />
+    <association property="detList" resultMap="ExpenseAccountDetailsMap"></association>
+  </resultMap>
+<!--d.`type` detType,d.amount ,d.start_district ,d.end_district-->
+  <resultMap id="ExpenseAccountDetailsMap" type="com.goafanti.expenseAccount.bo.SonExpenseAccountDetails">
+    <id column="detId" jdbcType="INTEGER" property="id" />
+    <result column="detType" jdbcType="INTEGER" property="type" />
+    <result column="amount" jdbcType="DECIMAL" property="amount" />
+    <result column="start_district" jdbcType="VARCHAR" property="startDistrict" />
+    <result column="end_district" jdbcType="VARCHAR" property="endDistrict" />
+  </resultMap>
+
   <update id="updateByIds" >
     update expense_account
     set status= #{status}

+ 3 - 1
src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml

@@ -487,8 +487,10 @@
     date_format(a.release_end ,'%Y-%m-%d %H:%i:%S') releaseEnds,date_format(a.create_time ,'%Y-%m-%d %H:%i:%S') createTimes,a.status,
     date_format(a.update_time ,'%Y-%m-%d %H:%i:%S') updateTimes,a.update_status updateStatus,a.district_name districtName,
     a.assist,a.assist_aid assistAid,a.assist_aid_name assistAidName,a.type,a.main_name mainName,a.reject_name rejectName,
-    a.assistant_aid assistantAid ,a.assistant_name assistantName,a.public_again publicAgain,a.user_names userNames,a.clock_in clockIn
+    a.assistant_aid assistantAid ,a.assistant_name assistantName,a.public_again publicAgain,a.user_names userNames,
+    ea.total_amount expenseAmount ,a.clock_in clockIn
     from public_release a  left join admin c on a.aid =c.id
+    left join expense_account ea on a.id =ea.prid
     <if test="type==2">
       left join department d on c.department_id =d.id
     </if>

+ 172 - 0
src/main/java/com/goafanti/expenseAccount/bo/MainExpenseAccount.java

@@ -0,0 +1,172 @@
+package com.goafanti.expenseAccount.bo;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class MainExpenseAccount  {
+
+    private Integer id;
+    private String checkNo;
+    private BigDecimal totalAmount;
+    private String orderNo;
+    private String contractNo;
+    private String aname;
+    private String applyDep;
+    private String payDep;
+    private String applyDepName;
+    private String payDepName;
+    private String remarks;
+    private Integer eaaid;
+    private List<OutExpenseAccount> sonList;
+    private String name;
+    private String bank;
+    private String accounts;
+    private String status;
+    private String processStatus;
+
+    public List<OutExpenseAccount> getSonList() {
+        return sonList;
+    }
+
+    public void setSonList(List<OutExpenseAccount> sonList) {
+        this.sonList = sonList;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getCheckNo() {
+        return checkNo;
+    }
+
+    public void setCheckNo(String checkNo) {
+        this.checkNo = checkNo;
+    }
+
+    public BigDecimal getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(BigDecimal totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getAname() {
+        return aname;
+    }
+
+    public void setAname(String aname) {
+        this.aname = aname;
+    }
+
+    public String getApplyDep() {
+        return applyDep;
+    }
+
+    public void setApplyDep(String applyDep) {
+        this.applyDep = applyDep;
+    }
+
+    public String getPayDep() {
+        return payDep;
+    }
+
+    public void setPayDep(String payDep) {
+        this.payDep = payDep;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public Integer getEaaid() {
+        return eaaid;
+    }
+
+    public void setEaaid(Integer eaaid) {
+        this.eaaid = eaaid;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getProcessStatus() {
+        return processStatus;
+    }
+
+    public void setProcessStatus(String processStatus) {
+        this.processStatus = processStatus;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getBank() {
+        return bank;
+    }
+
+    public void setBank(String bank) {
+        this.bank = bank;
+    }
+
+    public String getAccounts() {
+        return accounts;
+    }
+
+    public void setAccounts(String accounts) {
+        this.accounts = accounts;
+    }
+
+    public String getContractNo() {
+        return contractNo;
+    }
+
+    public void setContractNo(String contractNo) {
+        this.contractNo = contractNo;
+    }
+
+    public String getApplyDepName() {
+        return applyDepName;
+    }
+
+    public void setApplyDepName(String applyDepName) {
+        this.applyDepName = applyDepName;
+    }
+
+    public String getPayDepName() {
+        return payDepName;
+    }
+
+    public void setPayDepName(String payDepName) {
+        this.payDepName = payDepName;
+    }
+
+
+}

+ 79 - 0
src/main/java/com/goafanti/expenseAccount/bo/SonExpenseAccount.java

@@ -0,0 +1,79 @@
+package com.goafanti.expenseAccount.bo;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class SonExpenseAccount {
+    private Integer id;
+    private BigDecimal totalAmount;
+    private Integer type;
+    private String typeOther;
+    private String userNames;
+    private String releaseStart;
+    private String releaseEnd;
+    private List<SonExpenseAccountDetails> detList;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public BigDecimal getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(BigDecimal totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public String getTypeOther() {
+        return typeOther;
+    }
+
+    public void setTypeOther(String typeOther) {
+        this.typeOther = typeOther;
+    }
+
+    public String getUserNames() {
+        return userNames;
+    }
+
+    public void setUserNames(String userNames) {
+        this.userNames = userNames;
+    }
+
+    public String getReleaseStart() {
+        return releaseStart;
+    }
+
+    public void setReleaseStart(String releaseStart) {
+        this.releaseStart = releaseStart;
+    }
+
+    public String getReleaseEnd() {
+        return releaseEnd;
+    }
+
+    public void setReleaseEnd(String releaseEnd) {
+        this.releaseEnd = releaseEnd;
+    }
+
+    public List<SonExpenseAccountDetails> getDetList() {
+        return detList;
+    }
+
+    public void setDetList(List<SonExpenseAccountDetails> detList) {
+        this.detList = detList;
+    }
+}

+ 52 - 0
src/main/java/com/goafanti/expenseAccount/bo/SonExpenseAccountDetails.java

@@ -0,0 +1,52 @@
+package com.goafanti.expenseAccount.bo;
+
+import java.math.BigDecimal;
+
+public class SonExpenseAccountDetails {
+
+    private Integer id;
+    private Integer type;
+    private BigDecimal amount;
+    private String  startDistrict;
+    private String  endDistrict;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public String getStartDistrict() {
+        return startDistrict;
+    }
+
+    public void setStartDistrict(String startDistrict) {
+        this.startDistrict = startDistrict;
+    }
+
+    public String getEndDistrict() {
+        return endDistrict;
+    }
+
+    public void setEndDistrict(String endDistrict) {
+        this.endDistrict = endDistrict;
+    }
+}

+ 31 - 4
src/main/java/com/goafanti/expenseAccount/controller/ExpenseAccountController.java

@@ -6,10 +6,7 @@ import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.utils.ParamUtils;
 import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.core.shiro.token.TokenManager;
-import com.goafanti.expenseAccount.bo.InputExpenseAccount;
-import com.goafanti.expenseAccount.bo.InputExpenseAccountDetails;
-import com.goafanti.expenseAccount.bo.InputPageListBo;
-import com.goafanti.expenseAccount.bo.OutExpenseAccountStatistics;
+import com.goafanti.expenseAccount.bo.*;
 import com.goafanti.expenseAccount.service.ExpenseAccountService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -261,4 +258,34 @@ public class ExpenseAccountController extends CertifyApiController {
         return res.data(expenseAccountService.pushMerge(ids));
     }
 
+    /**
+     * 主报销详情
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "/mainExpense",method = RequestMethod.GET)
+    public Result mainExpense(Integer id){
+        Result res =new Result();
+        if (id==null){
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"合并编号"));
+            return  res;
+        }
+        return res.data(expenseAccountService.mainExpense(id));
+    }
+
+    /**
+     * 修改主报销
+     * @param in
+     * @return
+     */
+    @RequestMapping(value = "/updateMain",method = RequestMethod.GET)
+    public Result updateMain(MainExpenseAccount in){
+        Result res =new Result();
+        if (in.getId()==null){
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"编号"));
+            return  res;
+        }
+        return res.data(expenseAccountService.updateMain(in));
+    }
+
 }

+ 4 - 0
src/main/java/com/goafanti/expenseAccount/service/ExpenseAccountService.java

@@ -41,4 +41,8 @@ public interface ExpenseAccountService {
     Object selectByCheckNo(String checkNo);
 
     Object pushMerge(String ids);
+
+    Object mainExpense(Integer id);
+
+    Object updateMain(MainExpenseAccount in);
 }

+ 41 - 11
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -61,6 +61,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
 
 
+
     @Override
     public Integer add(InputExpenseAccount in) {
 
@@ -85,6 +86,8 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         return in.getId();
     }
 
+
+
     /**
      * 新增报销审核流程
      * @param id 报销编号
@@ -283,6 +286,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         for (ExpenseAccount e : list) {
             if (!in.getId().equals(e.getId())){
                 count=count.add(e.getSettlementAmount());
+
             }
         }
         newdebit.setSettlementAmount(count);
@@ -693,31 +697,57 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                 throw new BusinessException(String.format("[%s]编号已经发起,不能重复发起",e.getId()));
             }
         });
-        InputExpenseAccount in =new InputExpenseAccount();
         //设置付款部门和支付部门
+        InputExpenseAccount in =new InputExpenseAccount();
         in.setCheckNo(idGenerator.getNOgenerateId());
-        if (in.getAid()!=null){
-            Admin admin = adminMapper.selectByPrimaryKey(in.getAid());
-            in.setAname(admin.getName());
-            in.setApplyDep(admin.getDepartmentId());
-            in.setPayDep(admin.getDepartmentId());
+        if (in.getAid()==null){
+            in.setAid(TokenManager.getAdminId());
         }
+        Admin admin = adminMapper.selectByPrimaryKey(in.getAid());
+        in.setAname(admin.getName());
+        in.setApplyDep(admin.getDepartmentId());
+        in.setPayDep(admin.getDepartmentId());
         Integer eaaid = expenseAccountPrivateMapper.selectByaidDefault(TokenManager.getAdminId());
         in.setEaaid(eaaid);
         AtomicReference<BigDecimal> count = new AtomicReference<>(new BigDecimal(0));
         expenseAccounts.stream().forEach(e -> {
             count.set(count.get().add(e.getTotalAmount()));
+        });
+        in.setTotalAmount(count.get());
+        expenseAccountMapper.insertSelective(in);
+        expenseAccounts.stream().forEach(e -> {
             ExpenseRelationship er=new ExpenseRelationship();
             er.setId(in.getId());
             er.setEaId(e.getId());
-            expenseRelationshipMapper.insert(er);
+            expenseRelationshipMapper.insertSelective(er);
         });
-        in.setTotalAmount(count.get());
-        expenseAccountMapper.insertSelective(in);
         expenseAccountMapper.updateByIds(list,1);
-        addExpenseAccountExamine(in.getId());
+        return in.getId();
+    }
 
-        return 1;
+    @Override
+    public MainExpenseAccount mainExpense(Integer id) {
+        MainExpenseAccount res = expenseAccountMapper.selectByMainId(id);
+        return res;
+    }
+
+    @Override
+    public Object updateMain(MainExpenseAccount in) {
+        OutExpenseAccount outExpenseAccount = expenseAccountMapper.selectByid(in.getId());
+        if (outExpenseAccount != null&&outExpenseAccount.getStatus()!=0&&outExpenseAccount.getStatus()!=3) {
+            throw new BusinessException("主项目已发起,不可修改!");
+        }
+        ExpenseAccount update =new ExpenseAccount();
+        update.setId(in.getId());
+        if (in.getOrderNo()!=null)update.setOrderNo(in.getOrderNo());
+        if (in.getPayDep()!=null)update.setPayDep(in.getPayDep());
+        if (in.getApplyDep()!=null)update.setApplyDep(in.getApplyDep());
+        if (in.getRemarks()!=null)update.setRemarks(in.getRemarks());
+        if (in.getEaaid()!=null)update.setEaaid(in.getEaaid());
+        update.setStatus(1);
+        update.setProcessStatus(1);
+        addExpenseAccountExamine(in.getId());
+        return expenseAccountMapper.updateByPrimaryKeySelective(update);
     }
 
     /**

+ 9 - 2
src/main/java/com/goafanti/weChat/bo/OutPublicReleaseList.java

@@ -1,7 +1,6 @@
 package com.goafanti.weChat.bo;
 
-import com.goafanti.common.model.PublicReleaseDetails;
-
+import java.math.BigDecimal;
 import java.util.List;
 
 public class OutPublicReleaseList {
@@ -31,7 +30,15 @@ public class OutPublicReleaseList {
 	private String userNames;
 	private String adminExamine;
 	private Integer publicAgain;
+	private BigDecimal expenseAmount;
+
+	public BigDecimal getExpenseAmount() {
+		return expenseAmount;
+	}
 
+	public void setExpenseAmount(BigDecimal expenseAmount) {
+		this.expenseAmount = expenseAmount;
+	}
 
 	private List<OutPublicReleaseDetails> prdList;