From 3b2beec9199fb478636a46f17ebf44b2f35973d7 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 15 Jan 2024 18:03:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=B8=90=E4=BD=99=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=9B=E5=AE=8C=E5=96=84=E5=8D=8F=E8=AE=AE=E7=B1=BB?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E8=B7=91=E6=96=B0=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/update.sql | 18 ++- .../properties/ProjectApisProperties.java | 1 + .../common/model/oa/OaFormMainProcess.java | 36 +++++ .../serve/common/model/oa/OaUploadFile.java | 27 ++++ .../bms/service/BmsSupplierService.java | 8 ++ .../service/impl/BmsSupplierServiceImpl.java | 24 ++++ .../erp/controller/ErpCustomerController.java | 9 +- .../entity/dto/ErpCustomerAmountResult.java | 10 ++ .../seeyon/service/SeeYonRequestService.java | 3 + .../impl/SeeYonRequestServiceImpl.java | 7 + .../modules/sys/entity/SysTableTemp.java | 100 ++++++++++++++ .../sys/mapper/SysTableTempMapper.java | 14 ++ .../modules/tbs/common/TbsSeeYonConst.java | 2 + .../controller/TbsCostApplyController.java | 13 ++ .../TbsCostApplyTestController.java | 95 ++++++++++++- .../tbs/controller/TbsCostTodoController.java | 3 + .../service/impl/TbsCostApplyServiceImpl.java | 125 ++++++++++++++---- .../TbsScheduleItemBudgetServiceImpl.java | 4 + .../modules/vtb/entity/dto/VtbSubjectDTO.java | 14 ++ .../impl/VtbVerificationServiceImpl.java | 11 ++ 20 files changed, 494 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java create mode 100644 src/main/java/com/qs/serve/common/model/oa/OaUploadFile.java create mode 100644 src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java create mode 100644 src/main/java/com/qs/serve/modules/sys/mapper/SysTableTempMapper.java create mode 100644 src/main/java/com/qs/serve/modules/vtb/entity/dto/VtbSubjectDTO.java diff --git a/doc/update.sql b/doc/update.sql index 5d65f80f..6629d776 100644 --- a/doc/update.sql +++ b/doc/update.sql @@ -1,9 +1,25 @@ update tbs_budget_condition set brand_id = SUBSTRING_INDEX(target_level_path_ids,'_',1) - update tbs_budget set center_combo = concat(center_type,'_',center_id) update vtb_verification v left join tbs_activity act on act.id = v.activity_id set v.activity_code = act.activity_code where v.verification_main_code like 'DHX%' + + +select tbs_budget.id from tbs_budget +LEFT JOIN tbs_budget_condition + on tbs_budget_condition.budget_id = tbs_budget.id +where tbs_budget.del_flag = 0 + and tbs_budget_condition.del_flag = 0 + and tbs_budget.condition_flag = 0 + and tbs_budget_condition.id is not null +GROUP BY tbs_budget.id + + + +update tbs_budget set condition_flag = 1 +where id in ( + ) + diff --git a/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java b/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java index 0568e806..c387dd23 100644 --- a/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java +++ b/src/main/java/com/qs/serve/common/config/properties/ProjectApisProperties.java @@ -24,4 +24,5 @@ public class ProjectApisProperties { /** 嘉士利接口,spu转换sku */ private String spuToSku; + } diff --git a/src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java b/src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java new file mode 100644 index 00000000..845702a7 --- /dev/null +++ b/src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java @@ -0,0 +1,36 @@ +package com.qs.serve.common.model.oa; + +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2024/1/12 + */ +@Data +public class OaFormMainProcess { + + private String targetId; + + /** + * 上次文件 + */ + private List uploadFiles; + + /** + * data + */ + private Object data; + + /** + * 员工号 + */ + private String senderLoginName; + + /** + * 模板编码 + */ + private String templateCode; + +} diff --git a/src/main/java/com/qs/serve/common/model/oa/OaUploadFile.java b/src/main/java/com/qs/serve/common/model/oa/OaUploadFile.java new file mode 100644 index 00000000..0c139088 --- /dev/null +++ b/src/main/java/com/qs/serve/common/model/oa/OaUploadFile.java @@ -0,0 +1,27 @@ +package com.qs.serve.common.model.oa; + +import lombok.Data; + +/** + * @author YenHex + * @since 2024/1/12 + */ +@Data +public class OaUploadFile { + + /** + * 表单控件名称 + */ + private String field; + + /** + * 附件文件名 + */ + private String name; + + /** + * 附件url + */ + private String url; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java index 1c7ab2a4..ed56577f 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java @@ -5,6 +5,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.bo.BmsSupplierBatchBo; import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo; +import java.math.BigDecimal; import java.util.List; /** @@ -42,5 +43,12 @@ public interface BmsSupplierService extends IService { void updateBmsSuppliersOtherUserNullById(List ids); + /** + * 根据客户编码获取报价单金额 + * @param supplierCode + * @return + */ + BigDecimal getErpQuoAmount(String supplierCode); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index 6d25e672..3bb40898 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.*; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; @@ -9,6 +10,7 @@ import com.qs.serve.modules.bms.entity.bo.BmsSupplierBatchBo; import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo; import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionService; +import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsCenterType; @@ -21,8 +23,12 @@ import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.List; +import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_CUS_AMOUNT; +import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_CUS_AMOUNT_QUO; + /** * 供应商 服务实现类 * @author YenHex @@ -37,6 +43,7 @@ public class BmsSupplierServiceImpl extends ServiceImpl selectSupplierList(BmsSupplier bmsSupplier) { @@ -302,5 +309,22 @@ public class BmsSupplierServiceImpl extends ServiceImpl ids){ this.baseMapper.updateBmsSuppliersOtherUserNullById(ids); } + + @Override + public BigDecimal getErpQuoAmount(String supplierCode) { + R reqResult = seeYonRequestBaseService.getBase(ERP_CUS_AMOUNT_QUO+"?supplierCode="+supplierCode,"获取客户报价单累计["+supplierCode+"]金额"); + if(reqResult==null || !reqResult.getStatus().equals(200)){ + //有错误退出 + log.warn("获取客户报价单累计金额,结果失败,cusCode:{}",supplierCode); + return null; + } + try { + return new BigDecimal(reqResult.getData()); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + } diff --git a/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java b/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java index e9d585e8..41713590 100644 --- a/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java +++ b/src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java @@ -65,7 +65,14 @@ public class ErpCustomerController { public R getAmountSync(@PathVariable String code){ ErpCustomerAmountResult amountResult = new ErpCustomerAmountResult(); String amount = AsyncFactory.getCumSurplusPrice(AuthContextUtils.getSysUserId(),code); - amountResult.setAmount(new BigDecimal(amount)); + BigDecimal quoAmount = supplierService.getErpQuoAmount(code); + amountResult.setQuoAmount(quoAmount); + amountResult.setPreAmount(new BigDecimal(amount)); + if(amount.equals("-1")){ + amountResult.setAmount(BigDecimal.ONE.negate()); + }else { + amountResult.setAmount(amountResult.getPreAmount().subtract(quoAmount)); + } return R.ok(amountResult); } diff --git a/src/main/java/com/qs/serve/modules/erp/entity/dto/ErpCustomerAmountResult.java b/src/main/java/com/qs/serve/modules/erp/entity/dto/ErpCustomerAmountResult.java index 5b666946..647dd0d6 100644 --- a/src/main/java/com/qs/serve/modules/erp/entity/dto/ErpCustomerAmountResult.java +++ b/src/main/java/com/qs/serve/modules/erp/entity/dto/ErpCustomerAmountResult.java @@ -16,4 +16,14 @@ public class ErpCustomerAmountResult { */ BigDecimal amount; + /** + * 客户总帐 + */ + BigDecimal preAmount; + + /** + * 客户报价单金额累计 + */ + BigDecimal quoAmount; + } diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java index e746d06b..c14a47a8 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.seeyon.service; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.oa.OaFormMainProcess; import com.qs.serve.modules.seeyon.entity.*; import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO; import com.qs.serve.modules.seeyon.enums.SyAffairState; @@ -34,6 +35,8 @@ public interface SeeYonRequestService { */ R baseCreateProcess(BaseCreateProcessBo createProcessBo); + R newCreateProcess(OaFormMainProcess createProcessBo); + /** * 创建流程后回调,更新记录状态 * @param createCallbackBo diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java index da39a01c..c01634b1 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.seeyon.service.impl; import com.alibaba.fastjson.JSONObject; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.oa.OaFormMainProcess; import com.qs.serve.common.util.*; import com.qs.serve.modules.seeyon.entity.*; import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO; @@ -84,6 +85,12 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE,createProcessBo,title); } + @Override + public R newCreateProcess(OaFormMainProcess createProcessBo) { + String title = "【创建流程2】"; + return seeYonRequestBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE_NEW,createProcessBo,title); + } + @Override public R createCallbackStatus(BaseCreateCallbackBo createCallbackBo) { String title = "【创建流程后回调】"; diff --git a/src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java b/src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java new file mode 100644 index 00000000..818129ae --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/entity/SysTableTemp.java @@ -0,0 +1,100 @@ +package com.qs.serve.modules.sys.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 临时数据表 实体类 + * @author YenHex + * @since 2024-01-15 + */ +@Data +@TableName("sys_table_temp") +public class SysTableTemp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 表 */ + @Length(max = 255,message = "表长度不能超过255字") + private String tableName; + + /** 数据id */ + @Length(max = 255,message = "数据id长度不能超过255字") + private String tableId; + + /** 业务名称 */ + @Length(max = 255,message = "业务名称长度不能超过255字") + private String optionTitle; + + /** 结果 */ + @Length(max = 255,message = "结果长度不能超过255字") + private String resultMsg; + + private Integer dealState; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + + public static SysTableTemp toNewObject(SysTableTemp source){ + SysTableTemp tableTemp = new SysTableTemp(); + tableTemp.setId(source.getId()); + tableTemp.setTableName(source.getTableName()); + tableTemp.setTableId(source.getTableId()); + tableTemp.setOptionTitle(source.getOptionTitle()); + tableTemp.setResultMsg(source.getResultMsg()); + tableTemp.setCreateTime(source.getCreateTime()); + tableTemp.setCreateBy(source.getCreateBy()); + tableTemp.setUpdateTime(source.getUpdateTime()); + tableTemp.setUpdateBy(source.getUpdateBy()); + tableTemp.setTenantId(source.getTenantId()); + tableTemp.setDelFlag(source.getDelFlag()); + return tableTemp; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/sys/mapper/SysTableTempMapper.java b/src/main/java/com/qs/serve/modules/sys/mapper/SysTableTempMapper.java new file mode 100644 index 00000000..38383f57 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/sys/mapper/SysTableTempMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.sys.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.sys.entity.SysTableTemp; + +/** + * 临时数据表 Mapper + * @author YenHex + * @date 2024-01-15 + */ +public interface SysTableTempMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index 8bd192fd..1f50f84b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java @@ -66,6 +66,7 @@ public interface TbsSeeYonConst { String API_TEST = "/testConnection"; String API_PROCESS_CREATE = "/process/create"; + String API_PROCESS_CREATE_NEW = "/process/newCreate"; String API_PROCESS_CREATE_CALLBACK = "/process/createCallback"; String API_PROCESS_COMMIT = "/process/commit"; String API_PROCESS_CANCEL = "/process/cancel"; @@ -91,6 +92,7 @@ public interface TbsSeeYonConst { /** 客户账单余额 */ String ERP_CUS_AMOUNT = "/erp/customer/amount"; + String ERP_CUS_AMOUNT_QUO = "/erp/customer/quoAmount"; String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices"; String ERP_CUS_INV_STAND = "/erp/inventory/standList"; String ERP_CUS_INV_SYNC_PRICE = "/erp/inventory/syncPrice"; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 33f86cf0..e2ba1938 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java @@ -38,6 +38,7 @@ import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper; import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper; import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl; +import com.qs.serve.modules.tbs.service.impl.TbsCostTodoOperationServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -64,6 +65,7 @@ public class TbsCostApplyController { private TbsCostApplyPart1Service costApplyPart1Service; private TbsCostContractService costContractService; private TbsCostApplyService tbsCostApplyService; + private TbsCostTodoService costTodoService; private TbsActivityService tbsActivityService; private TbsActivityTemplateService tbsActivityTemplateService; private TbsActivityCenterGoodsService tbsActivityCenterGoodsService; @@ -73,6 +75,7 @@ public class TbsCostApplyController { private final TbsActivityCenterGoodsService activityCenterGoodsService; private final TbsActivityChannelService activityChannelService; private final TbsActivityChannelPointService activityChannelPointService; + private final TbsCostTodoOperationServiceImpl costTodoOperationService; private BmsSupplierService bmsSupplierService; private final TbsBudgetLogMapper tbsBudgetLogMapper; private BmsRegion2Service region2Service; @@ -237,6 +240,16 @@ public class TbsCostApplyController { } TbsCostContract contract = costContractService.getByCostApplyId(tbsCostApply.getId()); tbsCostApply.setContractInfo(contract); +// if(tbsCostApply.getContractFlag().equals(1)){ +// //协议类 +// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); +// lqw.eq(TbsCostTodo::getCostApplyId,tbsCostApply.getId()); +// lqw.eq(TbsCostTodo::getCheckStatus,1); +// List costTodoList = costTodoService.list(lqw); +// for (TbsCostTodo costTodo : costTodoList) { +// costTodoOperationService.runCompensate(costTodo.getId()+""); +// } +// } return R.ok(tbsCostApply); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java index 2e743c14..6793da15 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyTestController.java @@ -15,7 +15,9 @@ import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.sys.entity.SysTableTemp; import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.mapper.SysTableTempMapper; import com.qs.serve.modules.sys.service.SysDeleteLogService; import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysUserService; @@ -83,15 +85,30 @@ public class TbsCostApplyTestController { private TbsCostChangeInfoService tbsCostChangeInfoService; private TbsBudgetCostItemService budgetCostItemService; private TbsBudgetLogService budgetLogService; + private SysTableTempMapper tableTempMapper; + @GetMapping("/rebuildAll") + public R ss(){ +// for (Long id : ids) { +// this.rebuildCost(id); +// } + return R.ok(); + } + /** * 重写适配预算 * @param costApplyId * @return */ + @GetMapping("/rebuild") public R rebuildCost(Long costApplyId){ + SysTableTemp sysTableTemp = new SysTableTemp(); + sysTableTemp.setTableName("tbs_cost_apply"); + sysTableTemp.setTableId(""+costApplyId); + sysTableTemp.setOptionTitle("rebuildCost"); + TbsCostApply costApply = tbsCostApplyService.getById(costApplyId); TbsBudgetTableResultVo resultVo = tbsBudgetMatchApplication.getMatchResult(costApplyId ,false); @@ -199,18 +216,86 @@ public class TbsCostApplyTestController { costItem.setScheduleItemBudgetId(itemBudget.getId()); } allBudgetItem.add(costItem); - } //保存 - if(costUnItems.size() > 0){ + if(costUnItems.size() > 0 || budgetLogList.size() < 1){ + sysTableTemp.setResultMsg("预算未匹配"); + tableTempMapper.insert(sysTableTemp); + log.error("预算未匹配:{}",costApplyId); return R.error(); } - budgetCostItemService.saveBatch(allBudgetItem); + //判断是否正常数据 + LambdaQueryWrapper citemLqw = new LambdaQueryWrapper<>(); + citemLqw.eq(TbsBudgetCostItem::getCostApplyId,costApplyId); + List itemList = budgetCostItemService.list(citemLqw); - if(CollectionUtil.isNotEmpty(budgetLogList)){ - budgetLogService.saveBatch(budgetLogList); + + boolean isMatch = true; + for (TbsBudgetCostItem item1 : allBudgetItem) { + boolean isMatchItem = false; + for (TbsBudgetCostItem item2 : itemList) { + if(item1.getCenterGoodItemId().equals(item2.getCenterGoodItemId())&&item1.getScheduleItemBudgetId().equals(item2.getScheduleItemBudgetId())){ + isMatchItem = true; + break; + } + } + if(!isMatchItem){ + isMatch = false; + } + } + if(isMatch){ + sysTableTemp.setResultMsg("预算正常"); + tableTempMapper.insert(sysTableTemp); + return R.ok("预算正常"); } + + sysTableTemp.setResultMsg("需重新生成但含释放"); + tableTempMapper.insert(sysTableTemp); + return R.ok("预算正常"); + + +// // 设置remark标记防止误删,移除旧的记录 +// for (TbsBudgetCostItem costItem : itemList) { +// costItem.setRemark("toDel"); +// } +// budgetCostItemService.updateBatchById(itemList); +// List itemIds = itemList.stream().map(TbsBudgetCostItem::getId).collect(Collectors.toList()); +// budgetCostItemService.removeBatchByIds(itemIds); +// //重新保存 +// budgetCostItemService.saveBatch(allBudgetItem); +// +// // 设置remark标记防止误删,移除旧的记录 +// LambdaQueryWrapper bLqw = new LambdaQueryWrapper<>(); +// bLqw.eq(TbsBudgetLog::getCostApplyId,costApplyId); +// List dbbudgetLogs = budgetLogService.list(bLqw); +// for (TbsBudgetLog budgetLog : dbbudgetLogs) { +// budgetLog.setRemark("toDel"); +// } +// budgetLogService.updateBatchById(dbbudgetLogs); +// List budIds = dbbudgetLogs.stream().map(TbsBudgetLog::getId).collect(Collectors.toList()); +// budgetLogService.removeBatchByIds(budIds); +// //重新保存 +// if(CollectionUtil.isNotEmpty(budgetLogList)){ +// budgetLogService.saveBatch(budgetLogList); +// } +// +// sysTableTemp.setResultMsg("重新生成"); +// tableTempMapper.insert(sysTableTemp); +// //移除历史释放金额 +// +// //根据释放记录,重新生成释放金额 +// +// +// return R.ok(); + } + + + /** + * 重新核销 + * @return + */ + public R reBuildCheck(){ return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java index 1ac373c8..a4a2cade 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java @@ -71,6 +71,9 @@ public class TbsCostTodoController { List list2 = attachService.listByIds(Arrays.asList(tbsCostTodo.getAttachIds2())); tbsCostTodo.setAttachList2(list2); } + if(tbsCostTodo.getCheckStatus().equals(1)){ + costTodoOperationService.runCompensate(tbsCostTodo.getId()+""); + } } return R.ok(list); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index bc198b73..21198702 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncManager; @@ -12,6 +13,8 @@ import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.MonthValues; +import com.qs.serve.common.model.oa.OaFormMainProcess; +import com.qs.serve.common.model.oa.OaUploadFile; import com.qs.serve.common.util.*; import com.qs.serve.common.util.model.DateFormatString; import com.qs.serve.modules.bir.entity.BirActivityCenterGoods; @@ -125,6 +128,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId()); + List contracts = costContractMapper.selectList(lqw); + + // 协议条款 + LambdaQueryWrapper todoLqw = new LambdaQueryWrapper<>(); + todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId()); + List costTodoList = tbsCostTodoMapper.selectList(todoLqw); //创建协议的费用申请Data - this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data); + this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data,contracts,costTodoList,new HashMap<>()); }else { //创建通用的费用申请Data this.buildCommonApplyData(id, tbsCostApply, activityList, supplier,sysUser, data); @@ -357,27 +370,85 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); - List oaAttachmentsIdList = null; + List oaAttachmentsIdList = new ArrayList<>(); + List oaContractAttachmentsIdList = new ArrayList<>(); + //新方式保存接口 + Map newWayData = new HashMap<>(); if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId()); + List contracts = costContractMapper.selectList(lqw); + for (TbsCostContract contract : contracts) { + if(contract.getAttachIds()==null||contract.getAttachIds().length<1){ + continue; + } + oaContractAttachmentsIdList.addAll(Arrays.asList(contract.getAttachIds())); + } + // 协议条款 + LambdaQueryWrapper todoLqw = new LambdaQueryWrapper<>(); + todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId()); + List costTodoList = tbsCostTodoMapper.selectList(todoLqw); + for (TbsCostTodo costTodo : costTodoList) { + if(costTodo.getAttachIds()==null||costTodo.getAttachIds().length<1){ + continue; + } + oaAttachmentsIdList.addAll(Arrays.asList(costTodo.getAttachIds())); + } //创建协议的费用申请Data - this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data); + this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data,contracts,costTodoList,newWayData); }else { //创建通用的费用申请Data this.buildCommonApplyData(id, tbsCostApply, activityList, supplier,sysUser, data); } - //修改申请编码 + //协议类走新流程 String templateCode = tbsCostApply.getContractFlag().equals(1) ?TbsSeeYonConst.CostApplyContractConf.Code() :TbsSeeYonConst.CostApplyConf.Code(); - BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); - createProcess.setTemplateCode(templateCode); - createProcess.setMemberLoginName(sysUser.getSyAccount()); - createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme()); - createProcess.setTargetId(tbsCostApply.getId()+""); - createProcess.setAttachments(oaAttachmentsIdList); - createProcess.setDataJson(JsonUtil.objectToJson(data)); - R flowIdResult = seeYonService.baseCreateProcess(createProcess); - if(flowIdResult.getStatus()!=200){ + R flowIdResult = null; + //TODO 启用新方法开关 + boolean newWay = true; + if(newWay && tbsCostApply.getContractFlag().equals(1)){ + List uploadFileList = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(oaAttachmentsIdList)){ + List attachList = sysAttachService.listByIds(oaAttachmentsIdList); + for (SysAttach sysAttach : attachList) { + OaUploadFile uploadFile = new OaUploadFile(); + uploadFile.setField("file"); + uploadFile.setName("协议附件"+sysAttach.getName()); + uploadFile.setUrl("https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/"+sysAttach.getRelativePath()); + uploadFileList.add(uploadFile); + } + } + if(CollectionUtil.isNotEmpty(oaContractAttachmentsIdList)){ + List attachContractList = sysAttachService.listByIds(oaContractAttachmentsIdList); + for (SysAttach sysAttach : attachContractList) { + OaUploadFile uploadFile = new OaUploadFile(); + uploadFile.setField("file"); + uploadFile.setName("合同附件"+sysAttach.getName()); + uploadFile.setUrl("https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/"+sysAttach.getRelativePath()); + uploadFileList.add(uploadFile); + } + } + OaFormMainProcess mainProcess = new OaFormMainProcess(); + mainProcess.setTargetId(id); + mainProcess.setUploadFiles(uploadFileList); + newWayData.put("formmain_1987",data); + mainProcess.setData(newWayData); + mainProcess.setTemplateCode(TbsSeeYonConst.CostApplyContractConf.Code()); + mainProcess.setSenderLoginName(sysUser.getAccount()); + flowIdResult = seeYonService.newCreateProcess(mainProcess); + }else { + //修改申请编码 + BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); + createProcess.setTemplateCode(templateCode); + createProcess.setMemberLoginName(sysUser.getSyAccount()); + createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme()); + createProcess.setTargetId(tbsCostApply.getId()+""); + createProcess.setDataJson(JsonUtil.objectToJson(data)); + flowIdResult = seeYonService.baseCreateProcess(createProcess); + } + + if(flowIdResult==null||flowIdResult.getStatus()!=200){ Assert.throwEx("远程服务调用失败"); } String flowId = flowIdResult.getData(); @@ -578,7 +649,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl activityList, List payConditions, BmsSupplier supplier, SysUser sysUser, Map data) { + private void buildContractApplyData(String id, TbsCostApply tbsCostApply, List activityList, List payConditions, BmsSupplier supplier, SysUser sysUser, Map data,List contracts,List costTodoList ,Map newWayData) { data.put("title", tbsCostApply.getChargeTheme()); data.put("orgId", tbsCostApply.getId().toString()); data.put("costApplyCode", tbsCostApply.getCode()); @@ -624,9 +695,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); - lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId()); - List contracts = costContractMapper.selectList(lqw); + if(contracts.size()>0){ //构建合同DATA @@ -639,8 +708,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl subList = new ArrayList<>(); //活动明细 - buildActivityCenterGoodsSeeyonData(id, tbsCostApply, activityList, subList); + buildActivityCenterGoodsSeeyonData(id, tbsCostApply, activityList, subList,newWayData); // 付款条件 + + List subPaymentList = new ArrayList<>(); for (TbsActivityPayCondition payCondition : payConditions) { // TbsActivity currActivity = null; // for (TbsActivity activity : activityList) { @@ -659,13 +730,14 @@ public class TbsCostApplyServiceImpl extends ServiceImpl0){ + newWayData.put("formson_1988",subPaymentList); + } - // 协议条款 - LambdaQueryWrapper todoLqw = new LambdaQueryWrapper<>(); - todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId()); - List costTodoList = tbsCostTodoMapper.selectList(todoLqw); + List toDoItemList = new ArrayList<>(); for (TbsCostTodo costTodo : costTodoList) { TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); toDoItem.setServiceDescription(costTodo.getDescr()); @@ -673,8 +745,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl cusCenterRateList = buildCusRateMain(supplier); @@ -686,10 +760,11 @@ public class TbsCostApplyServiceImpl extends ServiceImpl activityList, List subList) { + private void buildActivityCenterGoodsSeeyonData(String id, TbsCostApply tbsCostApply, List activityList, List subList,Map newWayData) { LambdaQueryWrapper actCgLqw = new LambdaQueryWrapper<>(); actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId, id); List activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); + List resultList = new ArrayList<>(); for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { TbsActivity currActivity = null; for (TbsActivity activity : activityList) { @@ -713,6 +788,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl0){ + newWayData.put("formson_1990",resultList); } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java index 6201a6ad..393a71fd 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java @@ -82,6 +82,7 @@ public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl result = new ArrayList<>(); for (Long scheduleItemBudgetId : scheduleItemBudgetIds) { + if(scheduleItemBudgetId.equals(0L)){continue;} TbsBudgetScheduleWithAmount withAmount = new TbsBudgetScheduleWithAmount(); withAmount.setScheduleItemBudgetId(scheduleItemBudgetId); for (TbsBudgetLogWithAmount obj : finalList) { @@ -263,6 +264,9 @@ public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl result = new ArrayList<>(); for (Long budgetId : budgetIds) { + if(budgetId.equals(0L)){ + continue; + } TbsBudgetWithAmount withAmount = new TbsBudgetWithAmount(); withAmount.setBudgetId(budgetId+""); diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/dto/VtbSubjectDTO.java b/src/main/java/com/qs/serve/modules/vtb/entity/dto/VtbSubjectDTO.java new file mode 100644 index 00000000..94cf59ae --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/entity/dto/VtbSubjectDTO.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.vtb.entity.dto; + +import lombok.Data; + +/** + * @author YenHex + * @since 2024/1/12 + */ +@Data +public class VtbSubjectDTO { + + private String keMuName; + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 29bb9cfd..cdc7c4b4 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -46,6 +46,7 @@ import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.entity.*; import com.qs.serve.modules.vtb.entity.bo.*; import com.qs.serve.modules.seeyon.entity.XltApticlaim; +import com.qs.serve.modules.vtb.entity.dto.VtbSubjectDTO; import com.qs.serve.modules.vtb.entity.dto.XltDelVerificationDto; import com.qs.serve.modules.vtb.mapper.VtbFundFlowMapper; import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; @@ -1050,6 +1051,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl subjectList = activitySubjectService.listByActivityId(activity.getId()); + List subjectDTOList = new ArrayList<>(); + for (TbsActivitySubject activitySubject : subjectList) { + VtbSubjectDTO subjectDTO = new VtbSubjectDTO(); + subjectDTO.setKeMuName(activitySubject.getSubjectName()); + } + List subList = new ArrayList<>(); try { List activityCenter = activityCenterService.listByActivity(verification.getActivityId()); @@ -1057,6 +1065,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl