From 90708aeb71db38097db2ffdcf112ffce82e978e4 Mon Sep 17 00:00:00 2001 From: pengjie <17373303529@163.com> Date: Fri, 30 Aug 2024 18:53:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E7=BA=A6=E8=A7=84=E5=88=92=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProjectDataController.java | 32 +++- .../controller/CostContractPayController.java | 115 +++++++++++++++ .../controller/CostPayPlanController.java | 2 +- .../modules/cost/dto/CostContractPlanDto.java | 14 ++ .../modules/cost/entity/CostContractPay.java | 117 +++++++++++++++ .../modules/cost/entity/CostContractPlan.java | 76 ++++++---- .../xmgl/modules/cost/entity/CostPayPlan.java | 4 + .../cost/mapper/CostContractPayMapper.java | 19 +++ .../cost/mapper/xml/CostContractPayMapper.xml | 5 + .../cost/service/ICostContractPayService.java | 18 +++ .../cost/service/ICostPayPlanService.java | 3 + .../impl/CostContractPayServiceImpl.java | 42 ++++++ .../impl/CostContractPlanServiceImpl.java | 138 +++++++++++------- .../service/impl/CostPayPlanServiceImpl.java | 28 +++- .../service/impl/ProjectServiceImpl.java | 7 +- 15 files changed, 531 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractPayController.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPay.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostContractPayMapper.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostContractPayMapper.xml create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/service/ICostContractPayService.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPayServiceImpl.java diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/ProjectDataController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/ProjectDataController.java index 881b202cc..9cf1aa477 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/ProjectDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/ProjectDataController.java @@ -12,6 +12,8 @@ import com.zhgd.xmgl.modules.basicdata.service.ICompanyService; import com.zhgd.xmgl.modules.basicdata.service.IDictionaryItemService; import com.zhgd.xmgl.modules.basicdata.service.IDictionaryService; import com.zhgd.xmgl.modules.cost.entity.CostContract; +import com.zhgd.xmgl.modules.cost.entity.CostContractPay; +import com.zhgd.xmgl.modules.cost.service.ICostContractPayService; import com.zhgd.xmgl.modules.cost.service.ICostContractService; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.entity.ProjectSupplier; @@ -60,6 +62,9 @@ public class ProjectDataController { @Autowired private ICostContractService costContractService; + @Autowired + private ICostContractPayService costContractPayService; + @Autowired private ICompanyService companyService; @@ -141,7 +146,7 @@ public class ProjectDataController { return Result.success(null); } - @ApiOperation(value = "获合同数据进行同步", notes = "获取供应商数据进行同步", httpMethod="POST") + @ApiOperation(value = "获合同数据进行同步", notes = "获合同数据进行同步", httpMethod="POST") @GetMapping(value = "/getContract") public Result> getContract() { String url = "/api/cube/restful/interface/getModeDataPageList/cghtlb"; @@ -166,6 +171,31 @@ public class ProjectDataController { return Result.success(null); } + @ApiOperation(value = "获合同支付数据进行同步", notes = "获合同支付数据进行同步", httpMethod="POST") + @GetMapping(value = "/getContractPay") + public Result> getContractPay() { + String url = "/api/cube/restful/interface/getModeDataPageList/FKGL"; + String systemid = "HTFK"; + String d_password = "D0679C10846644E193F45E2F08067735"; + JSONObject mainTable = new JSONObject(); + String result = doAction(url, systemid, d_password, mainTable); + if (StringUtils.isNotBlank(result)) { + JSONObject obj = JSONObject.parseObject(result); + JSONArray jsonArray = obj.getJSONArray("result"); + List contractPayList = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject projectObj = jsonArray.getJSONObject(i).getJSONObject("mainTable"); + CostContractPay costContractPay = JSONObject.parseObject(JSON.toJSONString(projectObj), CostContractPay.class); + contractPayList.add(costContractPay); + + JSONArray detailArray = jsonArray.getJSONObject(i).getJSONArray("detail1"); + System.out.println(detailArray); + } + costContractPayService.saveOrUpdateBatch(contractPayList); + } + return Result.success(null); + } + /** *restful接口调用案例 *以getModeDataPageList为例 diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractPayController.java b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractPayController.java new file mode 100644 index 000000000..5b91798bb --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractPayController.java @@ -0,0 +1,115 @@ +package com.zhgd.xmgl.modules.cost.controller; + +import com.zhgd.annotation.OperLog; +import com.zhgd.xmgl.util.PageUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zhgd.jeecg.common.api.vo.Result; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.jeecg.common.util.oConvertUtils; +import com.zhgd.xmgl.modules.cost.entity.CostContractPay; +import com.zhgd.xmgl.modules.cost.service.ICostContractPayService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.apache.commons.collections.MapUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import springfox.documentation.annotations.ApiIgnore; + + +/** + * @Title: Controller + * @Description: 合同支付 + * @author: pengj + * @date: 2024-08-30 + * @version: V1.0 + */ +@RestController +@RequestMapping("/xmgl/costContractPay") +@Slf4j +@Api(tags = "合同支付管理") +public class CostContractPayController { + @Autowired + private ICostContractPayService costContractPayService; + + /** + * 分页列表查询 + * + * @return + */ + @OperLog(operModul = "合同支付管理", operType = "分页查询", operDesc = "分页列表查询合同支付信息") + @ApiOperation(value = " 分页列表查询合同支付信息", notes = "分页列表查询合同支付信息", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNo", value = "页数", paramType = "body", required = true, defaultValue = "1", dataType = "Integer"), + @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "body", required = true, defaultValue = "10", dataType = "Integer") + }) + @PostMapping(value = "/page") + public Result> queryPageList(@ApiIgnore @RequestBody Map map) { + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(CostContractPay.class, map); + Page page = PageUtil.getPage(map); + IPage pageList = costContractPayService.pageList(page, queryWrapper); + return Result.success(pageList); + } + + /** + * 列表查询 + * + * @param costContractPay + * @return + */ + @OperLog(operModul = "合同支付管理", operType = "列表查询", operDesc = "列表查询合同支付信息") + @ApiOperation(value = " 列表查询合同支付信息", notes = "列表查询合同支付信息", httpMethod = "POST") + @PostMapping(value = "/list") + public Result> queryList(@RequestBody CostContractPay costContractPay) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(costContractPay); + List list = costContractPayService.list(queryWrapper); + return Result.success(list); + } + + /** + * 通过id查询 + * + * @return + */ + @OperLog(operModul = "合同支付管理", operType = "查询", operDesc = "通过id查询合同支付信息") + @ApiOperation(value = "通过id查询合同支付信息", notes = "通过id查询合同支付信息", httpMethod = "POST") + @ApiImplicitParam(name = "id", value = "合同支付ID", paramType = "body", required = true, dataType = "Integer") + @PostMapping(value = "/queryById") + public Result queryById(@ApiIgnore @RequestBody Map map) { + Result result = new Result(); + CostContractPay costContractPay = costContractPayService.getById(MapUtils.getString(map, "id")); + if (costContractPay == null) { + result.error500("未找到对应实体"); + } else { + result.setResult(costContractPay); + result.setSuccess(true); + } + return result; + } +} diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostPayPlanController.java b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostPayPlanController.java index e8d3b4843..f49a12058 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostPayPlanController.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostPayPlanController.java @@ -93,7 +93,7 @@ public class CostPayPlanController { public Result> queryPageList(@ApiIgnore @RequestBody Map map) { QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(CostPayPlan.class, map); Page page = PageUtil.getPage(map); - IPage pageList = costPayPlanService.page(page, queryWrapper); + IPage pageList = costPayPlanService.pageList(page, queryWrapper); return Result.success(pageList); } diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/dto/CostContractPlanDto.java b/src/main/java/com/zhgd/xmgl/modules/cost/dto/CostContractPlanDto.java index 989faa0f5..ea4082ea8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/dto/CostContractPlanDto.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/dto/CostContractPlanDto.java @@ -5,7 +5,9 @@ import com.zhgd.xmgl.modules.cost.entity.CostContractPlan; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -24,4 +26,16 @@ public class CostContractPlanDto extends CostContractPlan { @ApiModelProperty(value = "祖级关系") private String ancestors; + + @ApiModelProperty(value = "目标+调整") + private BigDecimal goal = new BigDecimal(0); + + @ApiModelProperty(value = "待发生合约") + private BigDecimal toOccur = new BigDecimal(0); + + @ApiModelProperty(value = "已发生金额") + private BigDecimal underApproval = new BigDecimal(0); + + @ApiModelProperty(value = "科目余量") + private BigDecimal allowance = new BigDecimal(0); } diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPay.java b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPay.java new file mode 100644 index 000000000..018cceead --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPay.java @@ -0,0 +1,117 @@ +package com.zhgd.xmgl.modules.cost.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @Description: 合同支付 + * @author: pengj + * @date: 2024-08-30 + * @version: V1.0 + */ +@Data +@TableName("cost_contract_pay") +@ApiModel(value = "CostContractPay实体类", description = "CostContractPay") +public class CostContractPay implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 合同支付ID + */ + @TableId(type = IdType.INPUT) + @ApiModelProperty(value = "合同支付ID") + private Integer id; + /** + * 合同名称 + */ + @Excel(name = "合同名称", width = 15) + @ApiModelProperty(value = "合同名称") + private String htmc; + /** + * 申请人 + */ + @Excel(name = "申请人", width = 15) + @ApiModelProperty(value = "申请人") + private String sqr; + /** + * 申请日期 + */ + @Excel(name = "申请日期", width = 15) + @ApiModelProperty(value = "申请日期") + private String sqrq; + /** + * 所属公司 + */ + @Excel(name = "所属公司", width = 15) + @ApiModelProperty(value = "所属公司") + private String sgs; + /** + * 所属部门 + */ + @Excel(name = "所属部门", width = 15) + @ApiModelProperty(value = "所属部门") + private String sbm; + /** + * 合同编号 + */ + @Excel(name = "合同编号", width = 15) + @ApiModelProperty(value = "合同编号") + private String htbh; + /** + * 合同金额 + */ + @Excel(name = "合同金额", width = 15) + @ApiModelProperty(value = "合同金额") + private String htje; + /** + * 已付金额 + */ + @Excel(name = "已付金额", width = 15) + @ApiModelProperty(value = "已付金额") + private String yfje; + /** + * 本次支付金额 + */ + @Excel(name = "本次支付金额", width = 15) + @ApiModelProperty(value = "本次支付金额") + private String bczfje; + /** + * 相对方签约主体 + */ + @Excel(name = "相对方签约主体", width = 15) + @ApiModelProperty(value = "相对方签约主体") + private String xdfqyzt; + /** + * 相对方签约主体开户行 + */ + @Excel(name = "相对方签约主体开户行", width = 15) + @ApiModelProperty(value = "相对方签约主体开户行") + private String xdfqyztkhx; + /** + * 相对方签约主体银行账号 + */ + @Excel(name = "相对方签约主体银行账号", width = 15) + @ApiModelProperty(value = "相对方签约主体银行账号") + private String xdfqyztyxzh; + /** + * 所属项目 + */ + @Excel(name = "所属项目", width = 15) + @ApiModelProperty(value = "所属项目") + private String sxm; + + @TableField(exist = false) + @ApiModelProperty(value = "申请人") + private String sqrName; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPlan.java b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPlan.java index a03e9eda9..d9568ceb6 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPlan.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostContractPlan.java @@ -40,6 +40,24 @@ public class CostContractPlan implements Serializable { @Excel(name = "合约名称", width = 15) @ApiModelProperty(value = "合约名称") private String contractName; + /** + * 合约类别 + */ + @Excel(name = "合约类别", width = 15) + @ApiModelProperty(value = "合约类别") + private String contractType; + /** + * 合约属性(0:合同;1:费用) + */ + @Excel(name = "合约属性(0:合同;1:费用)", width = 15) + @ApiModelProperty(value = "合约属性(0:合同;1:费用)") + private Integer nature; + /** + * 合同范围及界面描述 + */ + @Excel(name = "合同范围及界面描述", width = 15) + @ApiModelProperty(value = "合同范围及界面描述") + private String content; /** * 成本科目ID */ @@ -52,12 +70,6 @@ public class CostContractPlan implements Serializable { @Excel(name = "项目SN", width = 15) @ApiModelProperty(value = "项目SN") private String projectSn; - /** - * 目标+调整 - */ - @Excel(name = "目标+调整", width = 15) - @ApiModelProperty(value = "目标+调整") - private String goal; /** * 合同金额 */ @@ -65,29 +77,37 @@ public class CostContractPlan implements Serializable { @ApiModelProperty(value = "合同金额") private String contractAmount; /** - * 在途成本 + * 预计签约日期 */ - @Excel(name = "在途成本", width = 15) - @ApiModelProperty(value = "在途成本") - private String underApproval; - /** - * 待发生合约 - */ - @Excel(name = "待发生合约", width = 15) - @ApiModelProperty(value = "待发生合约") - private String toOccur; - /** - * 预估变更 - */ - @Excel(name = "预估变更", width = 15) - @ApiModelProperty(value = "预估变更") - private String estimatedChange; - /** - * 规划余量 - */ - @Excel(name = "规划余量", width = 15) - @ApiModelProperty(value = "规划余量") - private String allowance; + @Excel(name = "预计签约日期", width = 15) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "预计签约日期") + private Date signingDate; +// /** +// * 在途成本 +// */ +// @Excel(name = "在途成本", width = 15) +// @ApiModelProperty(value = "在途成本") +// private String underApproval; +// /** +// * 待发生合约 +// */ +// @Excel(name = "待发生合约", width = 15) +// @ApiModelProperty(value = "待发生合约") +// private String toOccur; +// /** +// * 预估变更 +// */ +// @Excel(name = "预估变更", width = 15) +// @ApiModelProperty(value = "预估变更") +// private String estimatedChange; +// /** +// * 规划余量 +// */ +// @Excel(name = "规划余量", width = 15) +// @ApiModelProperty(value = "规划余量") +// private String allowance; /** * 创建人 */ diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostPayPlan.java b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostPayPlan.java index 52c3e450a..f234ff4da 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostPayPlan.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostPayPlan.java @@ -90,6 +90,10 @@ public class CostPayPlan implements Serializable { @ApiModelProperty(value = "应付总进度款") private String totalPayAmount; + @TableField(exist = false) + @ApiModelProperty(value = "申请人") + private String applyByName; + @TableField(exist = false) @ApiModelProperty(value = "产值列表") private List costQuantityList; diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostContractPayMapper.java b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostContractPayMapper.java new file mode 100644 index 000000000..2a5f9ac24 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostContractPayMapper.java @@ -0,0 +1,19 @@ +package com.zhgd.xmgl.modules.cost.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import com.zhgd.xmgl.modules.cost.entity.CostContractPay; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 合同支付 + * @author: pengj + * @date: 2024-08-30 + * @version: V1.0 + */ +@Mapper +public interface CostContractPayMapper extends BaseMapper { + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostContractPayMapper.xml b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostContractPayMapper.xml new file mode 100644 index 000000000..9677e1ebb --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostContractPayMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostContractPayService.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostContractPayService.java new file mode 100644 index 000000000..8167568a0 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostContractPayService.java @@ -0,0 +1,18 @@ +package com.zhgd.xmgl.modules.cost.service; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhgd.xmgl.modules.cost.entity.CostContractPay; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 合同支付 + * @author: pengj + * @date: 2024-08-30 + * @version: V1.0 + */ +public interface ICostContractPayService extends IService { + + IPage pageList(Page page, Wrapper wrapper); +} diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostPayPlanService.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostPayPlanService.java index c21773cff..6253777dc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostPayPlanService.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostPayPlanService.java @@ -1,5 +1,7 @@ package com.zhgd.xmgl.modules.cost.service; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.xmgl.modules.cost.dto.ContractPayOverviewDto; import com.zhgd.xmgl.modules.cost.entity.CostPayPlan; import com.baomidou.mybatisplus.extension.service.IService; @@ -14,6 +16,7 @@ import java.util.List; */ public interface ICostPayPlanService extends IService { + Page pageList(Page page, Wrapper wrapper); CostPayPlan queryById(String id); diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPayServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPayServiceImpl.java new file mode 100644 index 000000000..cf58bb294 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPayServiceImpl.java @@ -0,0 +1,42 @@ +package com.zhgd.xmgl.modules.cost.service.impl; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; +import com.zhgd.xmgl.modules.cost.entity.CostContractPay; +import com.zhgd.xmgl.modules.cost.mapper.CostContractPayMapper; +import com.zhgd.xmgl.modules.cost.service.ICostContractPayService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Description: 合同支付 + * @author: pengj + * @date: 2024-08-30 + * @version: V1.0 + */ +@Service +public class CostContractPayServiceImpl extends ServiceImpl implements ICostContractPayService { + + @Autowired + private ISystemUserService systemUserService; + + @Override + public IPage pageList(Page page, Wrapper wrapper) { + Page pageList = this.page(page, wrapper); + List systemUserList = systemUserService.list(); + for (CostContractPay record : pageList.getRecords()) { + List users = systemUserList.stream().filter(s -> s.getUserId().toString().equals(record.getSqr())).collect(Collectors.toList()); + record.setSqrName(users.size() > 0 ? users.get(0).getRealName() : ""); + } + return pageList; + } +} diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java index 153cd9583..a212911c6 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java @@ -9,10 +9,7 @@ import com.zhgd.xmgl.modules.cost.dto.DynamicCostDto; import com.zhgd.xmgl.modules.cost.entity.*; import com.zhgd.xmgl.modules.cost.mapper.CostContractPayPlanMapper; import com.zhgd.xmgl.modules.cost.mapper.CostContractPlanMapper; -import com.zhgd.xmgl.modules.cost.service.ICostContractPayPlanService; -import com.zhgd.xmgl.modules.cost.service.ICostContractPlanService; -import com.zhgd.xmgl.modules.cost.service.ICostContractService; -import com.zhgd.xmgl.modules.cost.service.ICostSubjectService; +import com.zhgd.xmgl.modules.cost.service.*; import com.zhgd.xmgl.modules.cost.vo.CostContractPlanVo; import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo; import com.zhgd.xmgl.security.util.SecurityUtils; @@ -42,6 +39,9 @@ public class CostContractPlanServiceImpl extends ServiceImpl tree(QueryWrapper wrapper, ProjectInfoExtVo projectInfoBySn) { List allSubList = costSubjectService.list(wrapper); - List allPlanList = convert(allSubList); List parentSubList = allSubList.stream().filter(l -> l.getParentId().toString().equals("0") && StringUtils.isNotBlank(l.getName())).collect(Collectors.toList()); - List parentPlanList = convert(parentSubList); - if (allPlanList.size() > 0) { - List planList = this.list(Wrappers.lambdaQuery() + List resultList = new ArrayList<>(); + if (allSubList.size() > 0) { + List budgetList = costBudgetService.list(Wrappers.lambdaQuery() + .eq(CostBudget::getProjectSn, projectInfoBySn.getProjectSn())); + List contractList = costContractService.list(Wrappers.lambdaQuery() + .eq(CostContract::getProjectSn, projectInfoBySn.getProjectSn())); + List contractPlanList = this.list(Wrappers.lambdaQuery() .eq(CostContractPlan::getProjectSn, projectInfoBySn.getProjectSn())); - List planDtoList = convert1(planList); - getChildren(parentPlanList, allPlanList, planDtoList); + resultList = getChildren(parentSubList, allSubList, budgetList, contractList, contractPlanList, 0L); } - return parentPlanList; + return resultList; } @Override @@ -69,11 +71,11 @@ public class CostContractPlanServiceImpl extends ServiceImpl parentSubList = allSubList.stream().filter(l -> l.getParentId().toString().equals("0") && StringUtils.isNotBlank(l.getName())).collect(Collectors.toList()); List resultList = new ArrayList<>(); if (allSubList.size() > 0) { - List contractPlanList = this.list(Wrappers.lambdaQuery() - .eq(CostContractPlan::getProjectSn, projectInfoBySn.getProjectSn())); + List costBudgetList = costBudgetService.list(Wrappers.lambdaQuery() + .eq(CostBudget::getProjectSn, projectInfoBySn.getProjectSn())); List contractList = costContractService.list(Wrappers.lambdaQuery() .eq(CostContract::getProjectSn, projectInfoBySn.getProjectSn())); - resultList = getDynamicChildren(parentSubList, allSubList, contractPlanList, contractList); + resultList = getDynamicChildren(parentSubList, allSubList, costBudgetList, contractList); } return resultList; } @@ -83,9 +85,9 @@ public class CostContractPlanServiceImpl extends ServiceImpl costContractPayPlanList = costContractPlanVo.getCostContractPayPlanList(); costContractPlanVo.setCreateBy(SecurityUtils.getUser().getRealName()); costContractPlanVo.setCreateTime(new Date()); - BigDecimal b1 = new BigDecimal(costContractPlanVo.getContractAmount()).add(new BigDecimal(costContractPlanVo.getUnderApproval())) - .add(new BigDecimal(costContractPlanVo.getEstimatedChange())).add(new BigDecimal(costContractPlanVo.getToOccur())); - costContractPlanVo.setAllowance(new BigDecimal(costContractPlanVo.getGoal()).subtract(b1).toString()); +// BigDecimal b1 = new BigDecimal(costContractPlanVo.getContractAmount()).add(new BigDecimal(costContractPlanVo.getUnderApproval())) +// .add(new BigDecimal(costContractPlanVo.getEstimatedChange())).add(new BigDecimal(costContractPlanVo.getToOccur())); +// costContractPlanVo.setAllowance(new BigDecimal(costContractPlanVo.getGoal()).subtract(b1).toString()); boolean flag = this.save(costContractPlanVo); if (flag) { for (CostContractPayPlan costContractPayPlan : costContractPayPlanList) { @@ -106,9 +108,9 @@ public class CostContractPlanServiceImpl extends ServiceImpl list, List allList, List planList) { - for (CostContractPlanDto costContractPlan : list) { - costContractPlan.setType(0); - List childrenList = allList.stream().filter(a -> a.getSubjectId().toString().equals(costContractPlan.getId().toString())).collect(Collectors.toList()); - //计算总额 - List subIds = allList.stream().filter(a -> a.getAncestors().contains(costContractPlan.getId().toString())) - .map(c -> c.getId().toString()).collect(Collectors.toList()); - subIds.add(costContractPlan.getId().toString()); - List filterList = planList.stream().filter(p -> subIds.contains(p.getSubjectId().toString())).collect(Collectors.toList()); - costContractPlan.setGoal(filterList.stream().map(s -> new BigDecimal(s.getGoal())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); - costContractPlan.setContractAmount(filterList.stream().map(s -> new BigDecimal(s.getContractAmount())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); - costContractPlan.setUnderApproval(filterList.stream().map(s -> new BigDecimal(s.getUnderApproval())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); - costContractPlan.setToOccur(filterList.stream().map(s -> new BigDecimal(s.getToOccur())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); - costContractPlan.setEstimatedChange(filterList.stream().map(s -> new BigDecimal(s.getEstimatedChange())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); - costContractPlan.setAllowance(filterList.stream().map(s -> new BigDecimal(s.getAllowance())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); - if (childrenList.size() > 0) { - costContractPlan.setLastLevel(false); - getChildren(childrenList, allList, planList); - } else { - costContractPlan.setLastLevel(true); - childrenList = planList.stream().filter(p -> p.getSubjectId().toString().equals(costContractPlan.getId().toString())).collect(Collectors.toList()); +// private void getChildren(List list, List allList, List planList, List budgetList) { +// for (CostContractPlanDto costContractPlan : list) { +// costContractPlan.setType(0); +// List childrenList = allList.stream().filter(a -> a.getSubjectId().toString().equals(costContractPlan.getId().toString())).collect(Collectors.toList()); +// //计算总额 +// List subIds = allList.stream().filter(a -> a.getAncestors().contains(costContractPlan.getId().toString())) +// .map(c -> c.getId().toString()).collect(Collectors.toList()); +// subIds.add(costContractPlan.getId().toString()); +// costContractPlan.setGoal(filterList.stream().map(s -> new BigDecimal(s.getGoal())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); +// costContractPlan.setContractAmount(filterList.stream().map(s -> new BigDecimal(s.getContractAmount())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); +// costContractPlan.setUnderApproval(filterList.stream().map(s -> new BigDecimal(s.getUnderApproval())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); +// costContractPlan.setToOccur(filterList.stream().map(s -> new BigDecimal(s.getToOccur())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); +// costContractPlan.setEstimatedChange(filterList.stream().map(s -> new BigDecimal(s.getEstimatedChange())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); +// costContractPlan.setAllowance(filterList.stream().map(s -> new BigDecimal(s.getAllowance())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); +// if (childrenList.size() > 0) { +// costContractPlan.setLastLevel(false); +// getChildren(childrenList, allList, planList, budgetList); +// } else { +// costContractPlan.setLastLevel(true); +// childrenList = planList.stream().filter(p -> p.getSubjectId().toString().equals(costContractPlan.getId().toString())).collect(Collectors.toList()); +// } +// costContractPlan.setChildren(childrenList); +// } +// } + private List getChildren(List list, List allList, List costBudgetList, List contractList, List contractPlanList, Long subjectId) { + List costContractPlanDtoList = new ArrayList<>(); + if (list.size() > 0) { + for (CostSubject costSubject : list) { + List children = allList.stream().filter(a -> a.getParentId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); + CostContractPlanDto costContractPlanDto = new CostContractPlanDto(); + costContractPlanDto.setId(costSubject.getId()); + costContractPlanDto.setSubjectId(costSubject.getParentId()); + costContractPlanDto.setContractName(costSubject.getName()); + // 查询合约 + List contracts = contractList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); + costContractPlanDto.setGoal(costBudgetList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())) + .map(c -> new BigDecimal(c.getBudgetCost())).reduce(BigDecimal.ZERO, BigDecimal::add)); + costContractPlanDto.setUnderApproval(contracts.stream().map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); + BigDecimal subtract = costContractPlanDto.getGoal().subtract(costContractPlanDto.getUnderApproval()); + costContractPlanDto.setAllowance(subtract); + costContractPlanDto.setType(0); + costContractPlanDto.setLastLevel(children.size() > 0 ? false : true); + costContractPlanDto.setChildren(getChildren(children, allList, costBudgetList, contractList, contractPlanList, costSubject.getId())); + costContractPlanDtoList.add(costContractPlanDto); + } + } else { + List contractPlans = contractPlanList.stream().filter(p -> p.getSubjectId().toString().equals(subjectId.toString())).collect(Collectors.toList()); + for (CostContractPlan contractPlan : contractPlans) { + CostContractPlanDto costContractPlanDto = new CostContractPlanDto(); + BeanUtils.copyProperties(contractPlan, costContractPlanDto); + costContractPlanDto.setType(1); + costContractPlanDtoList.add(costContractPlanDto); } - costContractPlan.setChildren(childrenList); } + return costContractPlanDtoList; } - private List getDynamicChildren(List list, List allList, List contractPlanList, List contractList) { + private List getDynamicChildren(List list, List allList, List costBudgetList, List contractList) { List dynamicCostDtoList = new ArrayList<>(); for (CostSubject costSubject : list) { DynamicCostDto dynamicCostDto = new DynamicCostDto(); dynamicCostDto.setSubjectId(costSubject.getId()); dynamicCostDto.setSubjectName(costSubject.getName()); // 查询合约 - List children = allList.stream().filter(a -> Arrays.asList(a.getAncestors().split(",")).contains(costSubject.getId().toString())).collect(Collectors.toList()); - List childrenSubIds = children.stream().map(c -> c.getId().toString()).collect(Collectors.toList()); - List contractPlans = new ArrayList<>(); - List contracts = new ArrayList<>(); - if (childrenSubIds.size() > 0) { - contractPlans = contractPlanList.stream().filter(c -> childrenSubIds.contains(c.getSubjectId().toString())).collect(Collectors.toList()); - contracts = contractList.stream().filter(c -> childrenSubIds.contains(c.getSubjectId().toString())).collect(Collectors.toList()); - } else { - contractPlans = contractPlanList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); - contracts = contractList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); - } - dynamicCostDto.setGoal(contractPlans.stream().map(c -> new BigDecimal(c.getGoal())).reduce(BigDecimal.ZERO, BigDecimal::add)); + List children = allList.stream().filter(a -> a.getParentId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); +// List allChildren = allList.stream().filter(a -> Arrays.asList(a.getAncestors().split(",")).contains(costSubject.getId().toString())).collect(Collectors.toList()); + List contracts = contractList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); + dynamicCostDto.setGoal(costBudgetList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())) + .map(c -> new BigDecimal(c.getBudgetCost())).reduce(BigDecimal.ZERO, BigDecimal::add)); dynamicCostDto.setContractAmount(contracts.stream().filter(c -> c.getZt().equals("已生效")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); dynamicCostDto.setUnderApproval(contracts.stream().filter(c -> c.getZt().equals("内审中")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); dynamicCostDto.setDynamicCost(dynamicCostDto.getContractAmount().add(dynamicCostDto.getUnderApproval()).add(dynamicCostDto.getToOccur()).add(dynamicCostDto.getContractAmount())); BigDecimal subtract = dynamicCostDto.getGoal().subtract(dynamicCostDto.getDynamicCost()); dynamicCostDto.setCostDifference(dynamicCostDto.getGoal().compareTo(new BigDecimal(0)) > 0 ? subtract.divide(dynamicCostDto.getGoal(), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).toString() : "0"); dynamicCostDto.setAllowance(subtract); - dynamicCostDto.setChildren(getDynamicChildren(children, allList, contractPlanList, contractList)); + dynamicCostDto.setChildren(getDynamicChildren(children, allList, costBudgetList, contractList)); dynamicCostDtoList.add(dynamicCostDto); } return dynamicCostDtoList; diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostPayPlanServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostPayPlanServiceImpl.java index 6061a5fbc..bf4fdd045 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostPayPlanServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostPayPlanServiceImpl.java @@ -1,11 +1,17 @@ package com.zhgd.xmgl.modules.cost.service.impl; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; import com.zhgd.xmgl.modules.cost.dto.ContractPayOverviewDto; +import com.zhgd.xmgl.modules.cost.entity.CostContractPay; import com.zhgd.xmgl.modules.cost.entity.CostPayPlan; import com.zhgd.xmgl.modules.cost.entity.CostQuantity; import com.zhgd.xmgl.modules.cost.mapper.CostPayPlanMapper; import com.zhgd.xmgl.modules.cost.mapper.CostQuantityMapper; +import com.zhgd.xmgl.modules.cost.service.ICostContractPayService; import com.zhgd.xmgl.modules.cost.service.ICostPayPlanService; import com.zhgd.xmgl.modules.cost.service.ICostQuantityService; import com.zhgd.xmgl.modules.project.entity.Project; @@ -18,6 +24,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @Description: 资金计划 @@ -34,6 +41,23 @@ public class CostPayPlanServiceImpl extends ServiceImpl pageList(Page page, Wrapper wrapper) { + Page pageList = this.page(page, wrapper); + List systemUserList = systemUserService.list(); + for (CostPayPlan record : pageList.getRecords()) { + List users = systemUserList.stream().filter(s -> s.getUserId().toString().equals(record.getApplyBy())).collect(Collectors.toList()); + record.setApplyByName(users.size() > 0 ? users.get(0).getRealName() : ""); + } + return pageList; + } + @Override public CostPayPlan queryById(String id) { List list = costQuantityService.list(Wrappers.lambdaQuery().eq(CostQuantity::getPayPlanId, id)); @@ -46,13 +70,15 @@ public class CostPayPlanServiceImpl extends ServiceImpl payOverview(String projectSn) { List overviewDtos = new ArrayList<>(); List projects = projectService.list(); + List costContractPayList = costContractPayService.list(); List list = this.list(); for (Project project : projects) { ContractPayOverviewDto contractPayOverviewDto = new ContractPayOverviewDto(); contractPayOverviewDto.setProjectId(project.getProjectId()); contractPayOverviewDto.setProjectName(project.getProjectName()); contractPayOverviewDto.setPlanPayAmount(list.stream().map(l -> new BigDecimal(l.getPayAmount())).reduce(BigDecimal.ZERO, BigDecimal::add)); - contractPayOverviewDto.setPayAmount(new BigDecimal(0)); + contractPayOverviewDto.setPayAmount(costContractPayList.stream().filter(c -> c.getSxm().equals(project.getProjectId().toString())) + .map(c -> new BigDecimal(c.getBczfje())).reduce(BigDecimal.ZERO, BigDecimal::add)); contractPayOverviewDto.setCostDifference(contractPayOverviewDto.getPlanPayAmount().subtract(contractPayOverviewDto.getPayAmount())); if (contractPayOverviewDto.getPlanPayAmount().compareTo(new BigDecimal(0)) != 0) { contractPayOverviewDto.setCostDifferenceRatio(contractPayOverviewDto.getCostDifference().divide(contractPayOverviewDto.getPlanPayAmount(), 2, BigDecimal.ROUND_HALF_UP) diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java index 69358d2c9..1fb0edb92 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java @@ -199,8 +199,11 @@ public class ProjectServiceImpl extends ServiceImpl impl } wrapper.eq(Company::getCompanyType, 3); List list = companyService.list(wrapper); - List proList = this.list(Wrappers.lambdaQuery() - .eq(Project::getNature, companyProjectDto.getNature())); + LambdaQueryWrapper wrapper1 = Wrappers.lambdaQuery(); + if(companyProjectDto.getNature() != null) { + wrapper1.eq(Project::getNature, companyProjectDto.getNature()); + } + List proList = this.list(wrapper1); List dtoList = new ArrayList<>(); for (Company company : list) { CompanyProjectDto first = new CompanyProjectDto();