123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 |
- package com.ruoyi.finance.service.impl;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.ruoyi.approvalFlow.domain.AuditItems;
- import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
- import com.ruoyi.basicData.domain.TCorps;
- import com.ruoyi.basicData.domain.TFees;
- import com.ruoyi.basicData.mapper.TCorpsMapper;
- import com.ruoyi.basicData.mapper.TFeesMapper;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.core.domain.model.LoginUser;
- import com.ruoyi.common.utils.DateUtils;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.finance.domain.TFee;
- import com.ruoyi.finance.domain.TFeeDo;
- import com.ruoyi.finance.domain.TWareHouseFees;
- import com.ruoyi.finance.mapper.TFeeDoMapper;
- import com.ruoyi.finance.mapper.TFeeMapper;
- import com.ruoyi.finance.service.ITFeeService;
- import com.ruoyi.system.domain.SysConfig;
- import com.ruoyi.system.mapper.SysConfigMapper;
- import com.ruoyi.warehouseBusiness.domain.*;
- import com.ruoyi.warehouseBusiness.mapper.BillnoDelMapper;
- import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
- import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsfeesMapper;
- import com.ruoyi.warehouseBusiness.service.impl.BillnoSerialServiceImpl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.transaction.interceptor.TransactionAspectSupport;
- import java.math.BigDecimal;
- import java.util.*;
- /**
- * 财务数据主Service业务层处理
- *
- * @author ruoyi
- * @date 2021-01-18
- */
- @Service
- public class TFeeServiceImpl implements ITFeeService {
- @Autowired
- private TFeeMapper tFeeMapper;
- @Autowired
- private TFeeDoMapper tFeeDoMapper;
- @Autowired
- private BillnoSerialServiceImpl billnoSerialServiceImpl;
- @Autowired
- private BillnoDelMapper billnoDelMapper;
- @Autowired
- private TCorpsMapper tCorpsMapper;
- @Autowired
- private TFeesMapper tFeesMapper;
- @Autowired
- private TWarehouseBillsMapper tWarehouseBillsMapper;
- @Autowired
- private TWarehousebillsfeesMapper tWarehousebillsfeesMapper;
- @Autowired
- private SysConfigMapper sysConfigMapper;
- @Autowired
- private AuditItemsServiceImpl auditItemsService;
- /**
- * 查询财务数据主
- *
- * @param fId 财务数据主ID
- * @return 财务数据主
- */
- @Override
- public Map<String, Object> selectTFeeById(Long fId) {
- Map<String, Object> map = new HashMap<>();
- // 客户表
- List<Long> corpsId = new ArrayList<>();
- // 费用
- List<Long> feesId = new ArrayList<>();
- TFee tFee=tFeeMapper.selectTFeeById(fId);
- if (StringUtils.isNotNull(tFee.getfCorpid())) {
- corpsId.add(tFee.getfCorpid());
- }
- corpsId.add(tFee.getfCorpid());
- // 查询从表数据
- TFeeDo tFeeDo = new TFeeDo();
- tFeeDo.setfPid(fId);
- List<TFeeDo> tFeeDoList= tFeeDoMapper.selectTFeeDoList(tFeeDo);
- List<Map<String, Object>> feeDoList=new ArrayList<>();
- if (StringUtils.isNotEmpty(tFeeDoList)) {
- for (TFeeDo fees : tFeeDoList) {
- Map<String, Object> map1 = new HashMap<>();
- feesId.add(fees.getfFeeid());
- // 查询主表
- TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fees.getfSrcpid());
- // 费用名称
- TFees tFees= tFeesMapper.selectTFeesById(fees.getfFeeid());
- // 费用表数据
- TWarehousebillsfees tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesById(fees.getfSrcid());
- map1.put("fId",fees.getfId());
- map1.put("fSrcid",fees.getfSrcid());
- map1.put("fSrcpid",fees.getfSrcpid());
- map1.put("fMblno",tWarehousebillsfees.getfMblno());
- map1.put("fBscorpno",tWarehousebills.getfBscorpno());
- map1.put("fProductName",tWarehousebillsfees.getfProductName());
- map1.put("fBsdate",tWarehousebillsfees.getfBsdate());
- map1.put("fFeeid",fees.getfFeeid());
- map1.put("fFeeName",tFees.getfName());
- map1.put("fSrcdc",fees.getfSrcdc());
- map1.put("fAmt",fees.getfAmt());
- map1.put("fAmtdr",fees.getfAmtdr());
- map1.put("fRemarks",fees.getfRemarks());
- map1.put("srcBillNo",tWarehousebillsfees.getSrcId());
- map1.put("fMarks",tWarehousebillsfees.getfMarks());
- map1.put("fChargedate",tWarehousebillsfees.getfChargedate());
- map1.put("fBillingDeadline",tWarehousebillsfees.getfBillingDeadline());
- map1.put("fBillingDays",tWarehousebillsfees.getfBillingDays());
- map1.put("fInventoryDays",tWarehousebillsfees.getfInventoryDays());
- if(tWarehousebills.getfBilltype().equals("SJRK")){
- map1.put("fBilltype","入库");
- } else if(tWarehousebills.getfBilltype().equals("SJCK")){
- map1.put("fBilltype","出库");
- } else if(tWarehousebills.getfBilltype().equals("CKDB")){
- map1.put("fBilltype","调拨");
- } else if(tWarehousebills.getfBilltype().equals("HQZY")){
- map1.put("fBilltype","货权转移");
- }
- feeDoList.add(map1);
- }
- }
- List<TCorps> corpsList = new ArrayList<>();
- List<Long> corpsIdList = StringUtils.integerDeduplication(corpsId);
- for (Long corpId : corpsIdList) {
- TCorps corps = tCorpsMapper.selectTCorpsById(corpId);
- if (StringUtils.isNotNull(corps)) {
- corpsList.add(corps);
- }
- }
- List<TFees> feesList = new ArrayList<>();
- List<Long> longList = StringUtils.integerDeduplication(feesId);
- for (Long fees : longList) {
- TFees tFees = tFeesMapper.selectTFeesById(fees);
- if (StringUtils.isNotNull(tFees)) {
- feesList.add(tFees);
- }
- }
- map.put("tFee",tFee);
- map.put("corps",corpsList);
- map.put("feesList", feesList);
- map.put("feeDoList",feeDoList);
- return map;
- }
- /**
- * 查询财务数据主列表
- *
- * @param tFee 财务数据主
- * @return 财务数据主
- */
- @Override
- public List<TFee> selectTFeeList(TFee tFee) {
- return tFeeMapper.selectTFeeList(tFee);
- }
- @Override
- public List<Map<String, Object>> selectTFeeList1(TFee tFee) {
- return tFeeMapper.selectTFeeList1(tFee);
- }
- /**
- * 新增财务数据主
- *
- * @param tFee 财务数据主
- * @return 结果
- */
- @Override
- public int insertTFee(TFee tFee) {
- tFee.setCreateTime(DateUtils.getNowDate());
- return tFeeMapper.insertTFee(tFee);
- }
- /**
- * 新增对账 、收费、
- * @param tfee
- * @param tfeeDo
- * @param loginUser
- * @param fBilltype
- * @return
- */
- @Override
- public AjaxResult insertTFeeTFeeDo(String tfee, String tfeeDo, LoginUser loginUser, String fBilltype) {
- Long fPid = null;
- Map<String, Object> map = new HashMap<>();
- TFee tFee = JSONArray.parseObject(tfee, TFee.class);
- if (StringUtils.isNull(tFee.getfId())) {
- // 如果是新数据
- tFee.setCreateBy(loginUser.getUser().getUserName());
- tFee.setfDeptid(loginUser.getUser().getDeptId());
- tFee.setfBilltype(fBilltype);
- // 业务编码
- Date time = new Date();
- String billNo = billnoSerialServiceImpl.getBillNo(fBilltype, time);
- tFee.setfBillno(billNo);
- tFeeMapper.insertTFee(tFee);
- fPid = tFee.getfId();
- } else {
- fPid = tFee.getfId();
- tFee.setUpdateBy(loginUser.getUser().getUserName());
- tFee.setUpdateTime(new Date());
- tFeeMapper.updateTFee(tFee);
- // 删除从表
- tFeeDoMapper.deleteByFPid(fPid);
- }
- // 财务从表
- if (StringUtils.isNotNull(tfeeDo)) {
- JSONArray jsonDrArray = JSONArray.parseArray(tfeeDo);
- List<TFeeDo> tFeeDoList = JSONObject.parseArray(jsonDrArray.toJSONString(), TFeeDo.class);
- for (TFeeDo tFeeDo : tFeeDoList) {
- tFeeDo.setfPid(fPid);
- tFeeDo.setCreateBy(loginUser.getUser().getUserName());
- tFeeDo.setCreateTime(new Date());
- tFeeDoMapper.insertTFeeDo(tFeeDo);
- }
- }
- map.put("tFee", tFee);
- return AjaxResult.success("成功", map);
- }
- /**
- * 修改财务数据主
- *
- * @param tFee 财务数据主
- * @return 结果
- */
- @Override
- public int updateTFee(TFee tFee) {
- tFee.setUpdateTime(DateUtils.getNowDate());
- return tFeeMapper.updateTFee(tFee);
- }
- /**
- * 批量删除财务数据主
- *
- * @param fIds 需要删除的财务数据主ID
- * @return 结果
- */
- @Override
- public int deleteTFeeByIds(Long[] fIds) {
- // 取出业务编号、 放入 billno_del
- for (Long id : fIds) {
- // 1、查询主表信息
- TFee tFee = tFeeMapper.selectTFeeById(id);
- // 2、业务编号、客存编号 放入 billno_del
- BillnoDel billnoDel = new BillnoDel();
- billnoDel.setBillType(tFee.getfBilltype());
- billnoDel.setBillNo(tFee.getfBillno());
- billnoDelMapper.insertBillnoDel(billnoDel);
- }
- return tFeeMapper.deleteTFeeByIds(fIds);
- }
- /**
- * 删除财务数据主信息
- *
- * @param fId 财务数据主ID
- * @return 结果
- */
- @Override
- public int deleteTFeeById(Long fId) {
- return tFeeMapper.deleteTFeeById(fId);
- }
- @Override
- public List<Map<String, Object>> warehouseBillsFeesList(TWareHouseFees tWareHouseFees,String billsType) {
- List<Map<String, Object>> maps =new ArrayList<Map<String, Object>>();
- Map<String, Object> map = new HashMap<>();
- map.put("tWareHouseFees", tWareHouseFees);
- List<Map<String, Object>> mapList =new ArrayList<>();
- if(billsType.equals("DZ")){
- mapList = tFeeMapper.warehouseBillsFeesListAccamount(map);
- } else{
- if(tWareHouseFees.getfStatementNo()!=null && !tWareHouseFees.getfStatementNo().equals("")){
- mapList = tFeeMapper.warehouseBillsFeesListAccamount(map);
- }else {
- mapList = tFeeMapper.warehouseBillsFeesList(map);
- }
- }
- return mapList;
- }
- @Override
- public List<Map<String, Object>> warehouseBillsFeesList(TWareHouseFees tWareHouseFees) {
- return tFeeMapper.warehouseBillsFeesList1(tWareHouseFees);
- }
- public static BigDecimal calculation1(String fTotalgross, String fGrossweightblc) {
- BigDecimal num1 = new BigDecimal(fTotalgross);
- BigDecimal num2 = new BigDecimal(fGrossweightblc);
- BigDecimal result = num1.subtract(num2);
- return result.setScale(2, BigDecimal.ROUND_HALF_UP);
- }
- @Override
- @Transactional
- public AjaxResult confirm(String tfee, String tfeeDo, LoginUser loginUser, String fBilltype) {
- TFee tFee = JSONArray.parseObject(tfee, TFee.class);
- if (StringUtils.isNull(tFee.getfId())) {
- // 如果是新数据
- tFee.setCreateBy(loginUser.getUser().getUserName());
- tFee.setfDeptid(loginUser.getUser().getDeptId());
- tFee.setfBilltype(fBilltype);
- // 业务编码
- Date time = new Date();
- String billNo = billnoSerialServiceImpl.getBillNo(fBilltype, time);
- tFee.setfBillno(billNo);
- tFeeMapper.insertTFee(tFee);
- } else {
- tFee.setUpdateBy(loginUser.getUser().getUserName());
- tFee.setUpdateTime(new Date());
- tFeeMapper.updateTFee(tFee);
- // 删除从表
- tFeeDoMapper.deleteByFPid(tFee.getfId());
- }
- // 财务从表
- if (StringUtils.isNotNull(tfeeDo) && !"[]".equals(tfeeDo)) {
- JSONArray jsonDrArray = JSONArray.parseArray(tfeeDo);
- List<TFeeDo> tFeeDoList = JSONObject.parseArray(jsonDrArray.toJSONString(), TFeeDo.class);
- for (TFeeDo tFeeDo : tFeeDoList) {
- tFeeDo.setfPid(tFee.getfId());
- tFeeDo.setCreateBy(loginUser.getUser().getUserName());
- tFeeDo.setCreateTime(new Date());
- tFeeDoMapper.insertTFeeDo(tFeeDo);
- }
- }
- // 这里加个判断取系统参数来确定是否需要启用审批流
- String key = "";
- boolean isApprove = false;
- long actId = 0L;
- if ("DZ".equals(fBilltype)) {
- actId = 210L;
- key = "warehouse.contrast.ApprovalFlow";
- } else if ("SF".equals(fBilltype)) {
- actId = 220L;
- key = "warehouse.charge.ApprovalFlow";
- } else if ("FF".equals(fBilltype)) {
- actId = 230L;
- key = "warehouse.payment.ApprovalFlow";
- }
- SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
- if (StringUtils.isNull(sysConfig)) {
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return AjaxResult.error("系统参数异常,未找到开启审批流参数");
- }
- if ("0".equals(sysConfig.getConfigValue())) {
- isApprove = true;
- }
- if (isApprove) {
- AuditItems auditItems = new AuditItems();
- auditItems.setLevelId(0L);
- auditItems.setBillId(tFee.getfId());
- auditItems.setActId(actId);
- auditItems.setIffinalItem("F");
- auditItems.setBillNo(tFee.getfBillno()); // 业务编号
- auditItems.setRefno1(String.valueOf(tFee.getfCorpid())); // 货权方
- auditItems.setRefno2(tFee.getfBilltype());// 财务类型
- auditItems.setRefno3(tFee.gettMblno());// 提单号
- auditItems.setSendUserId(loginUser.getUser().getUserId());
- auditItems.setSendName(loginUser.getUsername());
- auditItems.setSendTime(new Date());
- auditItems.setAuditUserId(loginUser.getUser().getUserId());
- auditItems.setAuditItem(new Date());
- auditItems.setAuditOpTime(new Date());
- auditItems.setAuditMsg("提交");
- auditItems.setAuditStatus("O");
- AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
- Long code = Long.valueOf(String.valueOf(approvalFlow.get("code"))).longValue();
- if (code.equals(500L)) {
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }
- return approvalFlow;
- }else {
- if (StringUtils.isNotNull(tfeeDo) && !"[]".equals(tfeeDo)) {
- JSONArray jsonDrArray = JSONArray.parseArray(tfeeDo);
- List<TFeeDo> tFeeDoList = JSONObject.parseArray(jsonDrArray.toJSONString(), TFeeDo.class);
- for (TFeeDo tFeeDo : tFeeDoList) {
- // 跟新费用明细
- int m = updateBillsFees(tFee.getfId(),tFeeDo,fBilltype);
- if (m == 0) {
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return AjaxResult.error("更新费用明细失败");
- }
- }
- }
- AjaxResult ajaxResult = tfeeFollow(tFee.getfId(), 6L);
- Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
- return ajaxResult;
- }
- }
- /**
- * 根据财务主表id 更新对应明细表状态
- *
- * @param fPid 财务主表id
- * @return 结果
- */
- @Transactional
- public AjaxResult tfeeFollow(Long fPid, long fettle) {
- if (StringUtils.isNull(fPid)) {
- return AjaxResult.error("财务更新状态未找到主表信息,请与管理员联系");
- }
- TFee tFee = new TFee();
- tFee.setfId(fPid);
- tFee.setfBillstatus(String.valueOf(fettle));
- int tFeeUpdateResult = tFeeMapper.updateTFee(tFee);
- if (tFeeUpdateResult <= 0) {
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return AjaxResult.error("更新财务明细状态失败,请联系管理员");
- }
- try{
- int itemUpdateResult = tFeeDoMapper.tfeeDoFollowUpdate(fPid,fettle);
- } catch (Exception exception){
- return AjaxResult.error("更新财务明细状态失败,请联系管理员");
- }
- return AjaxResult.success();
- }
- @Transactional
- public AjaxResult billsfeesFollow(Long fPid) {
- if (StringUtils.isNull(fPid)) {
- return AjaxResult.error("费用明细更新状态未找到主表信息,请与管理员联系");
- }
- TFee tFee=tFeeMapper.selectTFeeById(fPid);
- // 查询从表数据
- TFeeDo tFeeDo = new TFeeDo();
- tFeeDo.setfPid(fPid);
- List<TFeeDo> tFeeDoList= tFeeDoMapper.selectTFeeDoList(tFeeDo);
- for (TFeeDo tFeeDo1 : tFeeDoList) {
- // 跟新费用明细
- int m = updateBillsFees(fPid,tFeeDo1,tFee.getfBilltype());
- if (m == 0) {
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return AjaxResult.error("更新费用明细失败");
- }
- }
- return AjaxResult.success();
- }
- @Override
- @Transactional
- public AjaxResult revoke(String tfee, String tfeeDo, LoginUser loginUser, String fBilltype) {
- // 更新 主表、从表
- TFee tFee = JSONArray.parseObject(tfee, TFee.class);
- tFee.setUpdateBy(loginUser.getUser().getUserName());
- tFee.setUpdateTime(new Date());
- tFeeMapper.updateTFee(tFee);
- // 删除从表
- tFeeDoMapper.deleteByFPid(tFee.getfId());
- // 财务从表
- if (StringUtils.isNotNull(tfeeDo)) {
- JSONArray jsonDrArray = JSONArray.parseArray(tfeeDo);
- List<TFeeDo> tFeeDoList = JSONObject.parseArray(jsonDrArray.toJSONString(), TFeeDo.class);
- for (TFeeDo tFeeDo : tFeeDoList) {
- tFeeDo.setfPid(tFee.getfId());
- tFeeDo.setCreateBy(loginUser.getUser().getUserName());
- tFeeDo.setCreateTime(new Date());
- tFeeDoMapper.insertTFeeDo(tFeeDo);
- // 跟新费用明细
- int m = updateBillsFees(tFee.getfId(),tFeeDo,fBilltype);
- if (m == 0) {
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return AjaxResult.error("更新费用明细失败");
- }
- }
- }
- return AjaxResult.success();
- }
- @Override
- public AjaxResult queryRemove(Long fId) {
- TFee tFee=tFeeMapper.selectTFeeById(fId);
- TFeeDo tFeeDo = new TFeeDo();
- tFeeDo.setfPid(tFee.getfId());
- List<TFeeDo> tFeeDoList= tFeeDoMapper.selectTFeeDoList(tFeeDo);
- if( StringUtils.isNull(tFee)){
- return AjaxResult.success("0");
- } else if(StringUtils.isNotNull(tFee) && StringUtils.isEmpty(tFeeDoList) ){
- return AjaxResult.success("1");
- } else {
- return AjaxResult.success("2");
- }
- }
- @Override
- public List<TWareHouseExcelItem> selectTWarehousebillsItemsList(Long fId) {
- return tFeeMapper.selectTWarehousebillsItemsList(fId);
- }
- /**
- * 更新费用明细
- * @param fid
- * @param tFeeDo
- * @param billsType
- * @return
- */
- @Transactional
- public int updateBillsFees(Long fid,TFeeDo tFeeDo,String billsType){
- // 查询从表数据
- TFee tFee=tFeeMapper.selectTFeeById(fid);
- if(billsType.equals("SF") || billsType.equals("FF")){
- billsType="DC";
- }
- Map<String, Object> map = new HashMap<>();
- map.put("tFee", tFee);
- map.put("billType", billsType);
- map.put("tFeeDo", tFeeDo);
- return tWarehousebillsfeesMapper.updateTWarehousebillsfee(map);
- }
- }
|