From a48d69b0aee3d8c39c843f1b313fb6a1615bc865 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Wed, 13 Apr 2022 10:30:10 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E7=BC=96=E5=86=99pc=E7=AB=AF=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E4=B8=AD=E6=A0=B9=E6=8D=AE=E6=B5=81=E7=A8=8B=E5=AE=9A?= =?UTF-8?q?=E4=B9=89iD=E5=92=8C=E8=8A=82=E7=82=B9id=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/sysprourl/SysProUrlFeign.java | 30 +++++-- .../api/sysprourl/SysProUrlFeignFallBack.java | 5 ++ .../biz/sysprourl/SysProUrlController.java | 23 +++-- .../biz/sysprourl/SysProUrlMapper.java | 10 +++ .../biz/sysprourl/SysProUrlMapper.xml | 90 ++++++++++++++----- .../biz/sysprourl/SysProUrlService.java | 58 ++++++++---- 6 files changed, 165 insertions(+), 51 deletions(-) diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java index de59be8b7d..00187b5a63 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeign.java @@ -4,6 +4,7 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -20,28 +21,29 @@ public interface SysProUrlFeign { */ @PostMapping("/list") @ResponseBody - public ResultBean> list(@RequestBody PagerQuery pq) ; + public ResultBean> list(@RequestBody PagerQuery pq); + - /** * 获取流程业务表单url对象 */ @GetMapping(value = "/getSysProUrl/{formId}") @ResponseBody - public ResultBean getSysProUrl(@PathVariable("formId") int formId); + public ResultBean getSysProUrl(@PathVariable("formId") int formId); + /** * 根据流程实例id获取form信息 */ @GetMapping(value = "/getForm/{proId}") @ResponseBody - public ResultBean getForm(@PathVariable("proId") String proId); + public ResultBean getForm(@PathVariable("proId") String proId); /** * 新增流程业务表单url对象 */ - @PostMapping(value="/add") + @PostMapping(value = "/add") @ResponseBody - public ResultBean add(@RequestBody SysProUrl sysProUrl) ; + public ResultBean add(@RequestBody SysProUrl sysProUrl); /** * 修改流程业务表单url对象 @@ -62,4 +64,20 @@ public interface SysProUrlFeign { @ApiOperation("app根据流程定义id,节点id,终端及类型查询流程与业务表单url") @PostMapping("/selectAppUrlByTaskDefKey") ResultBean selectAppUrlByTaskDefKey(@Valid @RequestBody AppSysProUrlQuery query); + + + /** + * pc根据流程定义id,节点id,终端及类型查询流程与业务表单url + * + * @param procDefId 流程定义id + * @param taskDefKey 节点id + * @param type 类型:1办理,2详情 + * @return + */ + @ApiOperation("查询流程与业务表单的url") + @GetMapping("/selectUrlByKey") + ResultBean selectUrlByKey(@ApiParam(value = "流程定义id") @RequestParam(value = "procDefId") String procDefId, + @ApiParam(value = "节点id") @RequestParam(value = "taskDefKey") String taskDefKey, + @ApiParam(value = "类型:1办理,2详情") @RequestParam(value = "type") String type); + } diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java index 76e46169b8..e3e49a5c1a 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/sysprourl/SysProUrlFeignFallBack.java @@ -54,4 +54,9 @@ public class SysProUrlFeignFallBack implements SysProUrlFeign { public ResultBean selectAppUrlByTaskDefKey(AppSysProUrlQuery query) { return null; } + + @Override + public ResultBean selectUrlByKey(String procDefId, String taskDefKey, String type) { + return null; + } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java index 86b3c2f664..5754114293 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlController.java @@ -40,16 +40,16 @@ public class SysProUrlController implements SysProUrlFeign { @Override public ResultBean getSysProUrl(int formId) { - ResultBean< SysProUrl> rb = ResultBean.fireFail(); + ResultBean rb = ResultBean.fireFail(); SysProUrl sysProUrl = sysProUrlService.selectSysProUrlById(formId); - return rb.success().setData(sysProUrl); + return rb.success().setData(sysProUrl); } @Override public ResultBean getForm(String proId) { - ResultBean< SysForm> rb = ResultBean.fireFail(); + ResultBean rb = ResultBean.fireFail(); SysForm sysForm = sysDeployFormService.selectSysDeployFormByDeployId(proId); - return rb.success().setData(sysForm); + return rb.success().setData(sysForm); } /** @@ -73,7 +73,7 @@ public class SysProUrlController implements SysProUrlFeign { @DeleteMapping("/{formIds}") @Override public ResultBean remove(@PathVariable Long[] formIds) { - sysProUrlService.deleteSysProUrlByIds(formIds); + sysProUrlService.deleteSysProUrlByIds(formIds); ResultBean rb = ResultBean.fireFail(); return rb.success().setMsg("操作成功"); } @@ -106,4 +106,17 @@ public class SysProUrlController implements SysProUrlFeign { } return new ResultBean().success().setData(appUrlVo); } + + /** + * pc根据流程定义id,节点id,终端及类型查询流程与业务表单url + * + * @param procDefId 流程定义id + * @param taskDefKey 节点id + * @param type 类型:1办理,2详情 + * @return + */ + @Override + public ResultBean selectUrlByKey(String procDefId, String taskDefKey, String type) { + return sysProUrlService.selectUrlByKey(procDefId, taskDefKey, type); + } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java index 6541eeb645..bea6ceed0a 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.java @@ -79,4 +79,14 @@ public interface SysProUrlMapper extends BaseMapper { List selectListByProcDefId(@Param("proc_def_id") String proc_def_id, @Param("taskDefKey") String taskDefKey); SysProUrlVo selectUniByTaskDefKey(SysProUrlQuery query); + + /** + * pc根据流程定义id,节点id,终端及类型查询流程与业务表单url + * + * @param procDefId 流程id + * @param taskDefKey 节点iD + * @param type 类型:1办理,2详情 + * @return + */ + String selectUrlByKey(@Param("procDefId") String procDefId, @Param("taskDefKey") String taskDefKey, @Param("type") String type); } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml index f9f2872f01..6afab06bd6 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlMapper.xml @@ -2,50 +2,96 @@ - + insert into sys_pro_url - url, - type, - terminal, - formId, - title + + url, + + + type, + + + terminal, + + + formId, + + + title + - #{url}, - #{type}, - #{terminal}, - #{formId}, - #{title}, + + #{url}, + + + #{type}, + + + #{terminal}, + + + #{formId}, + + + #{title}, + - delete from sys_pro_url where sid in + delete + from sys_pro_url where sid in #{sid} - + select id as id, url as url, type as type, terminal as terminal, formId as formId, title as title + from sys_pro_url where formId = #{formId} - + SELECT url, modulePluginName FROM sys_pro_url - WHERE proc_def_id=#{proc_def_id} AND type=#{type} AND terminal=#{terminal} AND taskDefKey=#{taskDefKey} + WHERE proc_def_id = #{proc_def_id} + AND type = #{type} + AND terminal = #{terminal} + AND taskDefKey = #{taskDefKey} + + + \ No newline at end of file diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlService.java index 4a58e738b0..8b408c89ea 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/sysprourl/SysProUrlService.java @@ -20,7 +20,7 @@ import java.util.List; /** * 流程表单Service业务层处理 - * + * * @author XuanXuan Xuan * @date 2021-04-03 */ @@ -33,18 +33,17 @@ public class SysProUrlService extends MybatisBaseService selectSysProUrlList(PagerQuery pagerQuery) { List SysProUrls = baseMapper.selectListVo(); - IPage page =new Page<>();// PagerUtil.queryToPage(pagerQuery); + IPage page = new Page<>();// PagerUtil.queryToPage(pagerQuery); QueryWrapper qw = createQueryWrapper(pagerQuery.getParams()); List SysProUrlVoList = baseMapper.getSysProUrlVoList(page, qw); int total = baseMapper.getSysProUrlVoTotal(page, qw); @@ -55,46 +54,42 @@ public class SysProUrlService extends MybatisBaseService selectUrlByKey(String procDefId, String taskDefKey, String type) { + ResultBean rb = ResultBean.fireFail(); + //验证参数 + if (StringUtils.isBlank(procDefId)) { + return rb.setMsg("流程定义id不能为空"); + } + if (StringUtils.isBlank(taskDefKey)) { + return rb.setMsg("节点id不能为空"); + } + if (StringUtils.isBlank(type)) { + return rb.setMsg("请指定要操作的类型"); + } + String url = baseMapper.selectUrlByKey(procDefId, taskDefKey, type); + return null; + } } From 4d26a991f737a49ec432e1dba21c55099d35a4dd Mon Sep 17 00:00:00 2001 From: God <10745413@qq.com> Date: Wed, 13 Apr 2022 10:52:37 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E6=AC=BE=E9=A1=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusCollectionConfirmation.java | 81 +++++ .../BusCollectionConfirmationDetailsVo.java | 87 ++++++ .../BusCollectionConfirmationDto.java | 83 +++++ .../BusCollectionConfirmationFeign.java | 74 +++++ ...usCollectionConfirmationFeignFallback.java | 72 +++++ .../BusCollectionConfirmationQuery.java | 60 ++++ .../BusCollectionConfirmationVo.java | 68 ++++ .../api/buscustomerbill/BusCustomerBill.java | 294 ++++++++++++++++++ .../buscustomerbill/BusCustomerBillDto.java | 99 ++++++ .../buscustomerbill/BusCustomerBillFeign.java | 94 ++++++ .../BusCustomerBillFeignFallback.java | 100 ++++++ .../buscustomerbill/BusCustomerBillQuery.java | 96 ++++++ .../buscustomerbill/BusCustomerBillVo.java | 97 ++++++ .../BusCustomerBillDetailed.java | 278 +++++++++++++++++ .../BusCustomerBillDetailedDto.java | 94 ++++++ .../BusCustomerBillDetailedFeign.java | 94 ++++++ .../BusCustomerBillDetailedFeignFallback.java | 100 ++++++ .../BusCustomerBillDetailedQuery.java | 94 ++++++ .../BusCustomerBillDetailedVo.java | 94 ++++++ .../BusSelectedReceivablesDetailed.java | 262 ++++++++++++++++ .../BusSelectedReceivablesDetailedDto.java | 78 +++++ .../BusSelectedReceivablesDetailedFeign.java | 94 ++++++ ...ectedReceivablesDetailedFeignFallback.java | 100 ++++++ .../BusSelectedReceivablesDetailedQuery.java | 91 ++++++ .../BusSelectedReceivablesDetailedVo.java | 91 ++++++ .../BusUncollectedReceivablesDetailed.java | 214 +++++++++++++ .../BusUncollectedReceivablesDetailedDto.java | 82 +++++ ...usUncollectedReceivablesDetailedFeign.java | 94 ++++++ ...ectedReceivablesDetailedFeignFallback.java | 100 ++++++ ...usUncollectedReceivablesDetailedQuery.java | 82 +++++ .../BusUncollectedReceivablesDetailedVo.java | 82 +++++ .../BusCollectionConfirmationMapper.java | 65 ++++ .../BusCollectionConfirmationMapper.xml | 13 + .../BusCollectionConfirmationRest.java | 91 ++++++ .../BusCollectionConfirmationService.java | 134 ++++++++ .../BusCustomerBillMapper.java | 65 ++++ .../buscustomerbill/BusCustomerBillMapper.xml | 13 + .../buscustomerbill/BusCustomerBillRest.java | 144 +++++++++ .../BusCustomerBillService.java | 172 ++++++++++ .../BusCustomerBillDetailedMapper.java | 65 ++++ .../BusCustomerBillDetailedMapper.xml | 13 + .../BusCustomerBillDetailedRest.java | 144 +++++++++ .../BusCustomerBillDetailedService.java | 168 ++++++++++ .../BusSelectedReceivablesDetailedMapper.java | 65 ++++ .../BusSelectedReceivablesDetailedMapper.xml | 13 + .../BusSelectedReceivablesDetailedRest.java | 144 +++++++++ ...BusSelectedReceivablesDetailedService.java | 164 ++++++++++ ...sUncollectedReceivablesDetailedMapper.java | 65 ++++ ...usUncollectedReceivablesDetailedMapper.xml | 13 + ...BusUncollectedReceivablesDetailedRest.java | 144 +++++++++ ...UncollectedReceivablesDetailedService.java | 152 +++++++++ 51 files changed, 5276 insertions(+) create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmation.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationQuery.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBill.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillDto.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeign.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeignFallback.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillQuery.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillVo.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailed.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedDto.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeign.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeignFallback.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedQuery.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedVo.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailed.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedDto.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeign.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeignFallback.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedQuery.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedVo.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailed.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedDto.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeign.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeignFallback.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedQuery.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedVo.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.xml create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillRest.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillService.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.xml create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedRest.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedService.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.xml create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedRest.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.xml create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedRest.java create mode 100644 anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedService.java diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmation.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmation.java new file mode 100644 index 0000000000..bb8387434f --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmation.java @@ -0,0 +1,81 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmation.java
+ * Class: com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmation
+ * Description: 收款确认表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "收款确认表", description = "收款确认表") +@Data +@TableName("bus_collection_confirmation") +public class BusCollectionConfirmation extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + @ApiModelProperty("收款日期") + private String collectionDate; // 收款日期 + @ApiModelProperty("收款银行") + private String collectionBank; // 收款银行 + @ApiModelProperty("收款银行账号") + private String collectionBankNum; // 收款银行账号 + @ApiModelProperty("收款方式key") + private String collectionTypeKey; // 收款方式key + @ApiModelProperty("收款方式value") + private String collectionTypeValue; // 收款方式value + @ApiModelProperty("付款方名称") + private String payerName; // 付款方名称 + @ApiModelProperty("收款金额") + private BigDecimal collectionMoney; // 收款金额 + @ApiModelProperty("打款凭证Url") + private String paymentVoucherUrl; // 打款凭证Url + @ApiModelProperty("汇款确认书Url") + private String remittanceConfirmationUrl; // 汇款确认书Url + @ApiModelProperty("余额") + private BigDecimal balance; // 余额 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("认款状态") + private Integer subscriptionState; // 认款状态 +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java new file mode 100644 index 0000000000..b38c8ec731 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java @@ -0,0 +1,87 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationVo.java
+ * Class: com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmationVo
+ * Description: 收款确认表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "收款确认表 视图数据对象", description = "收款确认表 视图数据对象") +@Data +public class BusCollectionConfirmationDetailsVo implements Vo { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("收款日期") + private String collectionDate; // 收款日期 + + @ApiModelProperty("收款银行") + private String collectionBank; // 收款银行 + + @ApiModelProperty("收款银行账号") + private String collectionBankNum; // 收款银行账号 + + @ApiModelProperty("收款方式key") + private String collectionTypeKey; // 收款方式key + + @ApiModelProperty("收款方式value") + private String collectionTypeValue; // 收款方式value + + @ApiModelProperty("付款方名称") + private String payerName; // 付款方名称 + + @ApiModelProperty("收款金额") + private String collectionMoney; // 收款金额 + + @ApiModelProperty("打款凭证Url") + private String paymentVoucherUrl; // 打款凭证Url + + @ApiModelProperty("汇款确认书Url") + private String remittanceConfirmationUrl; // 汇款确认书Url + + @ApiModelProperty("余额") + private String balance; // 余额 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java new file mode 100644 index 0000000000..e61590b140 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java @@ -0,0 +1,83 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + + +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedDto; +import com.yxt.common.core.dto.Dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationDto.java
+ * Class: com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmationDto
+ * Description: 收款确认表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "收款确认表 数据传输对象", description = "收款确认表 数据传输对象") +@Data +public class BusCollectionConfirmationDto implements Dto { + + @ApiModelProperty("收款确认单sid") + private String sid; // 收款确认单sid + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + @ApiModelProperty("收款日期") + private String collectionDate; // 收款日期 + @ApiModelProperty("收款银行") + private String collectionBank; // 收款银行 + @ApiModelProperty("收款银行账号") + private String collectionBankNum; // 收款银行账号 + @ApiModelProperty("收款方式key") + private String collectionTypeKey; // 收款方式key + @ApiModelProperty("收款方式value") + private String collectionTypeValue; // 收款方式value + @ApiModelProperty("付款方名称") + private String payerName; // 付款方名称 + @ApiModelProperty("收款金额") + private String collectionMoney; // 收款金额 + @ApiModelProperty("打款凭证Url") + private String paymentVoucherUrl; // 打款凭证Url + @ApiModelProperty("汇款确认书Url") + private String remittanceConfirmationUrl; // 汇款确认书Url + @ApiModelProperty("余额") + private String balance; // 余额 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("已选应收款项明细") + private List busSelectedReceivablesDetailedDtos; // 已选应收款项明细 +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java new file mode 100644 index 0000000000..9d01cd5530 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java @@ -0,0 +1,74 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationFeign.java
+ * Class: com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmationFeign
+ * Description: 收款确认表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "收款确认表") +@FeignClient( + contextId = "anrui-buscenter-BusCollectionConfirmation", + name = "anrui-buscenter", + path = "buscollectionconfirmation", + fallback = BusCollectionConfirmationFeignFallback.class) +public interface BusCollectionConfirmationFeign { + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("新增或修改保存") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody BusCollectionConfirmationDto dto); + + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids); + + @ApiOperation("编辑回显或详情") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java new file mode 100644 index 0000000000..d381a4ac47 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java @@ -0,0 +1,72 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmationFeignFallback
+ * Description: 收款确认表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Component +public class BusCollectionConfirmationFeignFallback implements BusCollectionConfirmationFeign { + + @Override + public ResultBean> listPage(PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscollectionconfirmation/listPage无法访问"); + } + + @Override + public ResultBean saveOrUpdate(BusCollectionConfirmationDto dto){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscollectionconfirmation/saveOrUpdate无法访问"); + } + + @Override + public ResultBean delBySids( String[] sids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscollectionconfirmation/delBySids无法访问"); + } + + @Override + public ResultBean fetchBySid(String sid){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscollectionconfirmation/fetchBySid无法访问"); + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationQuery.java new file mode 100644 index 0000000000..200928c2fc --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationQuery.java @@ -0,0 +1,60 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationQuery.java
+ * Class: com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmationQuery
+ * Description: 收款确认表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "收款确认表 查询条件", description = "收款确认表 查询条件") +@Data +public class BusCollectionConfirmationQuery implements Query { + + @ApiModelProperty("收款日期") + private String collectionDate; // 收款日期 + @ApiModelProperty("收款银行") + private String collectionBank; // 收款银行 + @ApiModelProperty("收款方式key") + private String collectionTypeKey; // 收款方式key + @ApiModelProperty("认款状态") + private String subscriptionState; // 认款状态 +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java new file mode 100644 index 0000000000..5f4b4a41f9 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java @@ -0,0 +1,68 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationVo.java
+ * Class: com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmationVo
+ * Description: 收款确认表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "收款确认表 视图数据对象", description = "收款确认表 视图数据对象") +@Data +public class BusCollectionConfirmationVo implements Vo { + + @ApiModelProperty("收款日期") + private String collectionDate; // 收款日期 + @ApiModelProperty("收款银行") + private String collectionBank; // 收款银行 + @ApiModelProperty("收款银行账号") + private String collectionBankNum; // 收款银行账号 + @ApiModelProperty("收款方式value") + private String collectionTypeValue; // 收款方式value + @ApiModelProperty("付款方名称") + private String payerName; // 付款方名称 + @ApiModelProperty("收款金额") + private String collectionMoney; // 收款金额 + @ApiModelProperty("备注") + private String remarks; // 备注 + @ApiModelProperty("认款状态") + private String subscriptionState; // 认款状态 +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBill.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBill.java new file mode 100644 index 0000000000..0fe51f3d5d --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBill.java @@ -0,0 +1,294 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbill; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.math.BigDecimal; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBill.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBill
+ * Description: 客户账单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单表", description = "客户账单表") +@TableName("bus_customer_bill") +public class BusCustomerBill extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private BigDecimal receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private BigDecimal netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private BigDecimal uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("最新处理时间") + private String latestProcessingDate; // 最新处理时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + /** + * @return 创建人接口 + */ + public String getCreateByName(){ + return createByName; + } + + /** + * @param createByName 创建人接口 to set + */ + public void setCreateByName(String createByName){ + this.createByName = createByName; + } + /** + * @return 合同sid + */ + public String getContractSid(){ + return contractSid; + } + + /** + * @param contractSid 合同sid to set + */ + public void setContractSid(String contractSid){ + this.contractSid = contractSid; + } + /** + * @return 合同编号 + */ + public String getContractNo(){ + return contractNo; + } + + /** + * @param contractNo 合同编号 to set + */ + public void setContractNo(String contractNo){ + this.contractNo = contractNo; + } + /** + * @return 客户sid + */ + public String getCustomerSid(){ + return customerSid; + } + + /** + * @param customerSid 客户sid to set + */ + public void setCustomerSid(String customerSid){ + this.customerSid = customerSid; + } + /** + * @return 客户名称 + */ + public String getCustomerName(){ + return customerName; + } + + /** + * @param customerName 客户名称 to set + */ + public void setCustomerName(String customerName){ + this.customerName = customerName; + } + /** + * @return 款项类型key + */ + public String getPaymentTypeKey(){ + return paymentTypeKey; + } + + /** + * @param paymentTypeKey 款项类型key to set + */ + public void setPaymentTypeKey(String paymentTypeKey){ + this.paymentTypeKey = paymentTypeKey; + } + /** + * @return 款项类型value + */ + public String getPaymentTypeValue(){ + return paymentTypeValue; + } + + /** + * @param paymentTypeValue 款项类型value to set + */ + public void setPaymentTypeValue(String paymentTypeValue){ + this.paymentTypeValue = paymentTypeValue; + } + /** + * @return 款项名称 + */ + public String getPaymentName(){ + return paymentName; + } + + /** + * @param paymentName 款项名称 to set + */ + public void setPaymentName(String paymentName){ + this.paymentName = paymentName; + } + /** + * @return 款项状态 + */ + public Integer getPaymentState(){ + return paymentState; + } + + /** + * @param paymentState 款项状态 to set + */ + public void setPaymentState(Integer paymentState){ + this.paymentState = paymentState; + } + /** + * @return 应收金额 + */ + public BigDecimal getReceivableMoney(){ + return receivableMoney; + } + + /** + * @param receivableMoney 应收金额 to set + */ + public void setReceivableMoney(BigDecimal receivableMoney){ + this.receivableMoney = receivableMoney; + } + /** + * @return 实收金额 + */ + public BigDecimal getNetReceiptsMoney(){ + return netReceiptsMoney; + } + + /** + * @param netReceiptsMoney 实收金额 to set + */ + public void setNetReceiptsMoney(BigDecimal netReceiptsMoney){ + this.netReceiptsMoney = netReceiptsMoney; + } + /** + * @return 未收金额 + */ + public BigDecimal getUncollectedMoney(){ + return uncollectedMoney; + } + + /** + * @param uncollectedMoney 未收金额 to set + */ + public void setUncollectedMoney(BigDecimal uncollectedMoney){ + this.uncollectedMoney = uncollectedMoney; + } + /** + * @return 生成时间 + */ + public String getGenerateDate(){ + return generateDate; + } + + /** + * @param generateDate 生成时间 to set + */ + public void setGenerateDate(String generateDate){ + this.generateDate = generateDate; + } + /** + * @return 最新处理时间 + */ + public String getLatestProcessingDate(){ + return latestProcessingDate; + } + + /** + * @param latestProcessingDate 最新处理时间 to set + */ + public void setLatestProcessingDate(String latestProcessingDate){ + this.latestProcessingDate = latestProcessingDate; + } + /** + * @return 分公司sid + */ + public String getUseOrgSid(){ + return useOrgSid; + } + + /** + * @param useOrgSid 分公司sid to set + */ + public void setUseOrgSid(String useOrgSid){ + this.useOrgSid = useOrgSid; + } +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillDto.java new file mode 100644 index 0000000000..603cfc7012 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillDto.java @@ -0,0 +1,99 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbill; + + +import com.yxt.common.core.dto.Dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDto.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillDto
+ * Description: 客户账单表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单表 数据传输对象", description = "客户账单表 数据传输对象") +@Data +public class BusCustomerBillDto implements Dto { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private String receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private String netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private String uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("最新处理时间") + private String latestProcessingDate; // 最新处理时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeign.java new file mode 100644 index 0000000000..4e7ee10c77 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeign.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbill; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillFeign.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillFeign
+ * Description: 客户账单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "客户账单表") +@FeignClient( + contextId = "anrui-buscenter-BusCustomerBill", + name = "anrui-buscenter", + path = "buscustomerbill", + fallback = BusCustomerBillFeignFallback.class) +public interface BusCustomerBillFeign { + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusCustomerBillQuery query); + + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(); + + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusCustomerBillDto dto); + + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusCustomerBillDto dto, @PathVariable("sid") String sid); + + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids); + + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids); + + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id); + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeignFallback.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeignFallback.java new file mode 100644 index 0000000000..f38a441bf8 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillFeignFallback.java @@ -0,0 +1,100 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbill; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillFeignFallback
+ * Description: 客户账单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Component +public class BusCustomerBillFeignFallback implements BusCustomerBillFeign { + + @Override + public ResultBean> listPage(PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbill/listPage无法访问"); + } + + @Override + public ResultBean> listAll(BusCustomerBillQuery query){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbill/listAll无法访问"); + } + + @Override + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbill/list无法访问"); + } + + @Override + public ResultBean save(BusCustomerBillDto dto){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbill/save无法访问"); + } + + @Override + public ResultBean update(BusCustomerBillDto dto, String sid){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbill/update无法访问"); + } + + @Override + public ResultBean del(String ids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbill/del无法访问"); + } + + @Override + public ResultBean delBySids( String[] sids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbill/delBySids无法访问"); + } + + @Override + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbill/fetch无法访问"); + } + + @Override + public ResultBean fetchBySid(String sid){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbill/fetchBySid无法访问"); + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillQuery.java new file mode 100644 index 0000000000..92af0ebdfb --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillQuery.java @@ -0,0 +1,96 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbill; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillQuery.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillQuery
+ * Description: 客户账单表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单表 查询条件", description = "客户账单表 查询条件") +@Data +public class BusCustomerBillQuery implements Query { + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private String receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private String netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private String uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("最新处理时间") + private String latestProcessingDate; // 最新处理时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillVo.java new file mode 100644 index 0000000000..192f15d154 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbill/BusCustomerBillVo.java @@ -0,0 +1,97 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbill; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillVo.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillVo
+ * Description: 客户账单表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单表 视图数据对象", description = "客户账单表 视图数据对象") +@Data +public class BusCustomerBillVo implements Vo { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private String receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private String netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private String uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("最新处理时间") + private String latestProcessingDate; // 最新处理时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailed.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailed.java new file mode 100644 index 0000000000..4d3d6dd4b7 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailed.java @@ -0,0 +1,278 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbilldetailed; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.math.BigDecimal; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailed.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailed
+ * Description: 客户账单明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单明细表", description = "客户账单明细表") +@TableName("bus_customer_bill_detailed") +public class BusCustomerBillDetailed extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private BigDecimal receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private BigDecimal netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private BigDecimal uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + /** + * @return 创建人接口 + */ + public String getCreateByName(){ + return createByName; + } + + /** + * @param createByName 创建人接口 to set + */ + public void setCreateByName(String createByName){ + this.createByName = createByName; + } + /** + * @return 合同sid + */ + public String getContractSid(){ + return contractSid; + } + + /** + * @param contractSid 合同sid to set + */ + public void setContractSid(String contractSid){ + this.contractSid = contractSid; + } + /** + * @return 合同编号 + */ + public String getContractNo(){ + return contractNo; + } + + /** + * @param contractNo 合同编号 to set + */ + public void setContractNo(String contractNo){ + this.contractNo = contractNo; + } + /** + * @return 客户sid + */ + public String getCustomerSid(){ + return customerSid; + } + + /** + * @param customerSid 客户sid to set + */ + public void setCustomerSid(String customerSid){ + this.customerSid = customerSid; + } + /** + * @return 客户名称 + */ + public String getCustomerName(){ + return customerName; + } + + /** + * @param customerName 客户名称 to set + */ + public void setCustomerName(String customerName){ + this.customerName = customerName; + } + /** + * @return 款项类型key + */ + public String getPaymentTypeKey(){ + return paymentTypeKey; + } + + /** + * @param paymentTypeKey 款项类型key to set + */ + public void setPaymentTypeKey(String paymentTypeKey){ + this.paymentTypeKey = paymentTypeKey; + } + /** + * @return 款项类型value + */ + public String getPaymentTypeValue(){ + return paymentTypeValue; + } + + /** + * @param paymentTypeValue 款项类型value to set + */ + public void setPaymentTypeValue(String paymentTypeValue){ + this.paymentTypeValue = paymentTypeValue; + } + /** + * @return 款项名称 + */ + public String getPaymentName(){ + return paymentName; + } + + /** + * @param paymentName 款项名称 to set + */ + public void setPaymentName(String paymentName){ + this.paymentName = paymentName; + } + /** + * @return 款项状态 + */ + public Integer getPaymentState(){ + return paymentState; + } + + /** + * @param paymentState 款项状态 to set + */ + public void setPaymentState(Integer paymentState){ + this.paymentState = paymentState; + } + /** + * @return 应收金额 + */ + public BigDecimal getReceivableMoney(){ + return receivableMoney; + } + + /** + * @param receivableMoney 应收金额 to set + */ + public void setReceivableMoney(BigDecimal receivableMoney){ + this.receivableMoney = receivableMoney; + } + /** + * @return 实收金额 + */ + public BigDecimal getNetReceiptsMoney(){ + return netReceiptsMoney; + } + + /** + * @param netReceiptsMoney 实收金额 to set + */ + public void setNetReceiptsMoney(BigDecimal netReceiptsMoney){ + this.netReceiptsMoney = netReceiptsMoney; + } + /** + * @return 未收金额 + */ + public BigDecimal getUncollectedMoney(){ + return uncollectedMoney; + } + + /** + * @param uncollectedMoney 未收金额 to set + */ + public void setUncollectedMoney(BigDecimal uncollectedMoney){ + this.uncollectedMoney = uncollectedMoney; + } + /** + * @return 生成时间 + */ + public String getGenerateDate(){ + return generateDate; + } + + /** + * @param generateDate 生成时间 to set + */ + public void setGenerateDate(String generateDate){ + this.generateDate = generateDate; + } + /** + * @return 分公司sid + */ + public String getUseOrgSid(){ + return useOrgSid; + } + + /** + * @param useOrgSid 分公司sid to set + */ + public void setUseOrgSid(String useOrgSid){ + this.useOrgSid = useOrgSid; + } +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedDto.java new file mode 100644 index 0000000000..93712a7403 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedDto.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbilldetailed; + + +import com.yxt.common.core.dto.Dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedDto.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedDto
+ * Description: 客户账单明细表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单明细表 数据传输对象", description = "客户账单明细表 数据传输对象") +@Data +public class BusCustomerBillDetailedDto implements Dto { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private String receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private String netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private String uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeign.java new file mode 100644 index 0000000000..60612e1ea6 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeign.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbilldetailed; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedFeign.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedFeign
+ * Description: 客户账单明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "客户账单明细表") +@FeignClient( + contextId = "anrui-buscenter-BusCustomerBillDetailed", + name = "anrui-buscenter", + path = "buscustomerbilldetailed", + fallback = BusCustomerBillDetailedFeignFallback.class) +public interface BusCustomerBillDetailedFeign { + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusCustomerBillDetailedQuery query); + + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(); + + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusCustomerBillDetailedDto dto); + + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusCustomerBillDetailedDto dto, @PathVariable("sid") String sid); + + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids); + + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids); + + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id); + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeignFallback.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeignFallback.java new file mode 100644 index 0000000000..d7c573bde9 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedFeignFallback.java @@ -0,0 +1,100 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbilldetailed; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedFeignFallback
+ * Description: 客户账单明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Component +public class BusCustomerBillDetailedFeignFallback implements BusCustomerBillDetailedFeign { + + @Override + public ResultBean> listPage(PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbilldetailed/listPage无法访问"); + } + + @Override + public ResultBean> listAll(BusCustomerBillDetailedQuery query){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbilldetailed/listAll无法访问"); + } + + @Override + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbilldetailed/list无法访问"); + } + + @Override + public ResultBean save(BusCustomerBillDetailedDto dto){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbilldetailed/save无法访问"); + } + + @Override + public ResultBean update(BusCustomerBillDetailedDto dto, String sid){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbilldetailed/update无法访问"); + } + + @Override + public ResultBean del(String ids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbilldetailed/del无法访问"); + } + + @Override + public ResultBean delBySids( String[] sids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/buscustomerbilldetailed/delBySids无法访问"); + } + + @Override + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbilldetailed/fetch无法访问"); + } + + @Override + public ResultBean fetchBySid(String sid){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/buscustomerbilldetailed/fetchBySid无法访问"); + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedQuery.java new file mode 100644 index 0000000000..df64a183a0 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedQuery.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbilldetailed; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedQuery.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedQuery
+ * Description: 客户账单明细表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单明细表 查询条件", description = "客户账单明细表 查询条件") +@Data +public class BusCustomerBillDetailedQuery implements Query { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private String receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private String netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private String uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedVo.java new file mode 100644 index 0000000000..24bccc9f3a --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscustomerbilldetailed/BusCustomerBillDetailedVo.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.buscustomerbilldetailed; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedVo.java
+ * Class: com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedVo
+ * Description: 客户账单明细表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "客户账单明细表 视图数据对象", description = "客户账单明细表 视图数据对象") +@Data +public class BusCustomerBillDetailedVo implements Vo { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("款项类型key") + private String paymentTypeKey; // 款项类型key + + @ApiModelProperty("款项类型value") + private String paymentTypeValue; // 款项类型value + + @ApiModelProperty("款项名称") + private String paymentName; // 款项名称 + + @ApiModelProperty("款项状态") + private Integer paymentState; // 款项状态 + + @ApiModelProperty("应收金额") + private String receivableMoney; // 应收金额 + + @ApiModelProperty("实收金额") + private String netReceiptsMoney; // 实收金额 + + @ApiModelProperty("未收金额") + private String uncollectedMoney; // 未收金额 + + @ApiModelProperty("生成时间") + private String generateDate; // 生成时间 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailed.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailed.java new file mode 100644 index 0000000000..b489ed70e1 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailed.java @@ -0,0 +1,262 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.math.BigDecimal; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailed.java
+ * Class: com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailed
+ * Description: 已选应收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "已选应收款项明细表", description = "已选应收款项明细表") +@TableName("bus_selected_receivables_detailed") +public class BusSelectedReceivablesDetailed extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("车架号") + private String VIN; // 车架号 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + + @ApiModelProperty("当前应收金额") + private BigDecimal currentReceivableMoney; // 当前应收金额 + + @ApiModelProperty("认款金额") + private BigDecimal subscriptionMoney; // 认款金额 + + @ApiModelProperty("认款申请日期") + private String subscriptionDate; // 认款申请日期 + + @ApiModelProperty("收款确认单sid") + private String collSid; // 收款确认单sid + + /** + * @return 创建人接口 + */ + public String getCreateByName(){ + return createByName; + } + + /** + * @param createByName 创建人接口 to set + */ + public void setCreateByName(String createByName){ + this.createByName = createByName; + } + /** + * @return 合同sid + */ + public String getContractSid(){ + return contractSid; + } + + /** + * @param contractSid 合同sid to set + */ + public void setContractSid(String contractSid){ + this.contractSid = contractSid; + } + /** + * @return 合同编号 + */ + public String getContractNo(){ + return contractNo; + } + + /** + * @param contractNo 合同编号 to set + */ + public void setContractNo(String contractNo){ + this.contractNo = contractNo; + } + /** + * @return 客户sid + */ + public String getCustomerSid(){ + return customerSid; + } + + /** + * @param customerSid 客户sid to set + */ + public void setCustomerSid(String customerSid){ + this.customerSid = customerSid; + } + /** + * @return 客户名称 + */ + public String getCustomerName(){ + return customerName; + } + + /** + * @param customerName 客户名称 to set + */ + public void setCustomerName(String customerName){ + this.customerName = customerName; + } + /** + * @return 车架号 + */ + public String getVIN(){ + return VIN; + } + + /** + * @param VIN 车架号 to set + */ + public void setVIN(String VIN){ + this.VIN = VIN; + } + /** + * @return 分公司sid + */ + public String getUseOrgSid(){ + return useOrgSid; + } + + /** + * @param useOrgSid 分公司sid to set + */ + public void setUseOrgSid(String useOrgSid){ + this.useOrgSid = useOrgSid; + } + /** + * @return 联系电话 + */ + public String getCustomerPhone(){ + return customerPhone; + } + + /** + * @param customerPhone 联系电话 to set + */ + public void setCustomerPhone(String customerPhone){ + this.customerPhone = customerPhone; + } + /** + * @return 应收项目名称 + */ + public String getReceivablesName(){ + return receivablesName; + } + + /** + * @param receivablesName 应收项目名称 to set + */ + public void setReceivablesName(String receivablesName){ + this.receivablesName = receivablesName; + } + /** + * @return 当前应收金额 + */ + public BigDecimal getCurrentReceivableMoney(){ + return currentReceivableMoney; + } + + /** + * @param currentReceivableMoney 当前应收金额 to set + */ + public void setCurrentReceivableMoney(BigDecimal currentReceivableMoney){ + this.currentReceivableMoney = currentReceivableMoney; + } + /** + * @return 认款金额 + */ + public BigDecimal getSubscriptionMoney(){ + return subscriptionMoney; + } + + /** + * @param subscriptionMoney 认款金额 to set + */ + public void setSubscriptionMoney(BigDecimal subscriptionMoney){ + this.subscriptionMoney = subscriptionMoney; + } + /** + * @return 认款申请日期 + */ + public String getSubscriptionDate(){ + return subscriptionDate; + } + + /** + * @param subscriptionDate 认款申请日期 to set + */ + public void setSubscriptionDate(String subscriptionDate){ + this.subscriptionDate = subscriptionDate; + } + /** + * @return 收款确认单sid + */ + public String getCollSid(){ + return collSid; + } + + /** + * @param collSid 收款确认单sid to set + */ + public void setCollSid(String collSid){ + this.collSid = collSid; + } +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedDto.java new file mode 100644 index 0000000000..8b4a9eee4e --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedDto.java @@ -0,0 +1,78 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed; + + +import com.yxt.common.core.dto.Dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedDto.java
+ * Class: com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedDto
+ * Description: 已选应收款项明细表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "已选应收款项明细表 数据传输对象", description = "已选应收款项明细表 数据传输对象") +@Data +public class BusSelectedReceivablesDetailedDto implements Dto { + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + @ApiModelProperty("车架号") + private String VIN; // 车架号 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + @ApiModelProperty("当前应收金额") + private String currentReceivableMoney; // 当前应收金额 + @ApiModelProperty("认款金额") + private String subscriptionMoney; // 认款金额 + @ApiModelProperty("认款申请日期") + private String subscriptionDate; // 认款申请日期 + @ApiModelProperty("收款确认单sid") + private String collSid; // 收款确认单sid +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeign.java new file mode 100644 index 0000000000..d9de288247 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeign.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedFeign.java
+ * Class: com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedFeign
+ * Description: 已选应收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "已选应收款项明细表") +@FeignClient( + contextId = "anrui-buscenter-BusSelectedReceivablesDetailed", + name = "anrui-buscenter", + path = "busselectedreceivablesdetailed", + fallback = BusSelectedReceivablesDetailedFeignFallback.class) +public interface BusSelectedReceivablesDetailedFeign { + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusSelectedReceivablesDetailedQuery query); + + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(); + + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusSelectedReceivablesDetailedDto dto); + + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusSelectedReceivablesDetailedDto dto, @PathVariable("sid") String sid); + + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids); + + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids); + + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id); + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeignFallback.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeignFallback.java new file mode 100644 index 0000000000..48ac78469d --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedFeignFallback.java @@ -0,0 +1,100 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedFeignFallback
+ * Description: 已选应收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Component +public class BusSelectedReceivablesDetailedFeignFallback implements BusSelectedReceivablesDetailedFeign { + + @Override + public ResultBean> listPage(PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/listPage无法访问"); + } + + @Override + public ResultBean> listAll(BusSelectedReceivablesDetailedQuery query){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/listAll无法访问"); + } + + @Override + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/list无法访问"); + } + + @Override + public ResultBean save(BusSelectedReceivablesDetailedDto dto){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/save无法访问"); + } + + @Override + public ResultBean update(BusSelectedReceivablesDetailedDto dto, String sid){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/update无法访问"); + } + + @Override + public ResultBean del(String ids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/del无法访问"); + } + + @Override + public ResultBean delBySids( String[] sids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/delBySids无法访问"); + } + + @Override + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/fetch无法访问"); + } + + @Override + public ResultBean fetchBySid(String sid){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busselectedreceivablesdetailed/fetchBySid无法访问"); + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedQuery.java new file mode 100644 index 0000000000..9c92d78170 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedQuery.java @@ -0,0 +1,91 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedQuery.java
+ * Class: com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedQuery
+ * Description: 已选应收款项明细表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "已选应收款项明细表 查询条件", description = "已选应收款项明细表 查询条件") +@Data +public class BusSelectedReceivablesDetailedQuery implements Query { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("车架号") + private String VIN; // 车架号 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + + @ApiModelProperty("当前应收金额") + private String currentReceivableMoney; // 当前应收金额 + + @ApiModelProperty("认款金额") + private String subscriptionMoney; // 认款金额 + + @ApiModelProperty("认款申请日期") + private String subscriptionDate; // 认款申请日期 + + @ApiModelProperty("收款确认单sid") + private String collSid; // 收款确认单sid +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedVo.java new file mode 100644 index 0000000000..e92122366a --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedVo.java @@ -0,0 +1,91 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedVo.java
+ * Class: com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedVo
+ * Description: 已选应收款项明细表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "已选应收款项明细表 视图数据对象", description = "已选应收款项明细表 视图数据对象") +@Data +public class BusSelectedReceivablesDetailedVo implements Vo { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("车架号") + private String VIN; // 车架号 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + + @ApiModelProperty("当前应收金额") + private String currentReceivableMoney; // 当前应收金额 + + @ApiModelProperty("认款金额") + private String subscriptionMoney; // 认款金额 + + @ApiModelProperty("认款申请日期") + private String subscriptionDate; // 认款申请日期 + + @ApiModelProperty("收款确认单sid") + private String collSid; // 收款确认单sid +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailed.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailed.java new file mode 100644 index 0000000000..7c3ff53e04 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailed.java @@ -0,0 +1,214 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.math.BigDecimal; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailed.java
+ * Class: com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailed
+ * Description: 应收未收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "应收未收款项明细表", description = "应收未收款项明细表") +@TableName("bus_uncollected_receivables_detailed") +public class BusUncollectedReceivablesDetailed extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("车架号") + private String VIN; // 车架号 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + + @ApiModelProperty("当前应收金额") + private BigDecimal currentReceivableMoney; // 当前应收金额 + + /** + * @return 创建人接口 + */ + public String getCreateByName(){ + return createByName; + } + + /** + * @param createByName 创建人接口 to set + */ + public void setCreateByName(String createByName){ + this.createByName = createByName; + } + /** + * @return 合同sid + */ + public String getContractSid(){ + return contractSid; + } + + /** + * @param contractSid 合同sid to set + */ + public void setContractSid(String contractSid){ + this.contractSid = contractSid; + } + /** + * @return 合同编号 + */ + public String getContractNo(){ + return contractNo; + } + + /** + * @param contractNo 合同编号 to set + */ + public void setContractNo(String contractNo){ + this.contractNo = contractNo; + } + /** + * @return 客户sid + */ + public String getCustomerSid(){ + return customerSid; + } + + /** + * @param customerSid 客户sid to set + */ + public void setCustomerSid(String customerSid){ + this.customerSid = customerSid; + } + /** + * @return 客户名称 + */ + public String getCustomerName(){ + return customerName; + } + + /** + * @param customerName 客户名称 to set + */ + public void setCustomerName(String customerName){ + this.customerName = customerName; + } + /** + * @return 车架号 + */ + public String getVIN(){ + return VIN; + } + + /** + * @param VIN 车架号 to set + */ + public void setVIN(String VIN){ + this.VIN = VIN; + } + /** + * @return 分公司sid + */ + public String getUseOrgSid(){ + return useOrgSid; + } + + /** + * @param useOrgSid 分公司sid to set + */ + public void setUseOrgSid(String useOrgSid){ + this.useOrgSid = useOrgSid; + } + /** + * @return 联系电话 + */ + public String getCustomerPhone(){ + return customerPhone; + } + + /** + * @param customerPhone 联系电话 to set + */ + public void setCustomerPhone(String customerPhone){ + this.customerPhone = customerPhone; + } + /** + * @return 应收项目名称 + */ + public String getReceivablesName(){ + return receivablesName; + } + + /** + * @param receivablesName 应收项目名称 to set + */ + public void setReceivablesName(String receivablesName){ + this.receivablesName = receivablesName; + } + /** + * @return 当前应收金额 + */ + public BigDecimal getCurrentReceivableMoney(){ + return currentReceivableMoney; + } + + /** + * @param currentReceivableMoney 当前应收金额 to set + */ + public void setCurrentReceivableMoney(BigDecimal currentReceivableMoney){ + this.currentReceivableMoney = currentReceivableMoney; + } +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedDto.java new file mode 100644 index 0000000000..047988a1f0 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedDto.java @@ -0,0 +1,82 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed; + + +import com.yxt.common.core.dto.Dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedDto.java
+ * Class: com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedDto
+ * Description: 应收未收款项明细表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "应收未收款项明细表 数据传输对象", description = "应收未收款项明细表 数据传输对象") +@Data +public class BusUncollectedReceivablesDetailedDto implements Dto { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("车架号") + private String VIN; // 车架号 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + + @ApiModelProperty("当前应收金额") + private String currentReceivableMoney; // 当前应收金额 +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeign.java new file mode 100644 index 0000000000..3b529e9532 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeign.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedFeign.java
+ * Class: com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedFeign
+ * Description: 应收未收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "应收未收款项明细表") +@FeignClient( + contextId = "anrui-buscenter-BusUncollectedReceivablesDetailed", + name = "anrui-buscenter", + path = "busuncollectedreceivablesdetailed", + fallback = BusUncollectedReceivablesDetailedFeignFallback.class) +public interface BusUncollectedReceivablesDetailedFeign { + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusUncollectedReceivablesDetailedQuery query); + + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(); + + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusUncollectedReceivablesDetailedDto dto); + + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusUncollectedReceivablesDetailedDto dto, @PathVariable("sid") String sid); + + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids); + + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids); + + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id); + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeignFallback.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeignFallback.java new file mode 100644 index 0000000000..176d3e171f --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedFeignFallback.java @@ -0,0 +1,100 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedFeignFallback
+ * Description: 应收未收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Component +public class BusUncollectedReceivablesDetailedFeignFallback implements BusUncollectedReceivablesDetailedFeign { + + @Override + public ResultBean> listPage(PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/listPage无法访问"); + } + + @Override + public ResultBean> listAll(BusUncollectedReceivablesDetailedQuery query){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/listAll无法访问"); + } + + @Override + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/list无法访问"); + } + + @Override + public ResultBean save(BusUncollectedReceivablesDetailedDto dto){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/save无法访问"); + } + + @Override + public ResultBean update(BusUncollectedReceivablesDetailedDto dto, String sid){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/update无法访问"); + } + + @Override + public ResultBean del(String ids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/del无法访问"); + } + + @Override + public ResultBean delBySids( String[] sids){ + return ResultBean.fireFail().setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/delBySids无法访问"); + } + + @Override + public ResultBean fetch(String id){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/fetch无法访问"); + } + + @Override + public ResultBean fetchBySid(String sid){ + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-buscenter/busuncollectedreceivablesdetailed/fetchBySid无法访问"); + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedQuery.java new file mode 100644 index 0000000000..d72e1d8bd5 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedQuery.java @@ -0,0 +1,82 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedQuery.java
+ * Class: com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedQuery
+ * Description: 应收未收款项明细表 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "应收未收款项明细表 查询条件", description = "应收未收款项明细表 查询条件") +@Data +public class BusUncollectedReceivablesDetailedQuery implements Query { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("车架号") + private String VIN; // 车架号 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + + @ApiModelProperty("当前应收金额") + private String currentReceivableMoney; // 当前应收金额 +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedVo.java new file mode 100644 index 0000000000..a7f086cceb --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedVo.java @@ -0,0 +1,82 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedVo.java
+ * Class: com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedVo
+ * Description: 应收未收款项明细表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "应收未收款项明细表 视图数据对象", description = "应收未收款项明细表 视图数据对象") +@Data +public class BusUncollectedReceivablesDetailedVo implements Vo { + + + @ApiModelProperty("创建人接口") + private String createByName; // 创建人接口 + + @ApiModelProperty("合同sid") + private String contractSid; // 合同sid + + @ApiModelProperty("合同编号") + private String contractNo; // 合同编号 + + @ApiModelProperty("客户sid") + private String customerSid; // 客户sid + + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("车架号") + private String VIN; // 车架号 + + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + + @ApiModelProperty("联系电话") + private String customerPhone; // 联系电话 + + @ApiModelProperty("应收项目名称") + private String receivablesName; // 应收项目名称 + + @ApiModelProperty("当前应收金额") + private String currentReceivableMoney; // 当前应收金额 +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java new file mode 100644 index 0000000000..01f9a53fed --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java @@ -0,0 +1,65 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscollectionconfirmation; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmation; +import com.yxt.anrui.buscenter.api.buscollectionconfirmation.BusCollectionConfirmationVo; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationMapper.java
+ * Class: com.yxt.anrui.buscenter.biz.buscollectionconfirmation.BusCollectionConfirmationMapper
+ * Description: 收款确认表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface BusCollectionConfirmationMapper extends BaseMapper { + + //@Update("update bus_collection_confirmation set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from bus_collection_confirmation") + List selectListVo(); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml new file mode 100644 index 0000000000..d4f730bad0 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java new file mode 100644 index 0000000000..7c0f8fcf47 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java @@ -0,0 +1,91 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscollectionconfirmation; + +import com.yxt.anrui.buscenter.api.buscollectionconfirmation.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.biz.buscollectionconfirmation.BusCollectionConfirmationRest
+ * Description: 收款确认表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "收款确认表") +@RestController("com.yxt.anrui.buscenter.biz.buscollectionconfirmation.BusCollectionConfirmationRest") +@RequestMapping("/buscollectionconfirmation") +public class BusCollectionConfirmationRest implements BusCollectionConfirmationFeign { + + @Autowired + private BusCollectionConfirmationService busCollectionConfirmationService; + + @Override + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = busCollectionConfirmationService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + @ApiOperation("新增或修改保存") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody BusCollectionConfirmationDto dto){ + return busCollectionConfirmationService.saveOrUpdateAllDto(dto); + } + + @Override + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + busCollectionConfirmationService.delBySids(sids); + return rb.success(); + } + + @Override + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid){ + return busCollectionConfirmationService.fetchByAllSid(sid); + } +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java new file mode 100644 index 0000000000..c3635e05c1 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java @@ -0,0 +1,134 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscollectionconfirmation; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.buscenter.api.buscollectionconfirmation.*; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCollectionConfirmationService.java
+ * Class: com.yxt.anrui.buscenter.biz.buscollectionconfirmation.BusCollectionConfirmationService
+ * Description: 收款确认表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class BusCollectionConfirmationService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + BusCollectionConfirmationQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List listAll(BusCollectionConfirmationQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + private QueryWrapper createQueryWrapper(BusCollectionConfirmationQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + if (StringUtils.isNotBlank(query.getCollectionDate())) { + qw.eq("collectionDate", query.getCollectionDate()); + } + if (StringUtils.isNotBlank(query.getCollectionBank())) { + qw.eq("collectionBank", query.getCollectionBank()); + } + if (StringUtils.isNotBlank(query.getCollectionTypeKey())) { + qw.eq("collectionTypeKey", query.getCollectionTypeKey()); + } + if (StringUtils.isNotBlank(query.getSubscriptionState())) { + qw.eq("subscriptionState", query.getSubscriptionState()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + BusCollectionConfirmationQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(BusCollectionConfirmationQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(BusCollectionConfirmationDto dto){ + BusCollectionConfirmation entity = new BusCollectionConfirmation(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public BusCollectionConfirmationVo fetchByIdVo(String id){ + BusCollectionConfirmation entity = this.fetchById(id); + BusCollectionConfirmationVo vo = new BusCollectionConfirmationVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public ResultBean saveOrUpdateAllDto(BusCollectionConfirmationDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)){ + + } + return null; + } + + public ResultBean fetchByAllSid(String sid) { + ResultBean rb = ResultBean.fireFail(); + return null; + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.java new file mode 100644 index 0000000000..eb7ea32854 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.java @@ -0,0 +1,65 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscustomerbill; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBill; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillVo; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillMapper.java
+ * Class: com.yxt.anrui.buscenter.biz.buscustomerbill.BusCustomerBillMapper
+ * Description: 客户账单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface BusCustomerBillMapper extends BaseMapper { + + //@Update("update bus_customer_bill set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from bus_customer_bill") + List selectListVo(); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.xml new file mode 100644 index 0000000000..bd0d37e115 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillRest.java new file mode 100644 index 0000000000..e402bd85a8 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillRest.java @@ -0,0 +1,144 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscustomerbill; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBill; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillQuery; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillVo; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillDto; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillFeign; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.biz.buscustomerbill.BusCustomerBillRest
+ * Description: 客户账单表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "客户账单表") +@RestController("com.yxt.anrui.buscenter.biz.buscustomerbill.BusCustomerBillRest") +@RequestMapping("/buscustomerbill") +public class BusCustomerBillRest implements BusCustomerBillFeign { + + @Autowired + private BusCustomerBillService busCustomerBillService; + + @Override + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = busCustomerBillService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusCustomerBillQuery query){ + ResultBean rb = ResultBean.fireFail(); + List list = busCustomerBillService.listAllVo(query); + return rb.success().setData(list); + } + + @Override + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + List list = busCustomerBillService.listVo(); + return rb.success().setData(list); + } + + @Override + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusCustomerBillDto dto){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillService.saveOrUpdateDto(dto); + return rb.success(); + } + + @Override + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusCustomerBillDto dto, @PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillService.updateBySid(dto.toMap(),sid); + return rb.success(); + } + + @Override + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillService.delByIds(ids); + return rb.success(); + } + + @Override + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillService.delBySids(sids); + return rb.success(); + } + + @Override + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id){ + ResultBean rb = ResultBean.fireFail(); + BusCustomerBillVo vo = busCustomerBillService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + @Override + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + BusCustomerBillVo vo =new BusCustomerBillVo(); + return rb.success().setData(vo); + } +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillService.java new file mode 100644 index 0000000000..564502c34d --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbill/BusCustomerBillService.java @@ -0,0 +1,172 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscustomerbill; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBill; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillQuery; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillVo; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillDto; +import com.yxt.anrui.buscenter.api.buscustomerbill.BusCustomerBillFeign; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillService.java
+ * Class: com.yxt.anrui.buscenter.biz.buscustomerbill.BusCustomerBillService
+ * Description: 客户账单表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class BusCustomerBillService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + BusCustomerBillQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List listAll(BusCustomerBillQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + private QueryWrapper createQueryWrapper(BusCustomerBillQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getCreateByName())) { + qw.eq("createByName", query.getCreateByName()); + } + + if (StringUtils.isNotBlank(query.getContractSid())) { + qw.eq("contractSid", query.getContractSid()); + } + + if (StringUtils.isNotBlank(query.getContractNo())) { + qw.eq("contractNo", query.getContractNo()); + } + + if (StringUtils.isNotBlank(query.getCustomerSid())) { + qw.eq("customerSid", query.getCustomerSid()); + } + + if (StringUtils.isNotBlank(query.getCustomerName())) { + qw.eq("customerName", query.getCustomerName()); + } + + if (StringUtils.isNotBlank(query.getPaymentTypeKey())) { + qw.eq("paymentTypeKey", query.getPaymentTypeKey()); + } + + if (StringUtils.isNotBlank(query.getPaymentTypeValue())) { + qw.eq("paymentTypeValue", query.getPaymentTypeValue()); + } + + if (StringUtils.isNotBlank(query.getPaymentName())) { + qw.eq("paymentName", query.getPaymentName()); + } + + if (query.getPaymentState() != null) { + qw.eq("paymentState", query.getPaymentState()); + } + + if (query.getReceivableMoney() != null) { + qw.eq("receivableMoney", query.getReceivableMoney()); + } + + if (query.getNetReceiptsMoney() != null) { + qw.eq("netReceiptsMoney", query.getNetReceiptsMoney()); + } + + if (query.getUncollectedMoney() != null) { + qw.eq("uncollectedMoney", query.getUncollectedMoney()); + } + + if (StringUtils.isNotBlank(query.getGenerateDate())) { + qw.eq("generateDate", query.getGenerateDate()); + } + + if (StringUtils.isNotBlank(query.getLatestProcessingDate())) { + qw.eq("latestProcessingDate", query.getLatestProcessingDate()); + } + + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("useOrgSid", query.getUseOrgSid()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + BusCustomerBillQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(BusCustomerBillQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(BusCustomerBillDto dto){ + BusCustomerBill entity = new BusCustomerBill(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public BusCustomerBillVo fetchByIdVo(String id){ + BusCustomerBill entity = this.fetchById(id); + BusCustomerBillVo vo = new BusCustomerBillVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.java new file mode 100644 index 0000000000..cc5c893ade --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.java @@ -0,0 +1,65 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscustomerbilldetailed; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailed; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedVo; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedMapper.java
+ * Class: com.yxt.anrui.buscenter.biz.buscustomerbilldetailed.BusCustomerBillDetailedMapper
+ * Description: 客户账单明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface BusCustomerBillDetailedMapper extends BaseMapper { + + //@Update("update bus_customer_bill_detailed set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from bus_customer_bill_detailed") + List selectListVo(); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.xml new file mode 100644 index 0000000000..95983d8df3 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedRest.java new file mode 100644 index 0000000000..a734e29773 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedRest.java @@ -0,0 +1,144 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscustomerbilldetailed; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailed; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedQuery; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedVo; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedDto; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedFeign; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.biz.buscustomerbilldetailed.BusCustomerBillDetailedRest
+ * Description: 客户账单明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "客户账单明细表") +@RestController("com.yxt.anrui.buscenter.biz.buscustomerbilldetailed.BusCustomerBillDetailedRest") +@RequestMapping("/buscustomerbilldetailed") +public class BusCustomerBillDetailedRest implements BusCustomerBillDetailedFeign { + + @Autowired + private BusCustomerBillDetailedService busCustomerBillDetailedService; + + @Override + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = busCustomerBillDetailedService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusCustomerBillDetailedQuery query){ + ResultBean rb = ResultBean.fireFail(); + List list = busCustomerBillDetailedService.listAllVo(query); + return rb.success().setData(list); + } + + @Override + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + List list = busCustomerBillDetailedService.listVo(); + return rb.success().setData(list); + } + + @Override + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusCustomerBillDetailedDto dto){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillDetailedService.saveOrUpdateDto(dto); + return rb.success(); + } + + @Override + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusCustomerBillDetailedDto dto, @PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillDetailedService.updateBySid(dto.toMap(),sid); + return rb.success(); + } + + @Override + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillDetailedService.delByIds(ids); + return rb.success(); + } + + @Override + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + busCustomerBillDetailedService.delBySids(sids); + return rb.success(); + } + + @Override + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id){ + ResultBean rb = ResultBean.fireFail(); + BusCustomerBillDetailedVo vo = busCustomerBillDetailedService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + @Override + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + BusCustomerBillDetailedVo vo = new BusCustomerBillDetailedVo(); + return rb.success().setData(vo); + } +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedService.java new file mode 100644 index 0000000000..8d0853fecc --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscustomerbilldetailed/BusCustomerBillDetailedService.java @@ -0,0 +1,168 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.buscustomerbilldetailed; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailed; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedQuery; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedVo; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedDto; +import com.yxt.anrui.buscenter.api.buscustomerbilldetailed.BusCustomerBillDetailedFeign; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusCustomerBillDetailedService.java
+ * Class: com.yxt.anrui.buscenter.biz.buscustomerbilldetailed.BusCustomerBillDetailedService
+ * Description: 客户账单明细表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class BusCustomerBillDetailedService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + BusCustomerBillDetailedQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List listAll(BusCustomerBillDetailedQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + private QueryWrapper createQueryWrapper(BusCustomerBillDetailedQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getCreateByName())) { + qw.eq("createByName", query.getCreateByName()); + } + + if (StringUtils.isNotBlank(query.getContractSid())) { + qw.eq("contractSid", query.getContractSid()); + } + + if (StringUtils.isNotBlank(query.getContractNo())) { + qw.eq("contractNo", query.getContractNo()); + } + + if (StringUtils.isNotBlank(query.getCustomerSid())) { + qw.eq("customerSid", query.getCustomerSid()); + } + + if (StringUtils.isNotBlank(query.getCustomerName())) { + qw.eq("customerName", query.getCustomerName()); + } + + if (StringUtils.isNotBlank(query.getPaymentTypeKey())) { + qw.eq("paymentTypeKey", query.getPaymentTypeKey()); + } + + if (StringUtils.isNotBlank(query.getPaymentTypeValue())) { + qw.eq("paymentTypeValue", query.getPaymentTypeValue()); + } + + if (StringUtils.isNotBlank(query.getPaymentName())) { + qw.eq("paymentName", query.getPaymentName()); + } + + if (query.getPaymentState() != null) { + qw.eq("paymentState", query.getPaymentState()); + } + + if (query.getReceivableMoney() != null) { + qw.eq("receivableMoney", query.getReceivableMoney()); + } + + if (query.getNetReceiptsMoney() != null) { + qw.eq("netReceiptsMoney", query.getNetReceiptsMoney()); + } + + if (query.getUncollectedMoney() != null) { + qw.eq("uncollectedMoney", query.getUncollectedMoney()); + } + + if (StringUtils.isNotBlank(query.getGenerateDate())) { + qw.eq("generateDate", query.getGenerateDate()); + } + + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("useOrgSid", query.getUseOrgSid()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + BusCustomerBillDetailedQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(BusCustomerBillDetailedQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(BusCustomerBillDetailedDto dto){ + BusCustomerBillDetailed entity = new BusCustomerBillDetailed(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public BusCustomerBillDetailedVo fetchByIdVo(String id){ + BusCustomerBillDetailed entity = this.fetchById(id); + BusCustomerBillDetailedVo vo = new BusCustomerBillDetailedVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java new file mode 100644 index 0000000000..3dda5b98c0 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java @@ -0,0 +1,65 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailed; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedVo; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedMapper.java
+ * Class: com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedMapper
+ * Description: 已选应收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface BusSelectedReceivablesDetailedMapper extends BaseMapper { + + //@Update("update bus_selected_receivables_detailed set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from bus_selected_receivables_detailed") + List selectListVo(); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.xml new file mode 100644 index 0000000000..ea583bec99 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedRest.java new file mode 100644 index 0000000000..3bfc1459e2 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedRest.java @@ -0,0 +1,144 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailed; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedQuery; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedVo; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedDto; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedFeign; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedRest
+ * Description: 已选应收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "已选应收款项明细表") +@RestController("com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedRest") +@RequestMapping("/busselectedreceivablesdetailed") +public class BusSelectedReceivablesDetailedRest implements BusSelectedReceivablesDetailedFeign { + + @Autowired + private BusSelectedReceivablesDetailedService busSelectedReceivablesDetailedService; + + @Override + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = busSelectedReceivablesDetailedService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusSelectedReceivablesDetailedQuery query){ + ResultBean rb = ResultBean.fireFail(); + List list = busSelectedReceivablesDetailedService.listAllVo(query); + return rb.success().setData(list); + } + + @Override + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + List list = busSelectedReceivablesDetailedService.listVo(); + return rb.success().setData(list); + } + + @Override + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusSelectedReceivablesDetailedDto dto){ + ResultBean rb = ResultBean.fireFail(); + busSelectedReceivablesDetailedService.saveOrUpdateDto(dto); + return rb.success(); + } + + @Override + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusSelectedReceivablesDetailedDto dto, @PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + busSelectedReceivablesDetailedService.updateBySid(dto.toMap(),sid); + return rb.success(); + } + + @Override + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids){ + ResultBean rb = ResultBean.fireFail(); + busSelectedReceivablesDetailedService.delByIds(ids); + return rb.success(); + } + + @Override + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + busSelectedReceivablesDetailedService.delBySids(sids); + return rb.success(); + } + + @Override + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id){ + ResultBean rb = ResultBean.fireFail(); + BusSelectedReceivablesDetailedVo vo = busSelectedReceivablesDetailedService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + @Override + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + BusSelectedReceivablesDetailedVo vo = new BusSelectedReceivablesDetailedVo(); + return rb.success().setData(vo); + } +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java new file mode 100644 index 0000000000..378cc57127 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java @@ -0,0 +1,164 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailed; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedQuery; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedVo; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedDto; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedFeign; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusSelectedReceivablesDetailedService.java
+ * Class: com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedService
+ * Description: 已选应收款项明细表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:00
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class BusSelectedReceivablesDetailedService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + BusSelectedReceivablesDetailedQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List listAll(BusSelectedReceivablesDetailedQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + private QueryWrapper createQueryWrapper(BusSelectedReceivablesDetailedQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getCreateByName())) { + qw.eq("createByName", query.getCreateByName()); + } + + if (StringUtils.isNotBlank(query.getContractSid())) { + qw.eq("contractSid", query.getContractSid()); + } + + if (StringUtils.isNotBlank(query.getContractNo())) { + qw.eq("contractNo", query.getContractNo()); + } + + if (StringUtils.isNotBlank(query.getCustomerSid())) { + qw.eq("customerSid", query.getCustomerSid()); + } + + if (StringUtils.isNotBlank(query.getCustomerName())) { + qw.eq("customerName", query.getCustomerName()); + } + + if (StringUtils.isNotBlank(query.getVIN())) { + qw.eq("VIN", query.getVIN()); + } + + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("useOrgSid", query.getUseOrgSid()); + } + + if (StringUtils.isNotBlank(query.getCustomerPhone())) { + qw.eq("customerPhone", query.getCustomerPhone()); + } + + if (StringUtils.isNotBlank(query.getReceivablesName())) { + qw.eq("receivablesName", query.getReceivablesName()); + } + + if (query.getCurrentReceivableMoney() != null) { + qw.eq("currentReceivableMoney", query.getCurrentReceivableMoney()); + } + + if (query.getSubscriptionMoney() != null) { + qw.eq("subscriptionMoney", query.getSubscriptionMoney()); + } + + if (StringUtils.isNotBlank(query.getSubscriptionDate())) { + qw.eq("subscriptionDate", query.getSubscriptionDate()); + } + + if (StringUtils.isNotBlank(query.getCollSid())) { + qw.eq("collSid", query.getCollSid()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + BusSelectedReceivablesDetailedQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(BusSelectedReceivablesDetailedQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(BusSelectedReceivablesDetailedDto dto){ + BusSelectedReceivablesDetailed entity = new BusSelectedReceivablesDetailed(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public BusSelectedReceivablesDetailedVo fetchByIdVo(String id){ + BusSelectedReceivablesDetailed entity = this.fetchById(id); + BusSelectedReceivablesDetailedVo vo = new BusSelectedReceivablesDetailedVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.java new file mode 100644 index 0000000000..b772a53f8a --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.java @@ -0,0 +1,65 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.busuncollectedreceivablesdetailed; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailed; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedVo; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedMapper.java
+ * Class: com.yxt.anrui.buscenter.biz.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedMapper
+ * Description: 应收未收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface BusUncollectedReceivablesDetailedMapper extends BaseMapper { + + //@Update("update bus_uncollected_receivables_detailed set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from bus_uncollected_receivables_detailed") + List selectListVo(); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.xml new file mode 100644 index 0000000000..77e855d8b6 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedRest.java new file mode 100644 index 0000000000..a8d157688c --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedRest.java @@ -0,0 +1,144 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.busuncollectedreceivablesdetailed; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailed; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedQuery; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedVo; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedDto; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedFeign; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedFeignFallback.java
+ * Class: com.yxt.anrui.buscenter.biz.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedRest
+ * Description: 应收未收款项明细表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "应收未收款项明细表") +@RestController("com.yxt.anrui.buscenter.biz.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedRest") +@RequestMapping("/busuncollectedreceivablesdetailed") +public class BusUncollectedReceivablesDetailedRest implements BusUncollectedReceivablesDetailedFeign { + + @Autowired + private BusUncollectedReceivablesDetailedService busUncollectedReceivablesDetailedService; + + @Override + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = busUncollectedReceivablesDetailedService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + @ApiOperation("根据条件查询所有数据列表") + @PostMapping("/listAll") + public ResultBean> listAll(@RequestBody BusUncollectedReceivablesDetailedQuery query){ + ResultBean rb = ResultBean.fireFail(); + List list = busUncollectedReceivablesDetailedService.listAllVo(query); + return rb.success().setData(list); + } + + @Override + @ApiOperation("所有数据列表") + @GetMapping("/list") + public ResultBean> list(){ + ResultBean rb = ResultBean.fireFail(); + List list = busUncollectedReceivablesDetailedService.listVo(); + return rb.success().setData(list); + } + + @Override + @ApiOperation("新增保存") + @PostMapping("/save") + public ResultBean save(@RequestBody BusUncollectedReceivablesDetailedDto dto){ + ResultBean rb = ResultBean.fireFail(); + busUncollectedReceivablesDetailedService.saveOrUpdateDto(dto); + return rb.success(); + } + + @Override + @ApiOperation("修改保存") + @PostMapping("/update/{sid}") + public ResultBean update(@RequestBody BusUncollectedReceivablesDetailedDto dto, @PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + busUncollectedReceivablesDetailedService.updateBySid(dto.toMap(),sid); + return rb.success(); + } + + @Override + @ApiOperation("删除记录") + @GetMapping("/del/{ids}") + public ResultBean del(@PathVariable("ids") String ids){ + ResultBean rb = ResultBean.fireFail(); + busUncollectedReceivablesDetailedService.delByIds(ids); + return rb.success(); + } + + @Override + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + busUncollectedReceivablesDetailedService.delBySids(sids); + return rb.success(); + } + + @Override + @ApiOperation("获取一条记录") + @GetMapping("/fetch/{id}") + public ResultBean fetch(@PathVariable("id") String id){ + ResultBean rb = ResultBean.fireFail(); + BusUncollectedReceivablesDetailedVo vo = busUncollectedReceivablesDetailedService.fetchByIdVo(id); + return rb.success().setData(vo); + } + + @Override + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + BusUncollectedReceivablesDetailedVo vo = new BusUncollectedReceivablesDetailedVo(); + return rb.success().setData(vo); + } +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedService.java new file mode 100644 index 0000000000..64ffb5a4df --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busuncollectedreceivablesdetailed/BusUncollectedReceivablesDetailedService.java @@ -0,0 +1,152 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.busuncollectedreceivablesdetailed; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailed; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedQuery; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedVo; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedDto; +import com.yxt.anrui.buscenter.api.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedFeign; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: anrui-buscenter(销售相关)
+ * File: BusUncollectedReceivablesDetailedService.java
+ * Class: com.yxt.anrui.buscenter.biz.busuncollectedreceivablesdetailed.BusUncollectedReceivablesDetailedService
+ * Description: 应收未收款项明细表 业务逻辑.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2022-04-12 17:57:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class BusUncollectedReceivablesDetailedService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pq) { + BusUncollectedReceivablesDetailedQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List listAll(BusUncollectedReceivablesDetailedQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + private QueryWrapper createQueryWrapper(BusUncollectedReceivablesDetailedQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + + if (StringUtils.isNotBlank(query.getCreateByName())) { + qw.eq("createByName", query.getCreateByName()); + } + + if (StringUtils.isNotBlank(query.getContractSid())) { + qw.eq("contractSid", query.getContractSid()); + } + + if (StringUtils.isNotBlank(query.getContractNo())) { + qw.eq("contractNo", query.getContractNo()); + } + + if (StringUtils.isNotBlank(query.getCustomerSid())) { + qw.eq("customerSid", query.getCustomerSid()); + } + + if (StringUtils.isNotBlank(query.getCustomerName())) { + qw.eq("customerName", query.getCustomerName()); + } + + if (StringUtils.isNotBlank(query.getVIN())) { + qw.eq("VIN", query.getVIN()); + } + + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("useOrgSid", query.getUseOrgSid()); + } + + if (StringUtils.isNotBlank(query.getCustomerPhone())) { + qw.eq("customerPhone", query.getCustomerPhone()); + } + + if (StringUtils.isNotBlank(query.getReceivablesName())) { + qw.eq("receivablesName", query.getReceivablesName()); + } + + if (query.getCurrentReceivableMoney() != null) { + qw.eq("currentReceivableMoney", query.getCurrentReceivableMoney()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + BusUncollectedReceivablesDetailedQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAllVo(BusUncollectedReceivablesDetailedQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public void saveOrUpdateDto(BusUncollectedReceivablesDetailedDto dto){ + BusUncollectedReceivablesDetailed entity = new BusUncollectedReceivablesDetailed(); + dto.fillEntity(entity); + this.saveOrUpdate(entity); + } + + public BusUncollectedReceivablesDetailedVo fetchByIdVo(String id){ + BusUncollectedReceivablesDetailed entity = this.fetchById(id); + BusUncollectedReceivablesDetailedVo vo = new BusUncollectedReceivablesDetailedVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } +} \ No newline at end of file From 4a212e42054f7c34e676746c4a75e8db905d01e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=AE=B6=E5=BA=84=E5=B8=82=E5=AE=87=E4=BF=A1?= =?UTF-8?q?=E9=80=9A=E7=94=B5=E5=AD=90=E6=9C=89=E9=99=90=E5=85=AC=E5=8F=B8?= Date: Wed, 13 Apr 2022 13:34:46 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20'=E5=B7=A5=E4=BD=9C=E8=AE=A1=E5=88=92'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../安瑞信息化平台工作内容.xlsx | Bin 53837 -> 101396 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/工作计划/安瑞信息化平台工作内容.xlsx b/工作计划/安瑞信息化平台工作内容.xlsx index 1d9d6b292f4f49162e0dfd288171a1b7aecafc9a..26f580cc145cdad4aab29b9e57e445f6819e723e 100644 GIT binary patch literal 101396 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Ú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 From 9e2c25516f9d8b22ec4b3eaa27012a0cbd86dd01 Mon Sep 17 00:00:00 2001 From: hanlinghao <2969694837@qq.com> Date: Wed, 13 Apr 2022 14:02:34 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=8C=E5=AE=A2=E6=88=B7=E6=84=8F=E5=90=91?= =?UTF-8?q?=E8=BD=A6=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppModelVeDetailVo.java | 18 +- .../BaseVehmodelConfigFeign.java | 7 + .../BaseVehmodelConfigFeignFallback.java | 5 + .../BaseVehmodelConfigMapper.java | 2 + .../BaseVehmodelConfigMapper.xml | 28 +- .../BaseVehmodelConfigRest.java | 6 + .../BaseVehmodelConfigService.java | 10 +- .../BusCollectionConfirmationFeign.java | 6 + .../biz/busdeposit/BusDepositService.java | 8 + .../crmcustomerfile/CrmCustomerFileFeign.java | 16 +- .../CrmCustomerFileFeignFallback.java | 10 + .../crmcustomertemp/CrmCustomerTempFeign.java | 8 + .../CrmCustomerTempFeignFallback.java | 5 + .../AppCrmVehicledemandDetailsVo.java | 43 ++- .../AppCrmVehicledemandDto.java | 55 +-- .../AppCrmVehicledemandVo.java | 26 +- .../crmvehicledemand/CrmVehicledemand.java | 2 +- .../CrmVehicledemandFeign.java | 32 +- .../CrmVehicledemandFeignFallback.java | 160 +++++---- .../CrmCustomerFileMapper.java | 28 +- .../crmcustomerfile/CrmCustomerFileMapper.xml | 58 ++- .../crmcustomerfile/CrmCustomerFileRest.java | 11 + .../CrmCustomerFileService.java | 336 +++++++++++------- .../CrmCustomerTempMapper.java | 8 + .../crmcustomertemp/CrmCustomerTempMapper.xml | 39 +- .../crmcustomertemp/CrmCustomerTempRest.java | 12 + .../CrmCustomerTempService.java | 13 +- .../CrmVehicledemandMapper.java | 35 +- .../CrmVehicledemandMapper.xml | 75 ++-- .../CrmVehicledemandRest.java | 89 +++-- .../CrmVehicledemandService.java | 128 +++++-- .../anrui/crm/biz/crmvisit/CrmVisitRest.java | 9 +- 32 files changed, 869 insertions(+), 419 deletions(-) diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/AppModelVeDetailVo.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/AppModelVeDetailVo.java index 7be79f440c..8c33f60ede 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/AppModelVeDetailVo.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/AppModelVeDetailVo.java @@ -1,10 +1,26 @@ package com.yxt.anrui.base.api.basevehmodelconfig; +import com.yxt.common.core.vo.Vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + @Data -public class AppModelVeDetailVo { +public class AppModelVeDetailVo implements Vo { + + @ApiModelProperty("车型名称") + private String modelName; + + @ApiModelProperty("品牌sid") + private String brandSid; + + @ApiModelProperty("品牌名称") + private String brandName; + + @ApiModelProperty("销售指导价") + private BigDecimal saleReferencePrice; + } diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeign.java index bde8a09ec2..8988a4b965 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeign.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeign.java @@ -101,4 +101,11 @@ public interface BaseVehmodelConfigFeign { @ApiOperation("手机端车型询价") @PostMapping("/getAppVehicleInquiryVo/{modelSid}") public ResultBean getAppVehicleInquiryVo(@PathVariable("modelSid") String modelSid, @PathVariable("configSid") String configSid); + + @ApiOperation("意向车型查询车型数据") + @GetMapping("/getAppCommonlyUsedModelDetails/{userSid}/{modelSid}/{configSid}") + public ResultBean getAppIntentionVehicleVo(@RequestParam("userSid") String userSid, + @RequestParam("modelSid") String modelSid, @RequestParam("configSid") String configSid); + + } \ No newline at end of file diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeignFallback.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeignFallback.java index b582fcf451..3aa0bb48e1 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeignFallback.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeignFallback.java @@ -96,4 +96,9 @@ public class BaseVehmodelConfigFeignFallback implements BaseVehmodelConfigFeign return null; } + @Override + public ResultBean getAppIntentionVehicleVo(String userSid, String modelSid, String configSid) { + return null; + } + } \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.java index 5bf857e138..969ebd9067 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.java @@ -110,4 +110,6 @@ public interface BaseVehmodelConfigMapper extends BaseMapper BaseVehmodelConfigVo checkSave(@Param("modelSid") String modelSid, @Param("configurationItemsSid") String configurationItemsSid); BaseVehmodelConfig getBySid(String sid); + + AppModelVeDetailVo getAppIntentionVehicleVo(@Param("useOrg") String useOrg, @Param("modelSid") String modelSid, @Param("configSid") String configSid); } \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.xml b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.xml index ff7e510ead..87aa51bc8d 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.xml +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigMapper.xml @@ -65,8 +65,8 @@ bmc.brandName, bvc.guidedPrice FROM base_vehmodel_config bvc - LEFT JOIN base_vehicle_model bvm ON bvc.modelSid = bvm.sid - LEFT JOIN base_model_config bmc ON bvc.configurationItemsSid = bmc.sid + LEFT JOIN base_vehicle_model bvm ON bvc.modelSid = bvm.sid + LEFT JOIN base_model_config bmc ON bvc.configurationItemsSid = bmc.sid WHERE bvm.sid = #{modelSid} GROUP BY bvm.sid @@ -82,7 +82,7 @@ @@ -126,8 +126,8 @@ bmc.configuringBao, bmc.otherConfig FROM base_vehmodel_config bvc - LEFT JOIN base_vehicle_model bvm ON bvc.`modelSid` = bvm.`sid` - LEFT JOIN base_model_config bmc ON bvc.configurationItemsSid = bmc.`sid` + LEFT JOIN base_vehicle_model bvm ON bvc.`modelSid` = bvm.`sid` + LEFT JOIN base_model_config bmc ON bvc.configurationItemsSid = bmc.`sid` WHERE bvm.sid = #{modelSid} AND bmc.sid = #{configSid} @@ -145,7 +145,21 @@ bvc.`manufactorSettlementPrice`, bvc.`guidedPrice` FROM base_vehmodel_config bvc - LEFT JOIN base_vehicle_model bvm ON bvc.`modelSid` = bvm.`sid` - LEFT JOIN base_model_config bmc ON bvc.`configurationItemsSid` = bmc.`sid` + LEFT JOIN base_vehicle_model bvm ON bvc.`modelSid` = bvm.`sid` + LEFT JOIN base_model_config bmc ON bvc.`configurationItemsSid` = bmc.`sid` + + + \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigRest.java index 7e3e9fe687..4b10b7b089 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigRest.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigRest.java @@ -146,4 +146,10 @@ public class BaseVehmodelConfigRest implements BaseVehmodelConfigFeign { return null; } + + @Override + public ResultBean getAppIntentionVehicleVo(String userSid, String modelSid, String configSid) { + AppModelVeDetailVo vo = baseVehmodelConfigService.getAppIntentionVehicleVo(userSid,modelSid,configSid); + return new ResultBean().success().setData(vo); + } } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java index b422e34db4..198c1b9954 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java @@ -35,6 +35,7 @@ import com.yxt.anrui.base.api.basevehicle.ConfigInfo; import com.yxt.anrui.base.api.basevehmodelconfig.*; import com.yxt.anrui.base.biz.basemodelconfig.BaseModelConfigService; import com.yxt.anrui.base.biz.basevehicleappendix.BaseVehicleAppendixService; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.DateUtils; @@ -68,7 +69,8 @@ public class BaseVehmodelConfigService extends MybatisBaseService fetchBySid(@PathVariable("sid") String sid); + + /* App接口 */ + + @ApiOperation("手机端—获取款项确认列表") + @PostMapping("/getCollectionConfirmList") + public ResultBean> getCollectionConfirmList(@RequestBody PagerQuery pq); } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeposit/BusDepositService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeposit/BusDepositService.java index 28ded49c35..29393fd680 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeposit/BusDepositService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeposit/BusDepositService.java @@ -7,9 +7,17 @@ import com.yxt.anrui.buscenter.api.busdeposit.BusDeposit; import com.yxt.anrui.buscenter.api.busdepositcustomer.AppBusDepositCustomerListVo; import com.yxt.anrui.buscenter.biz.busdepositcustomer.BusDepositCustomerService; import com.yxt.anrui.buscenter.biz.busdepositvehicle.BusDepositVehicleService; +import com.yxt.anrui.buscenter.biz.busmaindeposit.BusMainDepositService; +import com.yxt.anrui.buscenter.biz.flow.FlowableService; +import com.yxt.anrui.crm.api.crmcustomer.CrmCustomer; import com.yxt.anrui.crm.api.crmcustomer.CrmCustomerFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; +import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign; +import com.yxt.anrui.portal.api.dictcommon.DictCommonVo; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeign.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeign.java index 2bfe06263d..ea46b069eb 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeign.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeign.java @@ -59,6 +59,7 @@ public interface CrmCustomerFileFeign { /** * 客户资料初始化分页查询列表 + * * @param pq * @return */ @@ -71,10 +72,11 @@ public interface CrmCustomerFileFeign { */ @ApiOperation("保存上传的附件") @PostMapping("/saveCustomerFile") - public ResultBean saveCustomerFile(@RequestParam("staffName") String staffName,@RequestParam("staffSid") String staffSid,@RequestParam("sid") String sid,@RequestBody List crmFileDtos); + public ResultBean saveCustomerFile(@RequestParam("staffName") String staffName, @RequestParam("staffSid") String staffSid, @RequestParam("sid") String sid, @RequestBody List crmFileDtos); /** * 上传回显图片信息接口 + * * @param sid * @return */ @@ -83,4 +85,16 @@ public interface CrmCustomerFileFeign { public ResultBean fetchFileListBySid(@PathVariable("sid") String sid); + @ApiOperation("初始化客户档案") + @ResponseBody + @GetMapping("/initCustomerArchives/{customerSid}/{userSid}") + public ResultBean initCustomerArchives(@PathVariable("customerSid") String customerSid, @PathVariable("userSid") String userSid); + + + @ApiOperation("手机端保存客户档案") + @ResponseBody + @PutMapping("/saveCustomerArchives") + public ResultBean saveCustomerArchives(AppCrmCustomerTempArchivesDto dto); + + } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeignFallback.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeignFallback.java index d03cee87a9..6815fa479a 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeignFallback.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/CrmCustomerFileFeignFallback.java @@ -64,4 +64,14 @@ public class CrmCustomerFileFeignFallback implements CrmCustomerFileFeign { public ResultBean fetchFileListBySid(String sid) { return null; } + + @Override + public ResultBean initCustomerArchives(String customerSid, String userSid) { + return null; + } + + @Override + public ResultBean saveCustomerArchives(AppCrmCustomerTempArchivesDto dto) { + return null; + } } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java index 6faf85893f..226bdc21f8 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java @@ -4,6 +4,7 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FeignClient; @@ -36,6 +37,7 @@ public interface CrmCustomerTempFeign { /** * 潜在客户管理的分页查询 + * * @param pq * @return */ @@ -74,6 +76,7 @@ public interface CrmCustomerTempFeign { /** * pc潜在客户的批量删除 + * * @param sid * @return */ @@ -83,6 +86,7 @@ public interface CrmCustomerTempFeign { /** * pc潜在客户的编辑回显 + * * @param sid * @return */ @@ -123,5 +127,9 @@ public interface CrmCustomerTempFeign { @GetMapping("/getAppCustomerTempDetailsBySid") public ResultBean getAppCustomerTempDetailsBySid(@RequestParam("sid") String sid); + @ApiOperation("手机端-获取客户基础信息(新)") + @ResponseBody + @GetMapping("/customerTempDetailsBySid/{sid}") + public ResultBean customerTempDetailsBySid(@RequestParam("sid") String sid); } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java index de278d8ee4..0617e040ef 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java @@ -93,5 +93,10 @@ public class CrmCustomerTempFeignFallback implements CrmCustomerTempFeign { return null; } + @Override + public ResultBean customerTempDetailsBySid(String sid) { + return null; + } + } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDetailsVo.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDetailsVo.java index 569446e159..f4d552c534 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDetailsVo.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDetailsVo.java @@ -11,34 +11,43 @@ import java.math.BigDecimal; @Data public class AppCrmVehicledemandDetailsVo implements Vo { - @ApiModelProperty("潜在客户信息sid") - private String customerSid; + @ApiModelProperty("意向车型sid") + private String intentionSid; @ApiModelProperty("购车方式") private String purchaseMethod; - @ApiModelProperty("车型sid") - private String modelSid; + @ApiModelProperty("购车方式value") + private String purchaseMethodValue; + + @ApiModelProperty("备注") + private String remarks; + + @ApiModelProperty("数量") + private String number; - @ApiModelProperty("车型名称") - private String modelName; + @ApiModelProperty("预计提车日期") + private String date; - @ApiModelProperty("品牌sid") - private String brandSid; + @ApiModelProperty("车型") + private String model; - @ApiModelProperty("品牌名称 ") - private String brandName; + @ApiModelProperty("指导价") + private String guidancePrice; + + @ApiModelProperty("品牌") + private String brand; @ApiModelProperty("车型报价") - private String vehicleModelOffer; + private String price; - @ApiModelProperty("其它配置说明") - private String otherConfig; + @ApiModelProperty("换选装") + private String optionsConfig; - @ApiModelProperty("简述配置") - private String sketChconfiguration; + @ApiModelProperty("配置sid") + private String configSid; - @ApiModelProperty("存放地点") - private String storageLocation = "河北省石家庄市车辆投放处"; + @ApiModelProperty("车型sid") + private String modelSid; } diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDto.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDto.java index 73e5f1baf5..0e708d143e 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDto.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandDto.java @@ -6,57 +6,12 @@ import lombok.Data; @Data public class AppCrmVehicledemandDto implements Dto { - - @ApiModelProperty("潜在客户信息sid") + @ApiModelProperty("客户sid") private String customerSid; - - @ApiModelProperty("购车方式(1 : 全款 2 : 贷款") - private String purchaseMethod; - - @ApiModelProperty("购车方式Value") - private String purchaseMethodValue; - + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("配置sid") + private String configSid; @ApiModelProperty("车型sid") private String modelSid; - - @ApiModelProperty("配置sid") - private String comonConfigSid; - - @ApiModelProperty("车型名称") - private String modelName; - - @ApiModelProperty("品牌sid") - private String brandSid; - - @ApiModelProperty("品牌名称") - private String brandName; - - @ApiModelProperty("车型报价") - private String vehicleModelOffer; - - @ApiModelProperty("数量") - private String number; - - @ApiModelProperty("预计提车日期 ") - private String estimatedPickupDate; - - @ApiModelProperty("是否意向(0为非意向,1为意向)") - private String states; - - @ApiModelProperty("备注") - private String remarks; - - /*********金融需求字段******/ - - @ApiModelProperty("首付比例") - private String down_payment_proportion; - - @ApiModelProperty("资方sid") - private String capitalSid; - - @ApiModelProperty("资方名称") - private String capitalName; - - - } diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandVo.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandVo.java index 590e774aff..7b5aa38129 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandVo.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandVo.java @@ -1,11 +1,11 @@ package com.yxt.anrui.crm.api.crmvehicledemand; -import com.fasterxml.jackson.annotation.JsonFormat; + import com.yxt.common.core.vo.Vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; + import java.util.Date; @@ -16,26 +16,20 @@ public class AppCrmVehicledemandVo implements Vo { @ApiModelProperty("车辆需求sid") private String sid; - @ApiModelProperty("车型名称") - private String modelName; - @ApiModelProperty("品牌名称") private String brandName; - @ApiModelProperty("添加时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createTime; + @ApiModelProperty("车型名称") + private String modelName; - @ApiModelProperty("车型指导价") - private String vehicleModelOffer; + @ApiModelProperty("创建时间") + private String createTime; - @ApiModelProperty("车型sid") - private String modelSid; + @ApiModelProperty("销售指导价") + private String guidancePrice; - @ApiModelProperty("配置sid") - private String comonConfigSid; + @ApiModelProperty("购车方式value") + private String purchaseType; - @ApiModelProperty("购车方式") - private String purchaseMethodValue; } diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemand.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemand.java index da7a83cb11..13e6c350af 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemand.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemand.java @@ -59,7 +59,7 @@ public class CrmVehicledemand extends BaseEntity { private String vehicleModelOffer; @ApiModelProperty("数量") - private Integer number; + private String number; @ApiModelProperty("预计提车日期 ") private String estimatedPickupDate; diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java index b3773b10e5..d1c683360e 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java @@ -71,6 +71,7 @@ public interface CrmVehicledemandFeign { /** * 意向车型的批量删除 + * * @param sid * @return */ @@ -84,6 +85,7 @@ public interface CrmVehicledemandFeign { /** * 意向车型的编辑回显 + * * @param sid * @return */ @@ -94,24 +96,34 @@ public interface CrmVehicledemandFeign { /********************************** App接口 *********************************/ - - @ApiOperation("App根据跟进记录sid查询车辆需求列表") + @ApiOperation("手机端-获取意向车型列表(新)") @ResponseBody @PostMapping("/getVisitListSid") public ResultBean> getVisitListSid(@RequestBody PagerQuery pagerQuery); - @ApiOperation("App根据sid查询车辆需求") - @GetMapping("/selectBySid/{sid}") - public ResultBean selectBySid(@PathVariable("sid") String sid); + @ApiOperation("手机端-新增意向车型(新)") + @ResponseBody + @PostMapping("/addVisitDemands") + public ResultBean addVisitDemands(@RequestBody AppCrmVehicledemandDto appCrmVehicleDemandDto); - @ApiOperation("App根据车型sid删除车型信息") - @GetMapping("/delBySid/{sid}") - public ResultBean delBySid(@PathVariable("sid") String sid); + @ApiOperation("手机端-初始化意向车型(新)") + @GetMapping("/initVisitDemands/{intentionSid}") + public ResultBean initVisitDemands(@PathVariable("intentionSid") String intentionSid); - @ApiOperation("App新增车辆需求") + @ApiOperation("手机端-修改意向车型(新)") @ResponseBody @PostMapping("/saveVisitDemands") - public ResultBean saveVisitDemands(@RequestBody AppCrmVehicledemandDto appCrmVehicledemandDto); + public ResultBean saveVisitDemands(@RequestBody AppCrmVehicleDemandUpdateDto appCrmVehicleDemandUpdateDto); + + @ApiOperation("手机端-意向车型详情(新)") + @ResponseBody + @GetMapping("/intendedModel/{sid}") + public ResultBean intendedModel(@PathVariable("sid") String sid); + + + @ApiOperation("App根据车型sid删除车型信息") + @GetMapping("/delBySid/{sid}") + public ResultBean delBySid(@PathVariable("sid") String sid); @ApiOperation("App根据sid查询意向车型详情") @GetMapping("/getAppIntendedModel/{sid}") diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeignFallback.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeignFallback.java index 9ef8dc6bad..d26aff6df7 100644 --- a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeignFallback.java +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeignFallback.java @@ -23,78 +23,90 @@ import java.util.List; @Component public class CrmVehicledemandFeignFallback implements CrmVehicledemandFeign { - @Override - public ResultBean> listPage(PagerQuery pq){ - ResultBean rb = ResultBean.fireFail(); - return rb.setMsg("接口anrui-crm/crmvehicledemand/listPage无法访问"); - } - - @Override - public ResultBean> listAll(CrmVehicledemandQuery query){ - ResultBean rb = ResultBean.fireFail(); - return rb.setMsg("接口anrui-crm/crmvehicledemand/listAll无法访问"); - } - - @Override - public ResultBean> list(){ - ResultBean rb = ResultBean.fireFail(); - return rb.setMsg("接口anrui-crm/crmvehicledemand/list无法访问"); - } - - @Override - public ResultBean save(CrmVehicledemandDto dto){ - return ResultBean.fireFail().setMsg("接口anrui-crm/crmvehicledemand/save无法访问"); - } - - @Override - public ResultBean update(CrmVehicledemandDto dto,String sid){ - return ResultBean.fireFail().setMsg("接口anrui-crm/crmvehicledemand/update无法访问"); - } - - @Override - public ResultBean del(String ids){ - return ResultBean.fireFail().setMsg("接口anrui-crm/crmvehicledemand/del无法访问"); - } - - @Override - public ResultBean fetch(String id){ - ResultBean rb = ResultBean.fireFail(); - return rb.setMsg("接口anrui-crm/crmvehicledemand/fetch无法访问"); - } - - @Override - public ResultBean fetchSid(String sid) { - return null; - } - - @Override - public ResultBean> getVisitListSid(PagerQuery pagerQuery) { - return null; - } - - - @Override - public ResultBean selectBySid(String sid) { - return null; - } - - @Override - public ResultBean delBySid(String sid) { - return null; - } - - @Override - public ResultBean saveVisitDemands(AppCrmVehicledemandDto appCrmVehicledemandDto) { - return null; - } - - @Override - public ResultBean getAppIntendedModel(String sid) { - return null; - } - - @Override - public ResultBean getAppIntendedModelDetailed(String sid) { - return null; - } + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-crm/crmvehicledemand/listPage无法访问"); + } + + @Override + public ResultBean> listAll(CrmVehicledemandQuery query) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-crm/crmvehicledemand/listAll无法访问"); + } + + @Override + public ResultBean> list() { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-crm/crmvehicledemand/list无法访问"); + } + + @Override + public ResultBean save(CrmVehicledemandDto dto) { + return ResultBean.fireFail().setMsg("接口anrui-crm/crmvehicledemand/save无法访问"); + } + + @Override + public ResultBean update(CrmVehicledemandDto dto, String sid) { + return ResultBean.fireFail().setMsg("接口anrui-crm/crmvehicledemand/update无法访问"); + } + + @Override + public ResultBean del(String ids) { + return ResultBean.fireFail().setMsg("接口anrui-crm/crmvehicledemand/del无法访问"); + } + + @Override + public ResultBean fetch(String id) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-crm/crmvehicledemand/fetch无法访问"); + } + + @Override + public ResultBean fetchSid(String sid) { + return null; + } + + @Override + public ResultBean delBySid(String sid) { + return null; + } + + @Override + public ResultBean getAppIntendedModel(String sid) { + return null; + } + + @Override + public ResultBean getAppIntendedModelDetailed(String sid) { + return null; + } + + + //app + + @Override + public ResultBean> getVisitListSid(PagerQuery pagerQuery) { + return null; + } + + @Override + public ResultBean addVisitDemands(AppCrmVehicledemandDto appCrmVehicleDemandDto) { + return null; + } + + @Override + public ResultBean initVisitDemands(String intentionSid) { + return null; + } + + @Override + public ResultBean saveVisitDemands(AppCrmVehicleDemandUpdateDto appCrmVehicleDemandUpdateDto) { + return null; + } + + @Override + public ResultBean intendedModel(String sid) { + return null; + } } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.java index dbb6ff276f..0d22d45b12 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.java @@ -29,6 +29,9 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.anrui.crm.api.crmcustomerfile.AppCrmCustomerTempArchivesVo; +import com.yxt.anrui.crm.api.crmcustomerfile.AppCustomerArchivesDataVo; +import com.yxt.anrui.crm.api.crmfile.CrmFile; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,13 +56,20 @@ import java.util.List; @Mapper public interface CrmCustomerFileMapper extends BaseMapper { - //@Update("update crm_customer_file set name=#{msg} where id=#{id}") - //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); - - IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); - - List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); - - @Select("select * from crm_customer_file") - List selectListVo(); + //@Update("update crm_customer_file set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from crm_customer_file") + List selectListVo(); + + List selectByCustomerSid(@Param("customerSid") String customerSid); + + List selArchivesFileImageBySid(@Param("sid") String sid); + + // 查询数据库是否存在该类型 + Integer selectBySid(@Param("sid") String sid); } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml index 5a4b9586ad..ae4fade2e3 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml @@ -1,20 +1,46 @@ - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileRest.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileRest.java index cc3b504e7f..7147c7fb4e 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileRest.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileRest.java @@ -26,6 +26,7 @@ package com.yxt.anrui.crm.biz.crmcustomerfile; import com.yxt.anrui.crm.api.crmcustomerfile.*; +import com.yxt.anrui.crm.api.crmcustomerfile.AppCrmCustomerTempArchivesDto; import com.yxt.anrui.crm.api.crmfile.CrmFileDto; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -75,4 +76,14 @@ public class CrmCustomerFileRest implements CrmCustomerFileFeign { public ResultBean fetchFileListBySid(String sid) { return crmCustomerFileService.fetchFileListBySid(sid); } + + @Override + public ResultBean initCustomerArchives(String customerSid, String userSid) { + return crmCustomerFileService.initCustomerArchives(customerSid,userSid); + } + + @Override + public ResultBean saveCustomerArchives(AppCrmCustomerTempArchivesDto dto) { + return crmCustomerFileService.saveCustomerArchives(dto); + } } diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java index ed3b89e0f2..267c889718 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java @@ -30,15 +30,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.base.api.basedatalist.BaseDataListFeign; import com.yxt.anrui.base.api.basedatalist.BaseDataListVo; -import com.yxt.anrui.base.api.commonappendix.CommonAppendix; -import com.yxt.anrui.base.api.commonappendix.CommonAppendixFeign; import com.yxt.anrui.base.api.commonappendix.CommonAttachTypeEnum; import com.yxt.anrui.crm.api.crmcustomerfile.*; +import com.yxt.anrui.crm.api.crmcustomerfile.AppCrmCustomerTempArchivesDto; +import com.yxt.anrui.crm.api.crmcustomerfile.AppCustomerArchivesDataDto; import com.yxt.anrui.crm.api.crmfile.CrmFile; import com.yxt.anrui.crm.api.crmfile.CrmFileDetailsVo; import com.yxt.anrui.crm.api.crmfile.CrmFileDto; import com.yxt.anrui.crm.biz.crmfile.CrmFileService; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.portal.api.sysuser.app.AppUserOrgInfoVo; import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.utils.DateUtils; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -49,6 +52,9 @@ import com.yxt.common.core.vo.PagerVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -68,121 +74,213 @@ import java.util.List; @Service public class CrmCustomerFileService extends MybatisBaseService { - @Autowired - BaseDataListFeign baseDataListFeign; - @Autowired - private CrmFileService crmFileService; - @Autowired - private FileUploadComponent fileUploadComponent; - - public PagerVo listPage(PagerQuery pq) { - CrmCustomerFileQuery query = pq.getParams(); - QueryWrapper qw = createQueryWrapper(query); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPage(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } - public List listAll(CrmCustomerFileQuery query) { - QueryWrapper qw = createQueryWrapper(query); - return baseMapper.selectList(qw); - } - private QueryWrapper createQueryWrapper(CrmCustomerFileQuery query) { - // todo: 这里根据具体业务调整查询条件 - // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); - QueryWrapper qw = new QueryWrapper<>(); - - qw.eq("linkSid", query.getCustomerSid()); - if (StringUtils.isNotBlank(query.getFileName())) { - qw.like("fileName", query.getFileName()); - } - if (StringUtils.isNotBlank(query.getAttachType())) { - qw.like("attachType", query.getAttachType()); - } - return qw; - } - - public PagerVo listPageVo(PagerQuery pq) { - QueryWrapper qw = createQueryWrapper(pq.getParams()); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPageVo(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - List records = p.getRecords(); - if (records.size() == 0){ - fetchByDataTypeKey(pq.getParams().getCustomerSid()); - IPage paging = baseMapper.selectPageVo(page, qw); - PagerVo g = PagerUtil.pageToVo(paging, null); - return g; - } - return p; - } - - /** - * 根据资料类别key查询资料清单列表并保存到客户资料初始化表中 - */ - private void fetchByDataTypeKey(String customerSid) { - ResultBean> bean = baseDataListFeign.selectDataList("客户"); - List data = bean.getData(); - for (BaseDataListVo datum : data) { - CrmCustomerFile crmCustomerFile = new CrmCustomerFile(); - datum.fromEntity(crmCustomerFile); - crmCustomerFile.setLinkSid(customerSid); - this.save(crmCustomerFile); - } - } - - public List listAllVo(CrmCustomerFileQuery query) { - QueryWrapper qw = createQueryWrapper(query); - return baseMapper.selectListAllVo(qw); - } - - public List listVo() { - return baseMapper.selectListVo(); - } - - public CrmCustomerFileVo fetchByIdVo(String id){ - CrmCustomerFile entity = this.fetchById(id); - CrmCustomerFileVo vo = new CrmCustomerFileVo(); - BeanUtil.copyProperties(entity, vo); - return vo; - } - - public ResultBean fetchFileListBySid(String sid) { - ResultBean rb = ResultBean.fireFail(); - CrmCustomerFileListVo crmCustomerFileListVo = new CrmCustomerFileListVo(); - CrmCustomerFile crmCustomerFile = this.fetchBySid(sid); - crmCustomerFileListVo.setAttachType(crmCustomerFile.getAttachType()); - crmCustomerFileListVo.setFileName(crmCustomerFile.getFileName()); - List crmFileVos = crmFileService.fetchByLinkSid(sid); - if (crmFileVos.size() == 0){ - return rb.success().setData(crmCustomerFileListVo); - } - for (CrmFileDetailsVo crmFileVo : crmFileVos) { - String fileName = crmFileVo.getFileName(); - fileName=fileName.substring(0,fileName.lastIndexOf('_')); - crmFileVo.setFileName(fileName); - } - crmCustomerFileListVo.setCrmFileDetailsVoList(crmFileVos); - return rb.success().setData(crmCustomerFileListVo); - } - - public ResultBean saveCustomerFile(String staffName,String staffSid,String sid, List crmFileDtos) { - ResultBean rb = ResultBean.fireFail(); - for (CrmFileDto crmFileDto : crmFileDtos) { - String filePath = crmFileDto.getFilePath(); - if (filePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { - filePath = filePath.replace(fileUploadComponent.getUrlPrefix(), ""); - } - CrmFile crmFile = new CrmFile(); - crmFileDto.fillEntity(crmFile); - crmFile.setFilePath(filePath); - crmFile.setLinkSid(sid); - crmFile.setCreateBySid(staffSid); - crmFile.setCreateTime(new Date()); - crmFile.setAttachType(CommonAttachTypeEnum.CUSTOMER_FILE.getAttachType()); - crmFile.setName(staffName); - crmFileService.save(crmFile); - } - return rb.success(); - } + @Autowired + BaseDataListFeign baseDataListFeign; + @Autowired + private CrmFileService crmFileService; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + SysUserFeign sysUserFeign; + + public PagerVo listPage(PagerQuery pq) { + CrmCustomerFileQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listAll(CrmCustomerFileQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } + + private QueryWrapper createQueryWrapper(CrmCustomerFileQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + + qw.eq("linkSid", query.getCustomerSid()); + if (StringUtils.isNotBlank(query.getFileName())) { + qw.like("fileName", query.getFileName()); + } + if (StringUtils.isNotBlank(query.getAttachType())) { + qw.like("attachType", query.getAttachType()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + QueryWrapper qw = createQueryWrapper(pq.getParams()); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = p.getRecords(); + if (records.size() == 0) { + fetchByDataTypeKey(pq.getParams().getCustomerSid()); + IPage paging = baseMapper.selectPageVo(page, qw); + PagerVo g = PagerUtil.pageToVo(paging, null); + return g; + } + return p; + } + + /** + * 根据资料类别key查询资料清单列表并保存到客户资料初始化表中 + */ + private void fetchByDataTypeKey(String customerSid) { + ResultBean> bean = baseDataListFeign.selectDataList("客户"); + List data = bean.getData(); + for (BaseDataListVo datum : data) { + CrmCustomerFile crmCustomerFile = new CrmCustomerFile(); + datum.fromEntity(crmCustomerFile); + crmCustomerFile.setLinkSid(customerSid); + this.save(crmCustomerFile); + } + } + + public List listAllVo(CrmCustomerFileQuery query) { + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectListAllVo(qw); + } + + public List listVo() { + return baseMapper.selectListVo(); + } + + public CrmCustomerFileVo fetchByIdVo(String id) { + CrmCustomerFile entity = this.fetchById(id); + CrmCustomerFileVo vo = new CrmCustomerFileVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public ResultBean fetchFileListBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + CrmCustomerFileListVo crmCustomerFileListVo = new CrmCustomerFileListVo(); + CrmCustomerFile crmCustomerFile = this.fetchBySid(sid); + crmCustomerFileListVo.setAttachType(crmCustomerFile.getAttachType()); + crmCustomerFileListVo.setFileName(crmCustomerFile.getFileName()); + List crmFileVos = crmFileService.fetchByLinkSid(sid); + if (crmFileVos.size() == 0) { + return rb.success().setData(crmCustomerFileListVo); + } + for (CrmFileDetailsVo crmFileVo : crmFileVos) { + String fileName = crmFileVo.getFileName(); + fileName = fileName.substring(0, fileName.lastIndexOf('_')); + crmFileVo.setFileName(fileName); + } + crmCustomerFileListVo.setCrmFileDetailsVoList(crmFileVos); + return rb.success().setData(crmCustomerFileListVo); + } + + public ResultBean saveCustomerFile(String staffName, String staffSid, String sid, List crmFileDtos) { + ResultBean rb = ResultBean.fireFail(); + for (CrmFileDto crmFileDto : crmFileDtos) { + String filePath = crmFileDto.getFilePath(); + if (filePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { + filePath = filePath.replace(fileUploadComponent.getUrlPrefix(), ""); + } + CrmFile crmFile = new CrmFile(); + crmFileDto.fillEntity(crmFile); + crmFile.setFilePath(filePath); + crmFile.setLinkSid(sid); + crmFile.setCreateBySid(staffSid); + crmFile.setCreateTime(new Date()); + crmFile.setAttachType(CommonAttachTypeEnum.CUSTOMER_FILE.getAttachType()); + crmFile.setName(staffName); + crmFileService.save(crmFile); + } + return rb.success(); + } + + public ResultBean initCustomerArchives(String customerSid, String userSid) { + ResultBean rb = ResultBean.fireFail(); + fetchByDataTypeKey(customerSid); + AppCrmCustomerTempArchivesVo vo = new AppCrmCustomerTempArchivesVo(); + List dataVos = baseMapper.selectByCustomerSid(customerSid); + for (AppCustomerArchivesDataVo appCustomerArchivesDataVo : dataVos) { + String createTime = appCustomerArchivesDataVo.getCreateTime(); + Date date = DateUtils.dateStrConvertDate(createTime, "yyyy-MM-dd HH:mm:ss"); + long time = date.getTime(); + String s = String.valueOf(time); + appCustomerArchivesDataVo.setLastUploadTime(s); + String sid = appCustomerArchivesDataVo.getSid(); + List listVo = baseMapper.selArchivesFileImageBySid(sid); + List list = new ArrayList<>(); + for (CrmFile crmFile : listVo) { + String url = fileUploadComponent.getUrlPrefix() + crmFile.getFilePath(); + list.add(url); + } + appCustomerArchivesDataVo.setFiles(list); + } + return rb.success().setData(vo); + } + + public ResultBean saveCustomerArchives(AppCrmCustomerTempArchivesDto dto) { + ResultBean rb = ResultBean.fireFail(); + AppUserOrgInfoVo data = sysUserFeign.getUserOrgInfoByUserSid(dto.getUserSid()).getData(); + List archivesDataDtos = dto.getData(); + for (AppCustomerArchivesDataDto datum : archivesDataDtos) { + if (datum.isChange() == true) { + // 先查询库里key集合是否为空 ? + List dataVos = baseMapper.selectByCustomerSid(dto.getCustomerSid()); + for (AppCustomerArchivesDataVo appCustomerArchivesDataVo : dataVos) { + String sid = appCustomerArchivesDataVo.getSid(); + Integer count = baseMapper.selectBySid(sid); + if (count <= 0) { + //不存在 直接新增保存 并更新时间为当前提交的时间 + List files = datum.getFiles(); + for (String file : files) { + if (file.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { + file = file.replace(fileUploadComponent.getUrlPrefix(), ""); + } + CrmFile crmFile = new CrmFile(); + crmFile.setFilePath(file); + crmFile.setLinkSid(sid); + crmFile.setCreateBySid(data.getStaffSid()); + crmFile.setCreateTime(new Date()); + crmFile.setAttachType(CommonAttachTypeEnum.CUSTOMER_FILE.getAttachType()); + crmFile.setName(data.getStaffName()); + crmFileService.save(crmFile); + } + + } else { + // 存在 需要判断是否是当天的 如果不是当天的 false + String createTime = appCustomerArchivesDataVo.getCreateTime(); + Date date = DateUtils.dateStrConvertDate(createTime, "yyyy-MM-dd"); + boolean b = DateUtils.compTime(date, new Date()); + if (b) { + //如果是当天的 并新增 提交时间为当前提交时间 + List files = datum.getFiles(); + for (String file : files) { + //删除之前的附件并且删除服务器上的 + crmFileService.deleteFilesOss(file); + //新增 + if (file.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { + file = file.replace(fileUploadComponent.getUrlPrefix(), ""); + } + CrmFile crmFile = new CrmFile(); + crmFile.setFilePath(file); + crmFile.setLinkSid(sid); + crmFile.setCreateBySid(data.getStaffSid()); + crmFile.setCreateTime(new Date()); + crmFile.setAttachType(CommonAttachTypeEnum.CUSTOMER_FILE.getAttachType()); + crmFile.setName(data.getStaffName()); + crmFileService.save(crmFile); + } + } else { + return rb.fail().setMsg("提示:身份证是在 " + appCustomerArchivesDataVo.getCreateTime() + "日上传的,仅支持当天进行修改删除"); + } + + } + } + } + } + return rb.success(); + } + + } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.java index 04207cb23a..280e99b381 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.java @@ -103,4 +103,12 @@ public interface CrmCustomerTempMapper extends BaseMapper { * @return */ CrmCustomerTempVo selectByWx(@Param("orgSid") String orgSid, @Param("staffSid") String staffSid, @Param("weixin") String weixin); + + /** + * 获取客户基础信息 + * + * @param sid + * @return + */ + AppCrmCustomerTempBasicsDetailsVo customerTempDetailsBySid(String sid); } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml index 2c4d332c68..be8f84654e 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml @@ -85,9 +85,18 @@ @@ -121,4 +130,30 @@ and staffSid = #{staffSid} and weixin = #{weixin} + + \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java index d735e27a9c..3c1bbc3835 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java @@ -201,4 +201,16 @@ public class CrmCustomerTempRest implements CrmCustomerTempFeign { return crmCustomerTempService.getAppCustomerTempDetailsBySid(sid); } + /** + * 获取客户基础信息 + * + * @param sid + * @return + */ + @Override + public ResultBean customerTempDetailsBySid(String sid) { + AppCrmCustomerTempBasicsDetailsVo vo = crmCustomerTempService.customerTempDetailsBySid(sid); + return new ResultBean().success().setData(vo); + } + } diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java index 00dd57f15b..0e6f9a257a 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java @@ -647,7 +647,7 @@ public class CrmCustomerTempService extends MybatisBaseService { List fetchByCustomerSid(String customerSid); - List selectVisitSid(String visitSid); - List selectCustomerSid(String customerSid); - AppCrmVehicledemandDetailsVo selectBySid(String sid); - - IPage getVisitListSid(IPage page, @Param("visitSid") String visitSid); @Update("update crm_vehicledemand set states = 0 where sid = #{sid}") int delBySid(String sid); @@ -60,8 +56,35 @@ public interface CrmVehicledemandMapper extends BaseMapper { List fetchAllByCustomerSid(String sid); @Select("select * from crm_vehicledemand where modelSid = #{modelSid} and customerSid = #{customerSid} and states = 1") - CrmVehicledemandVo fetchYXByModelSid(@Param("modelSid") String modelSid,@Param("customerSid") String customerSid); + CrmVehicledemandVo fetchYXByModelSid(@Param("modelSid") String modelSid, @Param("customerSid") String customerSid); @Select("select * from crm_vehicledemand where modelSid = #{modelSid} ORDER BY createTime DESC LIMIT 1") CrmVehicledemandVo fetchByModelSid(String modelSid); + + + /** + * 获取意向车型列表 + * + * @param page + * @param qw + * @return + */ + IPage getVisitListSid(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + + /** + * 初始化意向车型 + * + * @param intentionSid + * @return + */ + AppCrmVehicledemandDetailsVo selectBySid(@Param("intentionSid") String intentionSid); + + /** + * 意向车型详情 + * + * @param sid + * @return + */ + AppCrmVehicleDemandParticularsVo intendedModel(@Param("sid") String sid); } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml index c54809633d..765657d7ad 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml @@ -35,31 +35,6 @@ AND cvcd.states = 1 - - - + + + + + + + + + \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandRest.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandRest.java index 4ed5654670..d900e3257a 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandRest.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandRest.java @@ -1,10 +1,6 @@ package com.yxt.anrui.crm.biz.crmvehicledemand; -import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.yxt.anrui.base.api.basevehiclemodel.AppVehicleModelBySidVo; -import com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModelFeign; -import com.yxt.anrui.crm.api.crmcustomertemp.AppCrmCustomerTempVo; import com.yxt.anrui.crm.api.crmvehicledemand.*; import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; @@ -91,21 +87,6 @@ public class CrmVehicledemandRest implements CrmVehicledemandFeign { return rb.success().setData(vo); } - @Override - public ResultBean> getVisitListSid(PagerQuery pagerQuery) { - PagerVo page = new PagerVo<>(); - IPage iPage = crmVehicledemandService.getVisitListSid(pagerQuery); - PagerVo pagerVo = PagerUtil.pageToVo(iPage, page); - return new ResultBean>().success().setData(pagerVo); - } - - - @Override - public ResultBean selectBySid(String sid) { - AppCrmVehicledemandDetailsVo vos = crmVehicledemandService.selectBySid(sid); - return new ResultBean().success().setData(vos); - } - @Override public ResultBean delBySid(String sid) { ResultBean rb = ResultBean.fireFail(); @@ -117,12 +98,6 @@ public class CrmVehicledemandRest implements CrmVehicledemandFeign { } - @Override - public ResultBean saveVisitDemands(AppCrmVehicledemandDto appCrmVehicledemandDto) { - ResultBean rb = ResultBean.fireFail(); - crmVehicledemandService.saveVisitDemands(appCrmVehicledemandDto); - return rb.success(); - } @Override public ResultBean getAppIntendedModel(String sid) { @@ -135,4 +110,68 @@ public class CrmVehicledemandRest implements CrmVehicledemandFeign { AppIntendedModelDetailedVo vo = crmVehicledemandService.getAppIntendedModelDetailed(sid); return new ResultBean().success().setData(vo); } + + /** + * 获取意向车型列表 + * + * @param pagerQuery + * @return + */ + @Override + public ResultBean> getVisitListSid(PagerQuery pagerQuery) { + PagerVo page = new PagerVo<>(); + IPage iPage = crmVehicledemandService.getVisitListSid(pagerQuery); + PagerVo pagerVo = PagerUtil.pageToVo(iPage, page); + return new ResultBean>().success().setData(pagerVo); + } + + /** + * 新增意向车型 + * + * @param appCrmVehicleDemandDto + * @return + */ + @Override + public ResultBean addVisitDemands(AppCrmVehicledemandDto appCrmVehicleDemandDto) { + ResultBean rb = ResultBean.fireFail(); + crmVehicledemandService.addVisitDemands(appCrmVehicleDemandDto); + return rb.success(); + } + + /** + * 初始化意向车型 + * + * @param intentionSid + * @return + */ + @Override + public ResultBean initVisitDemands(String intentionSid) { + AppCrmVehicledemandDetailsVo vo = crmVehicledemandService.initVisitDemands(intentionSid); + return new ResultBean().success().setData(vo); + } + + /** + * 修改意向车型 + * + * @param appCrmVehicleDemandUpdateDto + * @return + */ + @Override + public ResultBean saveVisitDemands(AppCrmVehicleDemandUpdateDto appCrmVehicleDemandUpdateDto) { + ResultBean rb = ResultBean.fireFail(); + crmVehicledemandService.saveVisitDemands(appCrmVehicleDemandUpdateDto); + return rb.success(); + } + + /** + * 意向车型详情 + * + * @param sid + * @return + */ + @Override + public ResultBean intendedModel(String sid) { + AppCrmVehicleDemandParticularsVo vo = crmVehicledemandService.intendedModel(sid); + return new ResultBean().success().setData(vo); + } } diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandService.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandService.java index 3f991eb748..0545f1b3a1 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandService.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandService.java @@ -4,6 +4,8 @@ import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModelFeign; +import com.yxt.anrui.base.api.basevehmodelconfig.AppModelVeDetailVo; +import com.yxt.anrui.base.api.basevehmodelconfig.BaseVehmodelConfigFeign; import com.yxt.anrui.crm.api.crmfindemand.CrmFindemand; import com.yxt.anrui.crm.api.crmfindemand.CrmFindemandDto; import com.yxt.anrui.crm.api.crmfindemand.CrmFindemandVo; @@ -19,10 +21,12 @@ import com.yxt.common.core.vo.PagerVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.UUID; /** * Project: anrui-crm(客户管理)
@@ -43,6 +47,9 @@ public class CrmVehicledemandService extends MybatisBaseService pagging = baseMapper.selectPageVo(page, qw); PagerVo p = PagerUtil.pageToVo(pagging, null); List records = pagging.getRecords(); - if (records.size() > 0){ + if (records.size() > 0) { for (CrmVehicledemandVo record : records) { String createTime = record.getCreateTime(); String date = createTime.substring(0, 10); @@ -149,37 +155,6 @@ public class CrmVehicledemandService extends MybatisBaseService getVisitListSid(PagerQuery pagerQuery) { - String visitSid = pagerQuery.getParams().getVisitSid(); - IPage page = PagerUtil.queryToPage(pagerQuery); - IPage iPage = baseMapper.getVisitListSid(page, visitSid); - return iPage; - } - - public int delBySid(String sid) { - return baseMapper.delBySid(sid); - } - - public ResultBean saveVisitDemands(AppCrmVehicledemandDto appCrmVehicledemandDto) { - ResultBean rb = ResultBean.fireFail(); - String states = "1"; - appCrmVehicledemandDto.setStates(states); - CrmVehicledemand entity = new CrmVehicledemand(); - appCrmVehicledemandDto.fillEntity(entity); - int count = baseMapper.insert(entity); - if (count > 0) { - return rb.success(); - } - return rb.fail(); - } - public AppIntendedModelVo getAppIntendedModel(String sid) { AppIntendedModelVo vo = baseMapper.getAppIntendedModel(sid); String customerSid = vo.getCustomerSid(); @@ -197,6 +172,10 @@ public class CrmVehicledemandService extends MybatisBaseService getVisitListSid(PagerQuery pagerQuery) { + IPage page = PagerUtil.queryToPage(pagerQuery); + QueryWrapper qw = createVisitListQueryWrapper(pagerQuery.getParams()); + IPage iPage = baseMapper.getVisitListSid(page, qw); + return iPage; + } + + private QueryWrapper createVisitListQueryWrapper(AppCrmVehicledemandQuery pagerQuery) { + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(pagerQuery.getVisitSid())) { + qw.eq("cv.sid", pagerQuery.getVisitSid()); + } + return qw; + } + + /** + * 手机端-新增意向车型(新) + * + * @param appCrmVehicleDemandDto + * @return + */ + @Transactional(rollbackFor = Exception.class) + public ResultBean addVisitDemands(AppCrmVehicledemandDto appCrmVehicleDemandDto) { + ResultBean rb = ResultBean.fireFail(); + String modelSid = appCrmVehicleDemandDto.getModelSid(); + String configSid = appCrmVehicleDemandDto.getConfigSid(); + String userSid = appCrmVehicleDemandDto.getUserSid(); + AppModelVeDetailVo data = baseVehmodelConfigFeign.getAppIntentionVehicleVo(modelSid, configSid, userSid).getData(); + CrmVehicledemand entity = new CrmVehicledemand(); + entity.setCustomerSid(UUID.randomUUID().toString()); + entity.setModelSid(modelSid); + entity.setModelName(data.getModelName()); + entity.setBrandSid(data.getBrandSid()); + entity.setBrandName(data.getBrandName()); + entity.setSaleReferencePrice(data.getSaleReferencePrice()); + appCrmVehicleDemandDto.fillEntity(entity); + baseMapper.insert(entity); + return rb.success(); + } + + /** + * 初始化意向车型 + * + * @param intentionSid + * @return + */ + public AppCrmVehicledemandDetailsVo initVisitDemands(String intentionSid) { + AppCrmVehicledemandDetailsVo appCrmVehicledemandDetailsVo = baseMapper.selectBySid(intentionSid); + return appCrmVehicledemandDetailsVo; + } + + /** + * 修改意向车型 + * + * @param appCrmVehicleDemandUpdateDto + */ + @Transactional(rollbackFor = Exception.class) + public ResultBean saveVisitDemands(AppCrmVehicleDemandUpdateDto appCrmVehicleDemandUpdateDto) { + ResultBean rb = ResultBean.fireFail(); + String sid = appCrmVehicleDemandUpdateDto.getIntentionSid(); + CrmVehicledemand entity = fetchBySid(sid); + entity.setPurchaseMethod(appCrmVehicleDemandUpdateDto.getPurchaseMethod()); + entity.setPurchaseMethodValue(appCrmVehicleDemandUpdateDto.getPurchaseMethodValue()); + entity.setRemarks(appCrmVehicleDemandUpdateDto.getRemarks()); + entity.setNumber(appCrmVehicleDemandUpdateDto.getNumber()); + entity.setEstimatedPickupDate(appCrmVehicleDemandUpdateDto.getDate()); + baseMapper.updateById(entity); + return rb.success(); + } + + /** + * 意向车型详情 + * + * @param sid + * @return + */ + public AppCrmVehicleDemandParticularsVo intendedModel(String sid) { + AppCrmVehicleDemandParticularsVo appCrmVehicleDemandParticularsVo = baseMapper.intendedModel(sid); + return appCrmVehicleDemandParticularsVo; + } } \ No newline at end of file diff --git a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvisit/CrmVisitRest.java b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvisit/CrmVisitRest.java index 92805d0776..dee12aa829 100644 --- a/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvisit/CrmVisitRest.java +++ b/anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvisit/CrmVisitRest.java @@ -108,7 +108,7 @@ public class CrmVisitRest implements CrmVisitFeign { } //往跟进记录和车型需求关联表中添加 List crmVehicledemandVos = crmVehicledemandService.fetchByCustomerSid(customerSid); - if (crmVehicledemandVos.size() > 0){ + if (crmVehicledemandVos.size() > 0) { for (CrmVehicledemandVo crmVehicledemandVo : crmVehicledemandVos) { CrmVisitDemand crmVisitDemand = new CrmVisitDemand(); crmVisitDemand.setVisitSid(entity.getSid()); @@ -204,7 +204,8 @@ public class CrmVisitRest implements CrmVisitFeign { @Override public ResultBean getAppVisitListByCustomerSid(String userSid, String customerSid) { - return new ResultBean().success().setData(crmVisitService.getAppVisitListByCustomerSid(userSid, customerSid)); + AppCrmVisitListVo vo = crmVisitService.getAppVisitListByCustomerSid(userSid, customerSid); + return new ResultBean().success().setData(vo); } @Override @@ -223,8 +224,8 @@ public class CrmVisitRest implements CrmVisitFeign { } @Override - public ResultBean updateAppendixUrl(String s,String sid) { - crmVisitService.updateAppendixUrl(s,sid); + public ResultBean updateAppendixUrl(String s, String sid) { + crmVisitService.updateAppendixUrl(s, sid); return ResultBean.fireSuccess(); } } From d72b80929bc7cad5dcacc100cb54fb916e6ee35b Mon Sep 17 00:00:00 2001 From: God <10745413@qq.com> Date: Wed, 13 Apr 2022 14:20:43 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E6=AC=BE=E9=A1=B9=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5=E6=8E=A5=E5=8F=A3=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commonappendix/CommonAttachTypeEnum.java | 4 +- .../BusCollectionConfirmationAppendixDto.java | 42 ++++++ .../BusCollectionConfirmationDetailsVo.java | 17 +-- .../BusCollectionConfirmationDto.java | 6 + .../BusCollectionConfirmationVo.java | 2 + .../BusCollectionConfirmationRest.java | 4 +- .../BusCollectionConfirmationService.java | 127 ++++++++++++------ .../BusSelectedReceivablesDetailedMapper.java | 7 + ...BusSelectedReceivablesDetailedService.java | 8 ++ 9 files changed, 164 insertions(+), 53 deletions(-) create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationAppendixDto.java diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commonappendix/CommonAttachTypeEnum.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commonappendix/CommonAttachTypeEnum.java index d544b52f76..188c07750c 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commonappendix/CommonAttachTypeEnum.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commonappendix/CommonAttachTypeEnum.java @@ -42,7 +42,9 @@ public enum CommonAttachTypeEnum { ADVANCE_GIN("0005", "提前开票附件"), CUSTOMER_FILE("0006", "客户资料附件"), ARREARS("0007", "欠款提车附件"), - SCENESIGN("0008", "现场签署附件"); + SCENESIGN("0008", "现场签署附件"), + PAYMENT_VOUCHER("0009", "打款凭证附件"), + REMITTAN_CECONFIRMATION("0010", "汇款确认书附件"); /** * 附件类型 */ diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationAppendixDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationAppendixDto.java new file mode 100644 index 0000000000..e28da55338 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationAppendixDto.java @@ -0,0 +1,42 @@ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui-base(安瑞基础信息模块)
+ * File: CommonAppendixDto.java
+ * Class: com.yxt.anrui.base.api.commonappendix.CommonAppendixDto
+ * Description: 公共附件表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-10-28 08:59:25
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "公共附件表 数据传输对象", description = "公共附件表 数据传输对象") +@Data +public class BusCollectionConfirmationAppendixDto implements Dto { + + @ApiModelProperty("上传人sid") + private String createBySid; + @ApiModelProperty("上传人姓名") + private String name; + @ApiModelProperty("文件名") + private String fileName; + @ApiModelProperty("文件类型") + private String fileType; + @ApiModelProperty("关联业务对象sid") + private String linkSid; + @ApiModelProperty("附件类型") + private String attachType; + @ApiModelProperty("文件大小") + private String fileSize; + @ApiModelProperty("文件的路径") + private String filePath; +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java index b38c8ec731..e4386a5d11 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDetailsVo.java @@ -26,11 +26,15 @@ package com.yxt.anrui.buscenter.api.buscollectionconfirmation; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedDto; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedVo; import com.yxt.common.core.vo.Vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * Project: anrui-buscenter(销售相关)
* File: BusCollectionConfirmationVo.java
@@ -51,37 +55,28 @@ public class BusCollectionConfirmationDetailsVo implements Vo { @ApiModelProperty("创建人接口") private String createByName; // 创建人接口 - @ApiModelProperty("收款日期") private String collectionDate; // 收款日期 - @ApiModelProperty("收款银行") private String collectionBank; // 收款银行 - @ApiModelProperty("收款银行账号") private String collectionBankNum; // 收款银行账号 - @ApiModelProperty("收款方式key") private String collectionTypeKey; // 收款方式key - @ApiModelProperty("收款方式value") private String collectionTypeValue; // 收款方式value - @ApiModelProperty("付款方名称") private String payerName; // 付款方名称 - @ApiModelProperty("收款金额") private String collectionMoney; // 收款金额 - @ApiModelProperty("打款凭证Url") private String paymentVoucherUrl; // 打款凭证Url - @ApiModelProperty("汇款确认书Url") private String remittanceConfirmationUrl; // 汇款确认书Url - @ApiModelProperty("余额") private String balance; // 余额 - @ApiModelProperty("分公司sid") private String useOrgSid; // 分公司sid + @ApiModelProperty("已选应收款项明细") + private List busSelectedReceivablesDetailedVos; // 已选应收款项明细 } diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java index e61590b140..6f8c3aa680 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationDto.java @@ -54,6 +54,8 @@ public class BusCollectionConfirmationDto implements Dto { @ApiModelProperty("收款确认单sid") private String sid; // 收款确认单sid + @ApiModelProperty("业务员sid") + private String staffSid; // 业务员sid @ApiModelProperty("创建人接口") private String createByName; // 创建人接口 @ApiModelProperty("收款日期") @@ -80,4 +82,8 @@ public class BusCollectionConfirmationDto implements Dto { private String useOrgSid; // 分公司sid @ApiModelProperty("已选应收款项明细") private List busSelectedReceivablesDetailedDtos; // 已选应收款项明细 + @ApiModelProperty("打款凭证附件") + private List paymentVoucherAppendixs; // 打款凭证附件 + @ApiModelProperty("汇款确认书附件") + private List remittanceConfirmationAppendixs; // 汇款确认书附件 } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java index 5f4b4a41f9..dd48fba2a4 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationVo.java @@ -49,6 +49,8 @@ import lombok.Data; @Data public class BusCollectionConfirmationVo implements Vo { + @ApiModelProperty("收款确认单sid") + private String sid; // 收款确认单sid @ApiModelProperty("收款日期") private String collectionDate; // 收款日期 @ApiModelProperty("收款银行") diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java index 7c0f8fcf47..6716c4f444 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java @@ -77,9 +77,7 @@ public class BusCollectionConfirmationRest implements BusCollectionConfirmationF @ApiOperation("根据sid批量删除") @PostMapping("/delBySids") public ResultBean delBySids(@RequestBody String[] sids){ - ResultBean rb = ResultBean.fireFail(); - busCollectionConfirmationService.delBySids(sids); - return rb.success(); + return busCollectionConfirmationService.delAllBySids(sids); } @Override diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java index c3635e05c1..f19c4c613f 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java @@ -28,7 +28,16 @@ package com.yxt.anrui.buscenter.biz.buscollectionconfirmation; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.base.api.commonappendix.CommonAppendix; +import com.yxt.anrui.base.api.commonappendix.CommonAppendixDto; +import com.yxt.anrui.base.api.commonappendix.CommonAppendixFeign; +import com.yxt.anrui.base.api.commonappendix.CommonAttachTypeEnum; import com.yxt.anrui.buscenter.api.buscollectionconfirmation.*; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailed; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedDto; +import com.yxt.anrui.buscenter.api.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedVo; +import com.yxt.anrui.buscenter.biz.busselectedreceivablesdetailed.BusSelectedReceivablesDetailedService; +import com.yxt.common.base.config.component.FileUploadComponent; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -36,6 +45,7 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -55,18 +65,14 @@ import java.util.List; */ @Service public class BusCollectionConfirmationService extends MybatisBaseService { - public PagerVo listPage(PagerQuery pq) { - BusCollectionConfirmationQuery query = pq.getParams(); - QueryWrapper qw = createQueryWrapper(query); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPage(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } - public List listAll(BusCollectionConfirmationQuery query) { - QueryWrapper qw = createQueryWrapper(query); - return baseMapper.selectList(qw); - } + + @Autowired + private BusSelectedReceivablesDetailedService busSelectedReceivablesDetailedService; + @Autowired + private CommonAppendixFeign commonAppendixFeign; + @Autowired + private FileUploadComponent fileUploadComponent; + private QueryWrapper createQueryWrapper(BusCollectionConfirmationQuery query) { // todo: 这里根据具体业务调整查询条件 // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); @@ -96,39 +102,84 @@ public class BusCollectionConfirmationService extends MybatisBaseService listAllVo(BusCollectionConfirmationQuery query) { - QueryWrapper qw = createQueryWrapper(query); - return baseMapper.selectListAllVo(qw); - } - - public List listVo() { - return baseMapper.selectListVo(); - } - - public void saveOrUpdateDto(BusCollectionConfirmationDto dto){ - BusCollectionConfirmation entity = new BusCollectionConfirmation(); - dto.fillEntity(entity); - this.saveOrUpdate(entity); - } - - public BusCollectionConfirmationVo fetchByIdVo(String id){ - BusCollectionConfirmation entity = this.fetchById(id); - BusCollectionConfirmationVo vo = new BusCollectionConfirmationVo(); - BeanUtil.copyProperties(entity, vo); - return vo; - } - public ResultBean saveOrUpdateAllDto(BusCollectionConfirmationDto dto) { ResultBean rb = ResultBean.fireFail(); + BusCollectionConfirmation busCollectionConfirmation = new BusCollectionConfirmation(); + List busSelectedReceivablesDetailedDtos = dto.getBusSelectedReceivablesDetailedDtos(); + CommonAppendixDto commonAppendixDto = new CommonAppendixDto(); + List paymentVoucherAppendixs = dto.getPaymentVoucherAppendixs(); + List remittanceConfirmationAppendixs = dto.getRemittanceConfirmationAppendixs(); + String sid1 = busCollectionConfirmation.getSid(); String sid = dto.getSid(); - if (StringUtils.isBlank(sid)){ - + if (StringUtils.isBlank(sid)){//新增 + BeanUtil.copyProperties(dto,busCollectionConfirmation); + busCollectionConfirmation.setSid(sid1); + String payFilePath = ""; + String remFilePath = ""; + for (BusCollectionConfirmationAppendixDto paymentVoucherAppendix : paymentVoucherAppendixs) { + BeanUtil.copyProperties(paymentVoucherAppendix,commonAppendixDto); + payFilePath = commonAppendixDto.getFilePath(); + if (payFilePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { + payFilePath = payFilePath.replace(fileUploadComponent.getUrlPrefix(), ""); + commonAppendixDto.setLinkSid(sid1); + commonAppendixDto.setFilePath(payFilePath); + commonAppendixDto.setCreateBySid(dto.getStaffSid()); + commonAppendixDto.setAttachType(CommonAttachTypeEnum.PAYMENT_VOUCHER.getAttachType()); + commonAppendixFeign.save(commonAppendixDto); + } + payFilePath += payFilePath + ","; + } + busCollectionConfirmation.setPaymentVoucherUrl(payFilePath.substring(0, payFilePath.length() - 1)); + for (BusCollectionConfirmationAppendixDto remittanceConfirmationAppendix : remittanceConfirmationAppendixs) { + BeanUtil.copyProperties(remittanceConfirmationAppendix,commonAppendixDto); + remFilePath = commonAppendixDto.getFilePath(); + if (remFilePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { + remFilePath = remFilePath.replace(fileUploadComponent.getUrlPrefix(), ""); + commonAppendixDto.setLinkSid(sid1); + commonAppendixDto.setFilePath(remFilePath); + commonAppendixDto.setCreateBySid(dto.getStaffSid()); + commonAppendixDto.setAttachType(CommonAttachTypeEnum.PAYMENT_VOUCHER.getAttachType()); + commonAppendixFeign.save(commonAppendixDto); + } + remFilePath += remFilePath + ","; + } + busCollectionConfirmation.setRemittanceConfirmationUrl(remFilePath.substring(0, remFilePath.length() - 1)); + save(busCollectionConfirmation); + for (BusSelectedReceivablesDetailedDto busSelectedReceivablesDetailedDto : busSelectedReceivablesDetailedDtos) { + BusSelectedReceivablesDetailed busSelectedReceivablesDetailed = new BusSelectedReceivablesDetailed(); + BeanUtil.copyProperties(busSelectedReceivablesDetailedDto,busSelectedReceivablesDetailed); + busSelectedReceivablesDetailed.setCollSid(sid1); + busSelectedReceivablesDetailedService.save(busSelectedReceivablesDetailed); + } + return rb.success().setMsg("添加成功"); + } + updateBySid(dto,sid); + busSelectedReceivablesDetailedService.deleteByCollSid(sid); + for (BusSelectedReceivablesDetailedDto busSelectedReceivablesDetailedDto : busSelectedReceivablesDetailedDtos) { + BusSelectedReceivablesDetailed busSelectedReceivablesDetailed = new BusSelectedReceivablesDetailed(); + BeanUtil.copyProperties(busSelectedReceivablesDetailedDto,busSelectedReceivablesDetailed); + busSelectedReceivablesDetailed.setCollSid(sid); + busSelectedReceivablesDetailedService.save(busSelectedReceivablesDetailed); } - return null; + return rb.success().setMsg("修改成功"); } public ResultBean fetchByAllSid(String sid) { ResultBean rb = ResultBean.fireFail(); - return null; + BusCollectionConfirmationDetailsVo busCollectionConfirmationDetailsVo = new BusCollectionConfirmationDetailsVo(); + BusCollectionConfirmation busCollectionConfirmation = fetchBySid(sid); + BeanUtil.copyProperties(busCollectionConfirmation,busCollectionConfirmationDetailsVo); + List busSelectedReceivablesDetailedVos = busSelectedReceivablesDetailedService.fetchByCillSid(sid); + busCollectionConfirmationDetailsVo.setBusSelectedReceivablesDetailedVos(busSelectedReceivablesDetailedVos); + return rb.success().setData(busCollectionConfirmationDetailsVo); + } + + public ResultBean delAllBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + delBySids(sids); + for (String sid : sids) { + busSelectedReceivablesDetailedService.deleteByCollSid(sid); + } + return rb.success().setMsg("删除成功"); } } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java index 3dda5b98c0..fe7174f927 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedMapper.java @@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -62,4 +63,10 @@ public interface BusSelectedReceivablesDetailedMapper extends BaseMapper selectListVo(); + + @Delete("delete from bus_selected_receivables_detailed where collSid = #{sid}") + void deleteByCollSid(String sid); + + @Select("select * from bus_selected_receivables_detailed where collSid = #{sid}") + List fetchByCillSid(String sid); } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java index 378cc57127..1c2125fd61 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busselectedreceivablesdetailed/BusSelectedReceivablesDetailedService.java @@ -161,4 +161,12 @@ public class BusSelectedReceivablesDetailedService extends MybatisBaseService fetchByCillSid(String sid) { + return baseMapper.fetchByCillSid(sid); + } } \ No newline at end of file From 3e0e340afb353ce9322e200d3fe3bbb511e1bc8b Mon Sep 17 00:00:00 2001 From: hanlinghao <2969694837@qq.com> Date: Wed, 13 Apr 2022 14:34:16 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=8C=E5=AE=A2=E6=88=B7=E6=84=8F=E5=90=91?= =?UTF-8?q?=E8=BD=A6=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppBusCollectionConfirmationPageVo.java | 35 +++++++++++++++++++ .../AppBusCollectionConfirmationQuery.java | 16 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationPageVo.java create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationQuery.java diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationPageVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationPageVo.java new file mode 100644 index 0000000000..8f4671f246 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationPageVo.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AppBusCollectionConfirmationPageVo implements Vo { + + @ApiModelProperty("确认单sid") + private String collectionBillSid; + @ApiModelProperty("收款账号") + private String collectionNum; + @ApiModelProperty("状态") + private String collectionBillState; + @ApiModelProperty("收款银行") + private String collectionBank; + @ApiModelProperty("收款类型") + private String collectionType; + @ApiModelProperty("收款时间") + private String collectionDate; + @ApiModelProperty("付款人") + private String paymentName; + @ApiModelProperty("收款金额") + private String collectionMoney; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("是否显示办理") + private boolean showHandle; + @ApiModelProperty("是否显示下载") + private boolean showDownload; + @ApiModelProperty("是否显示删除") + private boolean showDelete; + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationQuery.java new file mode 100644 index 0000000000..e95dc71c0f --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/AppBusCollectionConfirmationQuery.java @@ -0,0 +1,16 @@ +package com.yxt.anrui.buscenter.api.buscollectionconfirmation; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AppBusCollectionConfirmationQuery implements Query { + + @ApiModelProperty("用户sid") + private String userSid; + + @ApiModelProperty("付款方名称") + private String name; + +} From 3d6aa5d54c744c9d8f3f8ae947cce72bc2b20a6f Mon Sep 17 00:00:00 2001 From: hanlinghao <2969694837@qq.com> Date: Wed, 13 Apr 2022 14:43:18 +0800 Subject: [PATCH 07/15] =?UTF-8?q?app=E6=AC=BE=E9=A1=B9=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusCollectionConfirmationFeign.java | 4 +- ...usCollectionConfirmationFeignFallback.java | 5 + .../BusCollectionConfirmationMapper.java | 23 +- .../BusCollectionConfirmationMapper.xml | 5 + .../BusCollectionConfirmationRest.java | 61 +++-- .../BusCollectionConfirmationService.java | 252 ++++++++++-------- 6 files changed, 205 insertions(+), 145 deletions(-) diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java index 19c45f9f1a..ca93366807 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeign.java @@ -72,9 +72,9 @@ public interface BusCollectionConfirmationFeign { @GetMapping("/fetchBySid/{sid}") public ResultBean fetchBySid(@PathVariable("sid") String sid); - /* App接口 */ + /*---------------------App接口 ---------------------*/ @ApiOperation("手机端—获取款项确认列表") @PostMapping("/getCollectionConfirmList") - public ResultBean> getCollectionConfirmList(@RequestBody PagerQuery pq); + public ResultBean> getCollectionConfirmList(@RequestBody PagerQuery pagerQuery); } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java index d381a4ac47..565c8ebb45 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/buscollectionconfirmation/BusCollectionConfirmationFeignFallback.java @@ -69,4 +69,9 @@ public class BusCollectionConfirmationFeignFallback implements BusCollectionConf ResultBean rb = ResultBean.fireFail(); return rb.setMsg("接口anrui-buscenter/buscollectionconfirmation/fetchBySid无法访问"); } + + @Override + public ResultBean> getCollectionConfirmList(PagerQuery pagerQuery) { + return null; + } } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java index 01f9a53fed..36d5ef937f 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.java @@ -26,9 +26,12 @@ package com.yxt.anrui.buscenter.biz.buscollectionconfirmation; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.anrui.buscenter.api.buscollectionconfirmation.AppBusCollectionConfirmationPageVo; +import com.yxt.anrui.buscenter.api.buscollectionconfirmation.AppBusCollectionConfirmationQuery; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,13 +56,15 @@ import java.util.List; @Mapper public interface BusCollectionConfirmationMapper extends BaseMapper { - //@Update("update bus_collection_confirmation set name=#{msg} where id=#{id}") - //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); - - IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); - - List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); - - @Select("select * from bus_collection_confirmation") - List selectListVo(); + //@Update("update bus_collection_confirmation set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from bus_collection_confirmation") + List selectListVo(); + + IPage getCollectionConfirmList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml index d4f730bad0..234282309a 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationMapper.xml @@ -10,4 +10,9 @@ + + \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java index 6716c4f444..d7d206b068 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationRest.java @@ -25,6 +25,8 @@ *********************************************************/ package com.yxt.anrui.buscenter.biz.buscollectionconfirmation; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.base.api.basevehicle.BaseVehicleVo; import com.yxt.anrui.buscenter.api.buscollectionconfirmation.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -54,36 +56,49 @@ import java.util.List; @RequestMapping("/buscollectionconfirmation") public class BusCollectionConfirmationRest implements BusCollectionConfirmationFeign { - @Autowired - private BusCollectionConfirmationService busCollectionConfirmationService; + @Autowired + private BusCollectionConfirmationService busCollectionConfirmationService; - @Override - @ApiOperation("根据条件分页查询数据的列表") - @PostMapping("/listPage") - public ResultBean> listPage(@RequestBody PagerQuery pq){ - ResultBean rb = ResultBean.fireFail(); - PagerVo pv = busCollectionConfirmationService.listPageVo(pq); - return rb.success().setData(pv); - } + @Override + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = busCollectionConfirmationService.listPageVo(pq); + return rb.success().setData(pv); + } - @Override - @ApiOperation("新增或修改保存") - @PostMapping("/saveOrUpdate") - public ResultBean saveOrUpdate(@RequestBody BusCollectionConfirmationDto dto){ - return busCollectionConfirmationService.saveOrUpdateAllDto(dto); - } + @Override + @ApiOperation("新增或修改保存") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody BusCollectionConfirmationDto dto) { + return busCollectionConfirmationService.saveOrUpdateAllDto(dto); + } - @Override - @ApiOperation("根据sid批量删除") + @Override + @ApiOperation("根据sid批量删除") @PostMapping("/delBySids") public ResultBean delBySids(@RequestBody String[] sids){ return busCollectionConfirmationService.delAllBySids(sids); } - @Override - @ApiOperation("根据SID获取一条记录") + @Override + @ApiOperation("根据SID获取一条记录") @GetMapping("/fetchBySid/{sid}") - public ResultBean fetchBySid(@PathVariable("sid") String sid){ - return busCollectionConfirmationService.fetchByAllSid(sid); - } + public ResultBean fetchBySid(@PathVariable("sid") String sid) { + return busCollectionConfirmationService.fetchByAllSid(sid); + } + + /** + * 手机端—获取款项确认列表 + * + * @param pagerQuery + * @return + */ + @Override + public ResultBean> getCollectionConfirmList(PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + IPage page = busCollectionConfirmationService.getCollectionConfirmList(pagerQuery); + return null; + } } diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java index f19c4c613f..dea6cff2dc 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/buscollectionconfirmation/BusCollectionConfirmationService.java @@ -28,6 +28,8 @@ package com.yxt.anrui.buscenter.biz.buscollectionconfirmation; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.base.api.basevehicle.BaseVehicleQuery; +import com.yxt.anrui.base.api.basevehicle.BaseVehicleVo; import com.yxt.anrui.base.api.commonappendix.CommonAppendix; import com.yxt.anrui.base.api.commonappendix.CommonAppendixDto; import com.yxt.anrui.base.api.commonappendix.CommonAppendixFeign; @@ -66,120 +68,148 @@ import java.util.List; @Service public class BusCollectionConfirmationService extends MybatisBaseService { - @Autowired - private BusSelectedReceivablesDetailedService busSelectedReceivablesDetailedService; - @Autowired - private CommonAppendixFeign commonAppendixFeign; - @Autowired - private FileUploadComponent fileUploadComponent; + @Autowired + private BusSelectedReceivablesDetailedService busSelectedReceivablesDetailedService; + @Autowired + private CommonAppendixFeign commonAppendixFeign; + @Autowired + private FileUploadComponent fileUploadComponent; - private QueryWrapper createQueryWrapper(BusCollectionConfirmationQuery query) { - // todo: 这里根据具体业务调整查询条件 - // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); - QueryWrapper qw = new QueryWrapper<>(); + private QueryWrapper createQueryWrapper(BusCollectionConfirmationQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); - if (StringUtils.isNotBlank(query.getCollectionDate())) { - qw.eq("collectionDate", query.getCollectionDate()); - } - if (StringUtils.isNotBlank(query.getCollectionBank())) { - qw.eq("collectionBank", query.getCollectionBank()); - } - if (StringUtils.isNotBlank(query.getCollectionTypeKey())) { - qw.eq("collectionTypeKey", query.getCollectionTypeKey()); - } - if (StringUtils.isNotBlank(query.getSubscriptionState())) { - qw.eq("subscriptionState", query.getSubscriptionState()); - } - return qw; - } - - public PagerVo listPageVo(PagerQuery pq) { - BusCollectionConfirmationQuery query = pq.getParams(); - QueryWrapper qw = createQueryWrapper(query); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPageVo(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } - - public ResultBean saveOrUpdateAllDto(BusCollectionConfirmationDto dto) { - ResultBean rb = ResultBean.fireFail(); - BusCollectionConfirmation busCollectionConfirmation = new BusCollectionConfirmation(); - List busSelectedReceivablesDetailedDtos = dto.getBusSelectedReceivablesDetailedDtos(); - CommonAppendixDto commonAppendixDto = new CommonAppendixDto(); - List paymentVoucherAppendixs = dto.getPaymentVoucherAppendixs(); - List remittanceConfirmationAppendixs = dto.getRemittanceConfirmationAppendixs(); - String sid1 = busCollectionConfirmation.getSid(); - String sid = dto.getSid(); - if (StringUtils.isBlank(sid)){//新增 - BeanUtil.copyProperties(dto,busCollectionConfirmation); - busCollectionConfirmation.setSid(sid1); - String payFilePath = ""; - String remFilePath = ""; - for (BusCollectionConfirmationAppendixDto paymentVoucherAppendix : paymentVoucherAppendixs) { - BeanUtil.copyProperties(paymentVoucherAppendix,commonAppendixDto); - payFilePath = commonAppendixDto.getFilePath(); - if (payFilePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { - payFilePath = payFilePath.replace(fileUploadComponent.getUrlPrefix(), ""); - commonAppendixDto.setLinkSid(sid1); - commonAppendixDto.setFilePath(payFilePath); - commonAppendixDto.setCreateBySid(dto.getStaffSid()); - commonAppendixDto.setAttachType(CommonAttachTypeEnum.PAYMENT_VOUCHER.getAttachType()); - commonAppendixFeign.save(commonAppendixDto); - } - payFilePath += payFilePath + ","; - } - busCollectionConfirmation.setPaymentVoucherUrl(payFilePath.substring(0, payFilePath.length() - 1)); - for (BusCollectionConfirmationAppendixDto remittanceConfirmationAppendix : remittanceConfirmationAppendixs) { - BeanUtil.copyProperties(remittanceConfirmationAppendix,commonAppendixDto); - remFilePath = commonAppendixDto.getFilePath(); - if (remFilePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { - remFilePath = remFilePath.replace(fileUploadComponent.getUrlPrefix(), ""); - commonAppendixDto.setLinkSid(sid1); - commonAppendixDto.setFilePath(remFilePath); - commonAppendixDto.setCreateBySid(dto.getStaffSid()); - commonAppendixDto.setAttachType(CommonAttachTypeEnum.PAYMENT_VOUCHER.getAttachType()); - commonAppendixFeign.save(commonAppendixDto); - } - remFilePath += remFilePath + ","; - } - busCollectionConfirmation.setRemittanceConfirmationUrl(remFilePath.substring(0, remFilePath.length() - 1)); - save(busCollectionConfirmation); - for (BusSelectedReceivablesDetailedDto busSelectedReceivablesDetailedDto : busSelectedReceivablesDetailedDtos) { - BusSelectedReceivablesDetailed busSelectedReceivablesDetailed = new BusSelectedReceivablesDetailed(); - BeanUtil.copyProperties(busSelectedReceivablesDetailedDto,busSelectedReceivablesDetailed); - busSelectedReceivablesDetailed.setCollSid(sid1); - busSelectedReceivablesDetailedService.save(busSelectedReceivablesDetailed); - } - return rb.success().setMsg("添加成功"); - } - updateBySid(dto,sid); - busSelectedReceivablesDetailedService.deleteByCollSid(sid); - for (BusSelectedReceivablesDetailedDto busSelectedReceivablesDetailedDto : busSelectedReceivablesDetailedDtos) { - BusSelectedReceivablesDetailed busSelectedReceivablesDetailed = new BusSelectedReceivablesDetailed(); - BeanUtil.copyProperties(busSelectedReceivablesDetailedDto,busSelectedReceivablesDetailed); - busSelectedReceivablesDetailed.setCollSid(sid); - busSelectedReceivablesDetailedService.save(busSelectedReceivablesDetailed); - } - return rb.success().setMsg("修改成功"); - } + if (StringUtils.isNotBlank(query.getCollectionDate())) { + qw.eq("collectionDate", query.getCollectionDate()); + } + if (StringUtils.isNotBlank(query.getCollectionBank())) { + qw.eq("collectionBank", query.getCollectionBank()); + } + if (StringUtils.isNotBlank(query.getCollectionTypeKey())) { + qw.eq("collectionTypeKey", query.getCollectionTypeKey()); + } + if (StringUtils.isNotBlank(query.getSubscriptionState())) { + qw.eq("subscriptionState", query.getSubscriptionState()); + } + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + BusCollectionConfirmationQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveOrUpdateAllDto(BusCollectionConfirmationDto dto) { + ResultBean rb = ResultBean.fireFail(); + BusCollectionConfirmation busCollectionConfirmation = new BusCollectionConfirmation(); + List busSelectedReceivablesDetailedDtos = dto.getBusSelectedReceivablesDetailedDtos(); + CommonAppendixDto commonAppendixDto = new CommonAppendixDto(); + List paymentVoucherAppendixs = dto.getPaymentVoucherAppendixs(); + List remittanceConfirmationAppendixs = dto.getRemittanceConfirmationAppendixs(); + String sid1 = busCollectionConfirmation.getSid(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) {//新增 + BeanUtil.copyProperties(dto, busCollectionConfirmation); + busCollectionConfirmation.setSid(sid1); + String payFilePath = ""; + String remFilePath = ""; + for (BusCollectionConfirmationAppendixDto paymentVoucherAppendix : paymentVoucherAppendixs) { + BeanUtil.copyProperties(paymentVoucherAppendix, commonAppendixDto); + payFilePath = commonAppendixDto.getFilePath(); + if (payFilePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { + payFilePath = payFilePath.replace(fileUploadComponent.getUrlPrefix(), ""); + commonAppendixDto.setLinkSid(sid1); + commonAppendixDto.setFilePath(payFilePath); + commonAppendixDto.setCreateBySid(dto.getStaffSid()); + commonAppendixDto.setAttachType(CommonAttachTypeEnum.PAYMENT_VOUCHER.getAttachType()); + commonAppendixFeign.save(commonAppendixDto); + } + payFilePath += payFilePath + ","; + } + busCollectionConfirmation.setPaymentVoucherUrl(payFilePath.substring(0, payFilePath.length() - 1)); + for (BusCollectionConfirmationAppendixDto remittanceConfirmationAppendix : remittanceConfirmationAppendixs) { + BeanUtil.copyProperties(remittanceConfirmationAppendix, commonAppendixDto); + remFilePath = commonAppendixDto.getFilePath(); + if (remFilePath.indexOf(fileUploadComponent.getUrlPrefix()) > -1) { + remFilePath = remFilePath.replace(fileUploadComponent.getUrlPrefix(), ""); + commonAppendixDto.setLinkSid(sid1); + commonAppendixDto.setFilePath(remFilePath); + commonAppendixDto.setCreateBySid(dto.getStaffSid()); + commonAppendixDto.setAttachType(CommonAttachTypeEnum.PAYMENT_VOUCHER.getAttachType()); + commonAppendixFeign.save(commonAppendixDto); + } + remFilePath += remFilePath + ","; + } + busCollectionConfirmation.setRemittanceConfirmationUrl(remFilePath.substring(0, remFilePath.length() - 1)); + save(busCollectionConfirmation); + for (BusSelectedReceivablesDetailedDto busSelectedReceivablesDetailedDto : busSelectedReceivablesDetailedDtos) { + BusSelectedReceivablesDetailed busSelectedReceivablesDetailed = new BusSelectedReceivablesDetailed(); + BeanUtil.copyProperties(busSelectedReceivablesDetailedDto, busSelectedReceivablesDetailed); + busSelectedReceivablesDetailed.setCollSid(sid1); + busSelectedReceivablesDetailedService.save(busSelectedReceivablesDetailed); + } + return rb.success().setMsg("添加成功"); + } + updateBySid(dto, sid); + busSelectedReceivablesDetailedService.deleteByCollSid(sid); + for (BusSelectedReceivablesDetailedDto busSelectedReceivablesDetailedDto : busSelectedReceivablesDetailedDtos) { + BusSelectedReceivablesDetailed busSelectedReceivablesDetailed = new BusSelectedReceivablesDetailed(); + BeanUtil.copyProperties(busSelectedReceivablesDetailedDto, busSelectedReceivablesDetailed); + busSelectedReceivablesDetailed.setCollSid(sid); + busSelectedReceivablesDetailedService.save(busSelectedReceivablesDetailed); + } + return rb.success().setMsg("修改成功"); + } - public ResultBean fetchByAllSid(String sid) { - ResultBean rb = ResultBean.fireFail(); - BusCollectionConfirmationDetailsVo busCollectionConfirmationDetailsVo = new BusCollectionConfirmationDetailsVo(); - BusCollectionConfirmation busCollectionConfirmation = fetchBySid(sid); - BeanUtil.copyProperties(busCollectionConfirmation,busCollectionConfirmationDetailsVo); - List busSelectedReceivablesDetailedVos = busSelectedReceivablesDetailedService.fetchByCillSid(sid); - busCollectionConfirmationDetailsVo.setBusSelectedReceivablesDetailedVos(busSelectedReceivablesDetailedVos); - return rb.success().setData(busCollectionConfirmationDetailsVo); - } + public ResultBean fetchByAllSid(String sid) { + ResultBean rb = ResultBean.fireFail(); + BusCollectionConfirmationDetailsVo busCollectionConfirmationDetailsVo = new BusCollectionConfirmationDetailsVo(); + BusCollectionConfirmation busCollectionConfirmation = fetchBySid(sid); + BeanUtil.copyProperties(busCollectionConfirmation, busCollectionConfirmationDetailsVo); + List busSelectedReceivablesDetailedVos = busSelectedReceivablesDetailedService.fetchByCillSid(sid); + busCollectionConfirmationDetailsVo.setBusSelectedReceivablesDetailedVos(busSelectedReceivablesDetailedVos); + return rb.success().setData(busCollectionConfirmationDetailsVo); + } - public ResultBean delAllBySids(String[] sids) { - ResultBean rb = ResultBean.fireFail(); - delBySids(sids); - for (String sid : sids) { - busSelectedReceivablesDetailedService.deleteByCollSid(sid); + public ResultBean delAllBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + delBySids(sids); + for (String sid : sids) { + busSelectedReceivablesDetailedService.deleteByCollSid(sid); + } + return rb.success().setMsg("删除成功"); + } + + /** + * 手机端—获取款项确认列表 + * + * @param pagerQuery + * @return + */ + public IPage getCollectionConfirmList(PagerQuery pagerQuery) { + IPage page = PagerUtil.queryToPage(pagerQuery); + QueryWrapper qw = appBuildQueryWrapper(pagerQuery.getParams()); + return baseMapper.getCollectionConfirmList(page,qw); + } + + /** + * 构造条件 + * + * @param pagerQuery 查询条件 + * @return + */ + private QueryWrapper appBuildQueryWrapper(AppBusCollectionConfirmationQuery pagerQuery) { + QueryWrapper qw = new QueryWrapper<>(); + if (pagerQuery != null) { + if (com.yxt.common.base.utils.StringUtils.isNotBlank(pagerQuery.getName())) {//车架号 + qw.like("bv.vinNo", pagerQuery.getName()); + } } - return rb.success().setMsg("删除成功"); - } + return qw; + } } \ No newline at end of file From b1ea79c25ae92d2ccff62257899d493a00de1104 Mon Sep 17 00:00:00 2001 From: alllenliufor3 <1009545232@qq.com> Date: Tue, 12 Apr 2022 10:34:01 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=90=88=E5=90=8C?= =?UTF-8?q?=EF=BC=88=E7=A9=BA=E7=99=BD=EF=BC=89=E4=B8=8B=E8=BD=BD=E9=93=BE?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/biz/commoncontract/CommonContractService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java index 27296b4091..1e818e719c 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java @@ -683,7 +683,11 @@ public class CommonContractService extends MybatisBaseService Date: Tue, 12 Apr 2022 11:04:25 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E5=AE=8C=E5=96=84=20=E5=85=A5=E8=B4=A6?= =?UTF-8?q?=E7=94=B3=E8=AF=B7code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java index dd4ad580b3..4ad4d7b990 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java @@ -14,7 +14,7 @@ public enum ProcDefEnum { ADVANCEGINVOICEAPPLY("提前开票申请流程","advance_ginvoiceapply:1:242664"), ARREARSCARRYVEHICLE("欠款提车审批流程","arrears_carryvehicle:1:232589"), VEHICLEAPPLY("排产申请流程","process_9egcg169:1:242660"), - RECORDAPPLICATION("入账申请","record_application_7y80d4r8"), + RECORDAPPLICATION("入账申请","record_application_7y80d4r8:1:265008"), ; ProcDefEnum(String proDefName, String proDefId) { From 9d81b9866dfb837bcf831538bc875155930b470b Mon Sep 17 00:00:00 2001 From: alllenliufor3 <1009545232@qq.com> Date: Wed, 13 Apr 2022 14:21:52 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E6=9B=B4=E6=94=B9=20=E5=B7=B2=E5=8A=9E?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E6=9F=A5=E8=AF=A2=E8=AF=AD=E5=8F=A5?= =?UTF-8?q?=EF=BC=88=E4=BF=AE=E6=94=B9=E5=BD=93=E5=89=8D=E7=8E=AF=E8=8A=82?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=8F=8A=E8=8A=82=E7=82=B9id=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anrui/flowable/biz/flowtask/FlowTaskMapper.xml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml index b1a922cf94..2be929bd6a 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml @@ -125,9 +125,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT * FROM ( SELECT DISTINCT ahti.ID_, - /*ahti.NAME_,*/ + ahti.NAME_, ahti.ASSIGNEE_, ahti.START_TIME_, + ahti.TASK_DEF_KEY_ taskDefKey, ahpi.START_USER_ID_, ahpi.END_ACT_ID_, ahpi.END_TIME_, @@ -136,13 +137,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" arpd.KEY_ AS PROC_DEF_KEY_, arpd.NAME_ AS PROC_DEF_NAME_, arpd.VERSION_ AS PROC_DEF_VERSION_, - arpd.DEPLOYMENT_ID_ AS DEPLOYMENT_ID_, - sfl.taskDefKey AS taskDefKey, - sfl.nodeState NAME_ + arpd.DEPLOYMENT_ID_ AS DEPLOYMENT_ID_ + /*sfl.taskDefKey AS taskDefKey,*/ + /*sfl.nodeState NAME_*/ FROM ACT_HI_PROCINST ahpi INNER JOIN (SELECT PROC_INST_ID_ from ACT_HI_TASKINST WHERE ASSIGNEE_=#{userSid} AND END_TIME_ IS NOT NULL) temp ON ahpi.PROC_INST_ID_=temp.PROC_INST_ID_ - LEFT JOIN ACT_HI_TASKINST ahti on ahti.PROC_INST_ID_=temp.PROC_INST_ID_ + /*LEFT JOIN ACT_HI_TASKINST ahti on ahti.PROC_INST_ID_=temp.PROC_INST_ID_*/ + LEFT JOIN (SELECT * FROM (SELECT DISTINCT(ID_) ID_,NAME_,ASSIGNEE_,START_TIME_,TASK_DEF_KEY_,PROC_INST_ID_ FROM ACT_HI_TASKINST ORDER BY START_TIME_ DESC) t1 GROUP BY t1.PROC_INST_ID_) ahti ON ahti.PROC_INST_ID_ = temp.PROC_INST_ID_ INNER JOIN `ACT_HI_VARINST` A0 ON ahpi.PROC_INST_ID_ = A0.PROC_INST_ID_ LEFT JOIN ACT_RE_PROCDEF arpd ON ahpi.PROC_DEF_ID_ = arpd.ID_ LEFT JOIN sys_form_link sfl ON ahpi.PROC_INST_ID_ = sfl.procInsId From 45399458b449a240dfa64cca9862b1469b167a7a Mon Sep 17 00:00:00 2001 From: alllenliufor3 <1009545232@qq.com> Date: Wed, 13 Apr 2022 14:22:42 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E9=A9=B3=E5=9B=9E=E5=88=B0=E5=8F=91=E8=B5=B7=E7=8E=AF=E8=8A=82?= =?UTF-8?q?=EF=BC=8C=E8=AE=BE=E7=BD=AE=E5=8F=91=E8=B5=B7=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java index 1786daa7db..21056d227c 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java @@ -1003,6 +1003,10 @@ public class FlowTaskService extends MybatisBaseService runTaskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list(); List runTaskKeyList = new ArrayList<>(); From adff723729fdfc66e310e33fca89864412822d33 Mon Sep 17 00:00:00 2001 From: alllenliufor3 <1009545232@qq.com> Date: Wed, 13 Apr 2022 14:27:03 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E5=85=A5=E8=B4=A6?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E6=B5=81=E7=A8=8B=E7=9A=84=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseVehicleExecutionListener.java | 23 ++ .../yxt/anrui/scm/api/flow/FlowTaskVo.java | 51 +++++ .../com/yxt/anrui/scm/api/flow/Flowable.java | 8 + .../scmapplyinbound/ScmApplyInboundDto.java | 4 + .../scmapplyinbound/ScmApplyInboundFeign.java | 38 ++++ .../ScmApplyInboundFeignFallback.java | 38 ++++ .../SubmitScmApplyInboundDto.java | 28 +++ .../anrui/scm/biz/flow/FlowableMapper.java | 12 + .../yxt/anrui/scm/biz/flow/FlowableMapper.xml | 5 + .../anrui/scm/biz/flow/FlowableService.java | 99 ++++++++ .../ScmApplyInboundMapper.java | 3 + .../scmapplyinbound/ScmApplyInboundMapper.xml | 14 +- .../scmapplyinbound/ScmApplyInboundRest.java | 32 +++ .../ScmApplyInboundService.java | 211 +++++++++++++++++- 14 files changed, 562 insertions(+), 4 deletions(-) create mode 100644 anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/BaseVehicleExecutionListener.java create mode 100644 anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/FlowTaskVo.java create mode 100644 anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/Flowable.java create mode 100644 anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/SubmitScmApplyInboundDto.java create mode 100644 anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.java create mode 100644 anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.xml create mode 100644 anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableService.java diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/BaseVehicleExecutionListener.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/BaseVehicleExecutionListener.java new file mode 100644 index 0000000000..9d7494a2d4 --- /dev/null +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/BaseVehicleExecutionListener.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.flowable.listener; + +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.ExecutionListener; +import org.springframework.stereotype.Component; + +/** + * @author liuguohui + * @version 1.0 + * @description 建立车辆库存台账 + * @date 2022/04/11 + */ +@Component +public class BaseVehicleExecutionListener implements ExecutionListener { + + @Override + public void notify(DelegateExecution execution) { + // 入账申请审批通过后,自动生成车辆库存台账 + // TODO + System.out.println("入账申请审批通过后,自动生成车辆库存台账"); + + } +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/FlowTaskVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/FlowTaskVo.java new file mode 100644 index 0000000000..ad0de3ab5c --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/FlowTaskVo.java @@ -0,0 +1,51 @@ +package com.yxt.anrui.scm.api.flow; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

流程任务

+ * + * @author XuanXuan + * @date 2021-04-03 + */ +@ApiModel("工作流任务相关--请求参数") +@Data +public class FlowTaskVo { + + @ApiModelProperty("任务Id") + private String taskId; + + @ApiModelProperty("用户Id") + private String userId; + @ApiModelProperty("用户Sid") + private String userSid; + + @ApiModelProperty("任务意见") + private String comment; + + @ApiModelProperty("流程实例Id") + private String instanceId; + + @ApiModelProperty("节点") + private String targetKey; + + @ApiModelProperty("流程变量信息") + private Map values=new HashMap<>(); + + @ApiModelProperty("审批人") + private String assignee; + + @ApiModelProperty("候选人") + private List candidateUsers=new ArrayList<>(); + + @ApiModelProperty("审批组") + private List candidateGroups=new ArrayList<>(); + +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/Flowable.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/Flowable.java new file mode 100644 index 0000000000..3dbad13ba3 --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/flow/Flowable.java @@ -0,0 +1,8 @@ +package com.yxt.anrui.scm.api.flow; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +@Data +public class Flowable extends BaseEntity { +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java index cd321ffdda..41a8903d25 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundDto.java @@ -32,6 +32,10 @@ public class ScmApplyInboundDto implements Dto { @ApiModelProperty("车辆入账单sid") private String sid; + + @ApiModelProperty("用户sid") + @NotBlank(message = "用户sid不能为空") + private String userSid; @ApiModelProperty("申请编号") @NotBlank(message = "申请编号不能为空") diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java index dbbee9ce5d..7e1d32552c 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java @@ -1,15 +1,18 @@ package com.yxt.anrui.scm.api.scmapplyinbound; +import com.yxt.anrui.scm.api.flow.FlowTaskVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Map; /** * Project: anrui-scm(进销存)
@@ -47,4 +50,39 @@ public interface ScmApplyInboundFeign { @ApiOperation("根据sid查询车辆入账单详情") @GetMapping("/fetchSid/{sid}") public ResultBean fetchSid(@PathVariable("sid") String sid); + + /*************************************************审批流程***************************************************/ + @ApiOperation("提交入账申请") + @PostMapping("/submitRecordApplication") + public ResultBean submitRecordApplication(@RequestBody @Valid SubmitScmApplyInboundDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@ApiParam(value = "变量集合,json对象") @RequestBody Map variables); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess/{userSid}/{businessSid}") + public ResultBean revokeProcess( + @ApiParam(value = "用户sid") @PathVariable(value = "userSid")String userSid, + @ApiParam(value = "业务sid") @PathVariable(value = "businessSid")String businessSid, + @ApiParam(value = "工作流任务相关--请求参数") @RequestBody FlowTaskVo flowTaskVo) ; + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject/{businessSid}") + public ResultBean taskReject(@ApiParam(value = "业务sid") @PathVariable(value = "businessSid")String businessSid, + @ApiParam(value = "工作流任务相关--请求参数")@RequestBody FlowTaskVo flowTaskVo); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess/{businessSid}") + public ResultBean breakProcess(@ApiParam(value = "业务sid") @PathVariable(value = "businessSid")String businessSid, + @RequestBody FlowTaskVo flowTaskVo); + + @ApiOperation(value = "流程历史流转记录" ) + @GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}") + public ResultBean flowRecord( @ApiParam(value = "流程实例id")@PathVariable(value = "procInsId")String procInsId, + @ApiParam(value = "目前没用")@PathVariable(value = "deployId")String deployId); + + + /*************************************************审批流程***************************************************/ + } \ No newline at end of file diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java index c4199dd09b..b1af2192b2 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java @@ -1,11 +1,13 @@ package com.yxt.anrui.scm.api.scmapplyinbound; +import com.yxt.anrui.scm.api.flow.FlowTaskVo; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; /** * Project: anrui-scm(进销存)
@@ -45,4 +47,40 @@ public class ScmApplyInboundFeignFallback implements ScmApplyInboundFeign { ResultBean rb = ResultBean.fireFail(); return rb.setMsg("接口anrui-scm/scmapplyinbound/fetchSid无法访问"); } + + @Override + public ResultBean submitRecordApplication(SubmitScmApplyInboundDto dto) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-scm/scmapplyinbound/submitRecordApplication无法访问"); + } + + @Override + public ResultBean complete(Map variables) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-scm/scmapplyinbound/complete无法访问"); + } + + @Override + public ResultBean revokeProcess(String userSid, String businessSid, FlowTaskVo flowTaskVo) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-scm/scmapplyinbound/revokeProcess无法访问"); + } + + @Override + public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-scm/scmapplyinbound/taskReject无法访问"); + } + + @Override + public ResultBean breakProcess(String businessSid, FlowTaskVo flowTaskVo) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-scm/scmapplyinbound/breakProcess无法访问"); + } + + @Override + public ResultBean flowRecord(String procInsId, String deployId) { + ResultBean rb = ResultBean.fireFail(); + return rb.setMsg("接口anrui-scm/scmapplyinbound/flowRecord无法访问"); + } } \ No newline at end of file diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/SubmitScmApplyInboundDto.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/SubmitScmApplyInboundDto.java new file mode 100644 index 0000000000..e3de17007f --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/SubmitScmApplyInboundDto.java @@ -0,0 +1,28 @@ +package com.yxt.anrui.scm.api.scmapplyinbound; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuguohui + * @version 1.0 + * @description + * @date 2022/04/13 + */ +@ApiModel("提交") +@Data +public class SubmitScmApplyInboundDto extends ScmApplyInboundDto{ + + @ApiModelProperty("业务sid") + private String businessSid; + + @ApiModelProperty("意见") + private String comment; + + @ApiModelProperty("流程实例id") + private String instanceId; + + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.java new file mode 100644 index 0000000000..de95f23617 --- /dev/null +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.scm.biz.flow; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yxt.anrui.buscenter.api.flow.Flowable; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Map; + +@Mapper +public interface FlowableMapper extends BaseMapper { + +} diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.xml b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.xml new file mode 100644 index 0000000000..0dc22fb778 --- /dev/null +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableService.java new file mode 100644 index 0000000000..1c09c2acb7 --- /dev/null +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/flow/FlowableService.java @@ -0,0 +1,99 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.scm.biz.flow; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSONObject; +import com.yxt.anrui.buscenter.api.flow.*; +import com.yxt.anrui.flowable.api.flowdefinition.FlowDefinitionFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTask; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; +import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum; +import com.yxt.anrui.flowable.api.utils.ProcessStateEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessTaskParam; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessTaskQuery; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.flowable.sqloperationsymbol.SQLOperationSymbol; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.DateUtils; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.*; + +/** + * Project: anrui-parent
+ * File: FlowableService.java
+ * Class: com.yxt.anrui.scm.biz.flow.FlowableService
+ * Description: <描述类的功能>.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021/10/23 上午11:14
+ * + * @author popo + * @version 1.0 + * @since 1.0 + */ +@Service +public class FlowableService extends MybatisBaseService { + @Autowired + private FlowDefinitionFeign flowDefinitionFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + + public ResultBean businessStart(@ApiParam(value = "流程定义id") @PathVariable(value = "procDefId") String procDefId, + @ApiParam(value = "用户sid") @PathVariable(value = "userSid") String userSid, + @ApiParam(value = "变量集合,json对象") @RequestBody Map variables) { + + variables.put("procDefId",procDefId); + variables.put("userSid",userSid); + BusinessVariables bv= BusinessVariables.builder().build(); + bv.setDetailUrl(""); + bv.setHandleUrl(""); + bv.setFormVariables(variables); + ResultBean rb = flowDefinitionFeign.businessStart(bv); + if (!rb.getSuccess()) { + return rb; + } + String procId = rb.getData().getProcInsId(); + List list = flowTaskFeign.getLatestTasks(procId).getData(); + String nodeState = list.get(0).getName_(); + String task_def_key_ = list.get(0).getTask_def_key_(); + Map map = new HashMap<>(); + map.put("sid", variables.get("businessSid").toString()); + map.put("nodeState", nodeState); + map.put("procInsId", rb.getData().getProcInsId()); + map.put("taskDefKey", task_def_key_); + return new ResultBean().success().setData(map); + } +} diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java index 3cb96fcd0c..310d009f52 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java @@ -12,6 +12,7 @@ import com.yxt.anrui.scm.api.scmapplyinbound.ScmApplyInbound; import com.yxt.anrui.scm.api.scmapplyinbound.ScmApplyInboundVo; import java.util.List; +import java.util.Map; /** * Project: anrui-scm(进销存)
@@ -38,4 +39,6 @@ public interface ScmApplyInboundMapper extends BaseMapper { @Select("select * from scm_apply_inbound") List selectListVo(); + + int updateFlowFiled(Map map); } \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml index fdb4f1dc7d..7e323a12f2 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.xml @@ -4,7 +4,7 @@ SELECT * FROM scm_apply_inbound ${ew.sqlSegment} + + + UPDATE scm_apply_inbound + SET nodeState=#{nodeState}, taskDefKey=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInsId=#{procInsId} + + WHERE sid=#{sid} + \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundRest.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundRest.java index c50a763c48..8949ad82a2 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundRest.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundRest.java @@ -1,6 +1,7 @@ package com.yxt.anrui.scm.biz.scmapplyinbound; import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.scm.api.flow.FlowTaskVo; import com.yxt.anrui.scm.api.scmapplyinbound.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; /** * Project: anrui-scm(进销存)
@@ -55,4 +57,34 @@ public class ScmApplyInboundRest implements ScmApplyInboundFeign { public ResultBean fetchSid(String sid) { return new ResultBean().success().setData(scmApplyInboundService.selectBySid(sid)); } + + @Override + public ResultBean submitRecordApplication(SubmitScmApplyInboundDto dto) { + return new ResultBean().success().setData(scmApplyInboundService.submitRecordApplication(dto)); + } + + @Override + public ResultBean complete(Map variables) { + return scmApplyInboundService.complete(variables); + } + + @Override + public ResultBean revokeProcess(String userSid, String businessSid, FlowTaskVo flowTaskVo) { + return scmApplyInboundService.revokeProcess(userSid, businessSid, flowTaskVo); + } + + @Override + public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) { + return scmApplyInboundService.taskReject(businessSid, flowTaskVo); + } + + @Override + public ResultBean breakProcess(String businessSid, FlowTaskVo flowTaskVo) { + return scmApplyInboundService.breakProcess(businessSid, flowTaskVo); + } + + @Override + public ResultBean flowRecord(String procInsId, String deployId) { + return scmApplyInboundService.flowRecord(procInsId, deployId); + } } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java index d2414df03e..00d8e3022a 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java @@ -3,10 +3,19 @@ package com.yxt.anrui.scm.biz.scmapplyinbound; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; +import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.api.utils.ProcessStateEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.scm.api.flow.FlowTaskVo; import com.yxt.anrui.scm.api.scmapplyinbound.*; -import com.yxt.anrui.scm.api.scmapplyinboundvehicle.ScmApplyInboundVehicle; import com.yxt.anrui.scm.api.scmapplyinboundvehicle.ScmApplyInboundVehicleDto; import com.yxt.anrui.scm.api.scmapplyinboundvehicle.ScmApplyInboundVehicleVo; +import com.yxt.anrui.scm.biz.flow.FlowableService; import com.yxt.anrui.scm.biz.scmapplyinboundvehicle.ScmApplyInboundVehicleService; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; @@ -19,7 +28,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; @@ -41,6 +52,14 @@ public class ScmApplyInboundService extends MybatisBaseService listPage(PagerQuery pq) { ScmApplyInboundQuery query = pq.getParams(); @@ -119,7 +138,7 @@ public class ScmApplyInboundService extends MybatisBaseService resultBean = sysStaffOrgFeign.getSysStaffOrgSidListByStaffSid(staffSid); + if (resultBean.getSuccess()) { + orgSid = resultBean.getData(); + } + return orgSid; + } + + /** + * 更新流程相关的状态 + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + /** + * 提交入账申请 + * @param dto + * @return + */ + public ResultBean submitRecordApplication(SubmitScmApplyInboundDto dto) { + String orgSid = checkUserOrg(dto.getUserSid()); + ResultBean resultBean = saveOrUpdateApplyInBound(dto); + String businessSid = resultBean.getData().toString(); + Map variables = new HashMap<>(); + variables.put("businessSid", businessSid); + variables.put("orgSid", orgSid); //部门sid + if (StringUtils.isBlank(dto.getTaskId())) { // 新提交 + ResultBean resultBean1 = flowableService.businessStart(ProcDefEnum.RECORDAPPLICATION.getProDefId(), dto.getUserSid(), variables); + if (resultBean1.getSuccess() && resultBean1.getData() != null) { + Map map = (Map) resultBean1.getData(); + //更新业务表中的流程状态 + Map paramMap = new HashMap<>(); + paramMap.put("sid", businessSid); + paramMap.put("procDefId", ProcDefEnum.RECORDAPPLICATION.getProDefId()); + paramMap.put("nodeState", map.get("nodeState")); + paramMap.put("procInsId", map.get("procInsId")); + paramMap.put("taskDefKey", map.get("taskDefKey")); + updateFlowFiled(paramMap); + } + return resultBean1; + } else { // 驳回到发起人后再次提交 + variables.put("comment", StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + variables.put("instanceId", dto.getInstanceId()); + variables.put("taskId", dto.getTaskId()); + variables.put("userSid", dto.getUserSid()); + return complete(variables); + } + } + + /** + * 办理 + * @param variables + * @return + */ + public ResultBean complete(Map variables) { + BusinessVariables bv= BusinessVariables.builder().build(); + bv.setDetailUrl(""); + bv.setHandleUrl(""); + bv.setFormVariables(variables); + ResultBean resultBean = flowTaskFeign.businessComplete(bv); + if (!resultBean.getSuccess()) { + return resultBean; + } + String nodeState = ""; + String taskDefKey = ""; + Map paramMap = new HashMap<>(); + paramMap.put("sid", variables.get("businessSid").toString()); + if (resultBean.getData() != null) { + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(resultBean.getData().getProcInsId()); + if (listResultBean.getSuccess() && listResultBean.getData() != null && listResultBean.getData().size() != 0) { + nodeState = listResultBean.getData().get(0).getName_(); + taskDefKey = listResultBean.getData().get(0).getTask_def_key_(); + } else { + nodeState = ProcessStateEnum.FINISHED.getStateName(); + taskDefKey = "Event_end"; + paramMap.put("flowState", SysFormLinkFlowStateEnum.FINISH.getCode()); + } + } + paramMap.put("nodeState", nodeState); + paramMap.put("taskDefKey", taskDefKey); + updateFlowFiled(paramMap); + return resultBean; + } + + /** + * 撤回 + * @param userSid + * @param businessSid + * @param flowTaskVo + * @return + */ + public ResultBean revokeProcess(String userSid, String businessSid, FlowTaskVo flowTaskVo) { + com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl=new com.yxt.anrui.flowable.api.flowtask.FlowTaskVo(); + BeanUtil.copyProperties(flowTaskVo,fl); + fl.setUserSid(userSid); + ResultBean> resultBean = flowTaskFeign.revokeProcess(fl); + if (!resultBean.getSuccess()) { + return resultBean; + } + String nodeState = resultBean.getData().get(0).getName_(); + String taskDefKey = resultBean.getData().get(0).getTask_def_key_(); + String incomingSourceRef = resultBean.getData().get(0).getIncomingSourceRef(); + Map paramMap = new HashMap<>(); + paramMap.put("sid", businessSid); + if (incomingSourceRef.contains("start")) { + paramMap.put("nodeState", SysFormLinkFlowStateEnum.UNCOMMITTED.getState()); + paramMap.put("taskDefKey", taskDefKey); + paramMap.put("flowState", SysFormLinkFlowStateEnum.UNCOMMITTED.getCode()); + } else { + paramMap.put("nodeState",nodeState ); + paramMap.put("taskDefKey",taskDefKey ); + } + updateFlowFiled(paramMap); + return resultBean; + } + + /** + * 驳回 + * @param businessSid + * @param flowTaskVo + * @return + */ + public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) { + com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl=new com.yxt.anrui.flowable.api.flowtask.FlowTaskVo(); + BeanUtil.copyProperties(flowTaskVo,fl); + ResultBean> resultBean = flowTaskFeign.taskReject(fl); + if (!resultBean.getSuccess()) { + return resultBean; + } + String nodeState = resultBean.getData().get(0).getName_(); + String taskDefKey = resultBean.getData().get(0).getTask_def_key_(); + String incomingSourceRef = resultBean.getData().get(0).getIncomingSourceRef(); + Map paramMap = new HashMap<>(); + paramMap.put("sid", businessSid); + paramMap.put("nodeState", nodeState); + paramMap.put("taskDefKey", taskDefKey); + if (incomingSourceRef.contains("start")) { + paramMap.put("flowState", SysFormLinkFlowStateEnum.REJECT.getCode()); + } + updateFlowFiled(paramMap); + return resultBean; + } + + /** + * 终止流程 + * @param businessSid + * @param flowTaskVo + * @return + */ + public ResultBean breakProcess(String businessSid, FlowTaskVo flowTaskVo) { + com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl=new com.yxt.anrui.flowable.api.flowtask.FlowTaskVo(); + BeanUtil.copyProperties(flowTaskVo,fl); + ResultBean resultBean = flowTaskFeign.breakProcess(fl); + if (!resultBean.getSuccess()) { + return resultBean; + } + Map paramMap = new HashMap<>(); + paramMap.put("sid", businessSid); + paramMap.put("nodeState", String.valueOf(resultBean.getData())); + paramMap.put("taskDefKey", "Event_end"); + paramMap.put("flowState", SysFormLinkFlowStateEnum.BREAK.getCode()); + updateFlowFiled(paramMap); + return resultBean; + } + + /** + * 流程历史流转记录 + * @param procInsId + * @param deployId + * @return + */ + public ResultBean flowRecord(String procInsId, String deployId) { + return flowTaskFeign.businessFlowRecord(procInsId,deployId); + } } \ No newline at end of file From 378dfdd31391f0cfb17df938bb6225d4ea1a8c79 Mon Sep 17 00:00:00 2001 From: hanlinghao <2969694837@qq.com> Date: Wed, 13 Apr 2022 14:54:18 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=8C=E5=AE=A2=E6=88=B7=E6=84=8F=E5=90=91?= =?UTF-8?q?=E8=BD=A6=E5=9E=8Bvo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppCrmCustomerTempBasicsDetailsVo.java | 86 +++++++++++++++++++ .../AppCrmVehicleDemandParticularsVo.java | 42 +++++++++ .../AppCrmVehicleDemandUpdateDto.java | 28 ++++++ 3 files changed, 156 insertions(+) create mode 100644 anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempBasicsDetailsVo.java create mode 100644 anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandParticularsVo.java create mode 100644 anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandUpdateDto.java diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempBasicsDetailsVo.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempBasicsDetailsVo.java new file mode 100644 index 0000000000..ae36b8aebf --- /dev/null +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempBasicsDetailsVo.java @@ -0,0 +1,86 @@ +package com.yxt.anrui.crm.api.crmcustomertemp; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AppCrmCustomerTempBasicsDetailsVo implements Vo { + + @ApiModelProperty("客户类型") + private String customerTypeKey; + + @ApiModelProperty("客户类型value") + private String customerType; + + @ApiModelProperty("客户名称") + private String name; + + @ApiModelProperty("联系电话") + private String mobile; + + @ApiModelProperty("微信号") + private String weiXin; + + @ApiModelProperty("公司名称") + private String companyName; + + @ApiModelProperty("客户地址") + private String addressNss; + + @ApiModelProperty("详细地址") + private String address; + + @ApiModelProperty("客户级别") + private String level; + + @ApiModelProperty("客户生日") + private String birthday; + + @ApiModelProperty("性别") + private String sex; + + @ApiModelProperty("证件类型") + private String idType; + + @ApiModelProperty("证件编码") + private String idNumber; + + @ApiModelProperty("证件有效期") + private String idDate; + + @ApiModelProperty("电子邮箱") + private String email; + + @ApiModelProperty("紧急联系人") + private String name2; + + @ApiModelProperty("紧急联系电话") + private String mobile2; + + @ApiModelProperty("客户来源value") + private String source; + + @ApiModelProperty("客户分类value") + private String classification; + + @ApiModelProperty("客户类型value") + private String remarks; + + + + + + + + + + + + + + + + + +} diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandParticularsVo.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandParticularsVo.java new file mode 100644 index 0000000000..c745ce5ea5 --- /dev/null +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandParticularsVo.java @@ -0,0 +1,42 @@ +package com.yxt.anrui.crm.api.crmvehicledemand; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AppCrmVehicleDemandParticularsVo implements Vo { + @ApiModelProperty("购车方式value") + private String type; + + @ApiModelProperty("车型sid") + private String modelSid; + + @ApiModelProperty("车型名称") + private String modelName; + + @ApiModelProperty("销售指导价") + private String price; + + @ApiModelProperty("品牌") + private String brand; + + @ApiModelProperty("配置sid") + private String configSid; + + @ApiModelProperty("数量") + private String number; + + @ApiModelProperty("车型报价") + private String quotation; + + @ApiModelProperty("换选装") + private String optionsConfig; + + @ApiModelProperty("预计提车日期") + private String date; + + @ApiModelProperty("备注") + private String remarks; + +} diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandUpdateDto.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandUpdateDto.java new file mode 100644 index 0000000000..cd64646804 --- /dev/null +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicleDemandUpdateDto.java @@ -0,0 +1,28 @@ +package com.yxt.anrui.crm.api.crmvehicledemand; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; + +@Data +public class AppCrmVehicleDemandUpdateDto implements Dto { + + @ApiModelProperty("购车方式类型") + private String purchaseMethod; + + @ApiModelProperty("购车方式value") + private String purchaseMethodValue; + + @ApiModelProperty("备注") + private String remarks; + + @ApiModelProperty("数量") + private String number; + + @ApiModelProperty("提车日期") + private String date; + + @ApiModelProperty("意向车型sid") + private String intentionSid; +} From 048e0236fa8652944cc98733e6201dfaf471100f Mon Sep 17 00:00:00 2001 From: hanlinghao <2969694837@qq.com> Date: Wed, 13 Apr 2022 15:08:25 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppCrmCustomerTempArchivesDto.java | 21 +++++++++++++++ .../AppCrmCustomerTempArchivesVo.java | 19 ++++++++++++++ .../AppCustomerArchivesDataDto.java | 26 +++++++++++++++++++ .../AppCustomerArchivesDataVo.java | 25 ++++++++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesDto.java create mode 100644 anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesVo.java create mode 100644 anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataDto.java create mode 100644 anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataVo.java diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesDto.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesDto.java new file mode 100644 index 0000000000..99fad25fe8 --- /dev/null +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesDto.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.crm.api.crmcustomerfile; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class AppCrmCustomerTempArchivesDto implements Dto { + + @ApiModelProperty("客户sid") + private String customerSid; + + @ApiModelProperty("客户档案数据") + private List data; + + @ApiModelProperty("用户sid") + private String userSid; + +} diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesVo.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesVo.java new file mode 100644 index 0000000000..5a2f1473f7 --- /dev/null +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCrmCustomerTempArchivesVo.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.crm.api.crmcustomerfile; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.List; + + +@Data +public class AppCrmCustomerTempArchivesVo implements Vo { + + private String customerSid; + + private List data; + + private String userSid; + + +} diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataDto.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataDto.java new file mode 100644 index 0000000000..2ce7d90db2 --- /dev/null +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataDto.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.crm.api.crmcustomerfile; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class AppCustomerArchivesDataDto implements Dto { + + @ApiModelProperty("是否修改了图片,是 需要验证是否可以提交") + private boolean isChange; + + @ApiModelProperty("文件的key") + private String key; + + @ApiModelProperty("文件的类型") + private String title; + + @ApiModelProperty("图片的集合") + private List files; + + @ApiModelProperty("图片上传的时间") + private String lastUploadTime; +} diff --git a/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataVo.java b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataVo.java new file mode 100644 index 0000000000..8ced4a43ea --- /dev/null +++ b/anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomerfile/AppCustomerArchivesDataVo.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.crm.api.crmcustomerfile; + +import com.yxt.anrui.crm.api.crmfile.CrmFile; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class AppCustomerArchivesDataVo implements Vo { + + @ApiModelProperty("附件关联sid") + private String sid; + @ApiModelProperty("文件名称") + private String title; + @ApiModelProperty("类型") + private String key; + @ApiModelProperty("附件list") + private List files; + @ApiModelProperty("最后上传时间") + private String createTime; + @ApiModelProperty("最后上传时间戳") + private String lastUploadTime; +} From 41acd9b21c34ceab753bef0496164d7161e94a67 Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Wed, 13 Apr 2022 23:44:41 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=80=80=E5=BA=93?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=90=8C=E6=84=8F=E3=80=81=E9=A9=B3=E5=9B=9E?= =?UTF-8?q?=E3=80=81=E7=BB=88=E6=AD=A2=E3=80=81=E6=92=A4=E5=9B=9E=E5=8F=8A?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=BC=96=E8=BE=91=E5=9B=9E=E6=98=BE=E5=92=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=9D=E5=AD=98=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/basevehicle/BaseVehicleReturnVo.java | 7 +- .../biz/basevehicle/BaseVehicleMapper.xml | 6 +- .../anrui/flowable/api/utils/ProcDefEnum.java | 1 + .../biz/flowtask/FlowTaskService.java | 4 +- .../ScmVehicleActualDetailsVo.java | 2 +- .../ScmVehicleActualSalesFeign.java | 3 +- .../ScmVehicleActualSalesFeignFallback.java | 2 +- .../scmvehiclereturn/ScmVehicleReturn.java | 5 + .../ScmVehicleReturnDetailsVo.java | 35 ++++ .../scmvehiclereturn/ScmVehicleReturnDto.java | 4 + .../ScmVehicleReturnFeign.java | 27 ++- .../ScmVehicleReturnFlowDto.java | 53 ++++++ .../ScmVehicleReturnFlowQuery.java | 28 +++ .../ScmVehicleReturnQuery.java | 3 + .../scmvehiclereturn/ScmVehicleReturnVo.java | 3 - .../ScmVehicleReturnDetailssVo.java | 24 +++ .../ScmVehicleActualSalesRest.java | 4 +- .../ScmVehicleActualSalesService.java | 10 +- .../ScmVehicleReturnMapper.java | 2 + .../ScmVehicleReturnMapper.xml | 9 +- .../ScmVehicleReturnRest.java | 30 ++- .../ScmVehicleReturnService.java | 179 ++++++++++++++++-- .../ScmVehicleReturnDetailsMapper.java | 3 + .../ScmVehicleReturnDetailsMapper.xml | 6 + .../ScmVehicleReturnDetailsService.java | 5 + 25 files changed, 415 insertions(+), 40 deletions(-) create mode 100644 anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDetailsVo.java create mode 100644 anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowDto.java create mode 100644 anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowQuery.java create mode 100644 anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturndetails/ScmVehicleReturnDetailssVo.java diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleReturnVo.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleReturnVo.java index 7e1ea885cf..0383e6f23a 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleReturnVo.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleReturnVo.java @@ -16,7 +16,7 @@ public class BaseVehicleReturnVo implements Vo { @ApiModelProperty(value = "品牌") private String brandName; @ApiModelProperty(value = "车型") - private String modelName; + private String vehicleAlias; @ApiModelProperty(value = "车架号") private String vinNo; @ApiModelProperty(value = "颜色") @@ -26,5 +26,10 @@ public class BaseVehicleReturnVo implements Vo { @ApiModelProperty(value = "销售指导价") private String guidedPrice; + @ApiModelProperty(value = "常用配置") + private String configName; + @ApiModelProperty(value = "入库日期") + private String priceDate; + } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml index 723bcd3edd..42104fda6b 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml @@ -567,11 +567,13 @@ bv.vinNo, - bmc.carColor, + bmc.carColor color, bv.location, - bv.guidedPrice + bv.guidedPrice, + bmc.configName, + DATE_FORMAT(bv.priceDate, '%Y-%m-%d') as priceDate FROM base_vehicle bv LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid` LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid` diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java index 4ad4d7b990..6018bd88aa 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java @@ -15,6 +15,7 @@ public enum ProcDefEnum { ARREARSCARRYVEHICLE("欠款提车审批流程","arrears_carryvehicle:1:232589"), VEHICLEAPPLY("排产申请流程","process_9egcg169:1:242660"), RECORDAPPLICATION("入账申请","record_application_7y80d4r8:1:265008"), + SCMVEHICLERETURN("采购退库", "process_lcgh2q0g:4:235004"), ; ProcDefEnum(String proDefName, String proDefId) { diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java index 21056d227c..21c0869127 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java @@ -740,8 +740,8 @@ public class FlowTaskService extends MybatisBaseService businessComplete(BusinessVariables dto) { ResultBean rb = new ResultBean<>(); Map formVariables = dto.getFormVariables(); - formVariables.put("handleUrl", dto.getHandleUrl()); - formVariables.put("detailUrl", dto.getDetailUrl()); +// formVariables.put("handleUrl", dto.getHandleUrl()); +// formVariables.put("detailUrl", dto.getDetailUrl()); Object taskId_obj = formVariables.get("taskId"); String taskId = null; if (taskId_obj == null) { diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualdetails/ScmVehicleActualDetailsVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualdetails/ScmVehicleActualDetailsVo.java index 3816086e2e..aa65c24134 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualdetails/ScmVehicleActualDetailsVo.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualdetails/ScmVehicleActualDetailsVo.java @@ -21,7 +21,7 @@ public class ScmVehicleActualDetailsVo implements Vo { @ApiModelProperty(value = "车型名称") private String modelName; @ApiModelProperty(value = "入库日期") - private Date inboundDate; + private String inboundDate; @ApiModelProperty(value = "入库价") private String inboundPrice; } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeign.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeign.java index 7b63fb8f14..7d53dcf5bc 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeign.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeign.java @@ -37,8 +37,7 @@ public interface ScmVehicleActualSalesFeign { @ApiOperation("初始化") @GetMapping("/details") @ResponseBody - ResultBean details(@RequestParam(value = "sid") String sid, - @RequestParam(value = "name") String name); + ResultBean details(@RequestParam(value = "sid", required = false) String sid); } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeignFallback.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeignFallback.java index 743fe8c4fc..67405b8193 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeignFallback.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleactualsales/ScmVehicleActualSalesFeignFallback.java @@ -28,7 +28,7 @@ public class ScmVehicleActualSalesFeignFallback implements ScmVehicleActualSales } @Override - public ResultBean details(String sid, String name) { + public ResultBean details(String sid) { return null; } } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturn.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturn.java index 45d03f0f96..b290bfe594 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturn.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturn.java @@ -4,6 +4,8 @@ import com.yxt.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + /** * @Author dimengzhe * @Date 2022/4/6 16:12 @@ -18,6 +20,9 @@ public class ScmVehicleReturn extends BaseEntity { private String applicationName; @ApiModelProperty(value = "退库原因") private String reason; + @ApiModelProperty(value = "费用") + private BigDecimal money; @ApiModelProperty(value = "节点状态") private String nodeState; + } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDetailsVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDetailsVo.java new file mode 100644 index 0000000000..ab4c418fde --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDetailsVo.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.scm.api.scmvehiclereturn; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetailssVo; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/4/13 11:18 + * @Description + */ +@Data +public class ScmVehicleReturnDetailsVo implements Vo { + private static final long serialVersionUID = -5246040124624468517L; + + @ApiModelProperty(value = "申请编号") + private String applicationCode; + @ApiModelProperty(value = "申请人") + private String name; + @ApiModelProperty(value = "申请日期") + private String createTime; + @ApiModelProperty(value = "退库原因") + private String reason; + @ApiModelProperty(value = "费用") + @JsonSerialize(using = ToStringSerializer.class) + private String money; + @ApiModelProperty(value = "车辆列表") + private List voList = new ArrayList<>(); +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDto.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDto.java index 522b5cfd01..532ed2d0a2 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDto.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnDto.java @@ -19,6 +19,8 @@ public class ScmVehicleReturnDto implements Dto { private static final long serialVersionUID = -276598777097000627L; @ApiModelProperty(value = "sid") private String sid; + @ApiModelProperty(value = "申请编号") + private String applicationCode; @ApiModelProperty(value = "申请人sid", required = true) private String userSid; @ApiModelProperty(value = "申请人", required = true) @@ -28,6 +30,8 @@ public class ScmVehicleReturnDto implements Dto { private Date createTime; @ApiModelProperty(value = "退库原因", required = true) private String reason; + @ApiModelProperty(value = "费用") + private String money; @ApiModelProperty(value = "车辆列表") private List detailsList; } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFeign.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFeign.java index d4826ece84..32e4f167f8 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFeign.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFeign.java @@ -5,9 +5,7 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; /** * @Author dimengzhe @@ -31,8 +29,31 @@ public interface ScmVehicleReturnFeign { @ResponseBody ResultBean saveOrUpdate(@RequestBody ScmVehicleReturnDto scmVehicleReturnDto); + @ApiOperation("初始化回显") + @GetMapping("/details") + @ResponseBody + ResultBean details(@RequestParam(value = "sid", required = false) String sid); + + @ApiOperation("提交") @PostMapping("/submitVehicleReturn") @ResponseBody ResultBean submitVehicleReturn(@RequestBody ScmVehicleReturnDto scmVehicleReturnDto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@RequestBody ScmVehicleReturnFlowQuery scmVehicleReturnFlowQuery); + + @ApiOperation(value = "驳回任务") + @PostMapping("/reject") + ResultBean reject(@RequestBody ScmVehicleReturnFlowDto dto); + + @ApiOperation(value = "终止任务") + @PostMapping("/breakProcess") + ResultBean breakProcess(@RequestBody ScmVehicleReturnFlowDto dto); + + @ApiOperation(value = "撤回任务") + @PostMapping("/revokeProcess") + ResultBean revokeProcess(@RequestBody ScmVehicleReturnFlowDto dto); + } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowDto.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowDto.java new file mode 100644 index 0000000000..b0dcee3539 --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowDto.java @@ -0,0 +1,53 @@ +package com.yxt.anrui.scm.api.scmvehiclereturn; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/4/13 10:48 + * @Description + */ +@Data +public class ScmVehicleReturnFlowDto implements Serializable { + private static final long serialVersionUID = -1771287589587315324L; + + @ApiModelProperty(value = "业务sid") + private String businessSid; + + @ApiModelProperty("任务Id") + private String taskId; + + @ApiModelProperty("用户Id") + private String userId; + @ApiModelProperty("用户Sid") + private String userSid; + + @ApiModelProperty("任务意见") + private String comment; + + @ApiModelProperty("流程实例Id") + private String instanceId; + + @ApiModelProperty("节点") + private String targetKey; + + @ApiModelProperty("流程变量信息") + private Map values = new HashMap<>(); + + @ApiModelProperty("审批人") + private String assignee; + + @ApiModelProperty("候选人") + private List candidateUsers = new ArrayList<>(); + + @ApiModelProperty("审批组") + private List candidateGroups = new ArrayList<>(); + +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowQuery.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowQuery.java new file mode 100644 index 0000000000..15eb84185c --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnFlowQuery.java @@ -0,0 +1,28 @@ +package com.yxt.anrui.scm.api.scmvehiclereturn; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/4/12 22:18 + * @Description + */ +@Data +public class ScmVehicleReturnFlowQuery implements Query { + private static final long serialVersionUID = -3164237568589023489L; + + @ApiModelProperty(value = "处理意见") + private String comment; + @ApiModelProperty(value = "流程id") + private String instanceId; + @ApiModelProperty(value = "环节id") + private String taskId; + @ApiModelProperty(value = "用户sid") + private String userSid; + @ApiModelProperty(value = "业务sid") + private String businessSid; + + +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnQuery.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnQuery.java index 44ec1a1e7d..088175aef0 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnQuery.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnQuery.java @@ -18,5 +18,8 @@ public class ScmVehicleReturnQuery implements Query { @ApiModelProperty(value = "结束日期") private String applyDateEnd; + @ApiModelProperty(value = "节点状态") + private String nodeState; + } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnVo.java index 6ccd375e3d..546058f5af 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnVo.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturnVo.java @@ -28,7 +28,4 @@ public class ScmVehicleReturnVo implements Vo { @ApiModelProperty(value = "台数") private Integer num; - @ApiModelProperty(value = "流程状态") - private Integer flowState; - } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturndetails/ScmVehicleReturnDetailssVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturndetails/ScmVehicleReturnDetailssVo.java new file mode 100644 index 0000000000..161a86f25a --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturndetails/ScmVehicleReturnDetailssVo.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.scm.api.scmvehiclereturndetails; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/4/13 11:31 + * @Description + */ +@Data +public class ScmVehicleReturnDetailssVo implements Vo { + private static final long serialVersionUID = 5418774062719853985L; + + @ApiModelProperty(value = "车架号") + private String vinNo; + @ApiModelProperty(value = "车型名称") + private String modelName; + @ApiModelProperty(value = "常用配置") + private String configName; + @ApiModelProperty(value = "入库日期") + private String inboundDate; +} diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesRest.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesRest.java index 5b9eedb884..bed5bce219 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesRest.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesRest.java @@ -40,7 +40,7 @@ public class ScmVehicleActualSalesRest implements ScmVehicleActualSalesFeign { } @Override - public ResultBean details(String sid, String name) { - return scmVehicleActualSalesService.details(sid, name); + public ResultBean details(String sid) { + return scmVehicleActualSalesService.details(sid); } } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesService.java index 59e3fa6e41..e61e75a848 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesService.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleactualsales/ScmVehicleActualSalesService.java @@ -158,15 +158,17 @@ public class ScmVehicleActualSalesService extends MybatisBaseService details(String sid, String name) { + public ResultBean details(String sid) { ResultBean rb = ResultBean.fireFail(); - ScmVehicleActualSales scmVehicleActualSales = fetchBySid(sid); ScmVehicleActualSalesDetailsVo vo = new ScmVehicleActualSalesDetailsVo(); - if (scmVehicleActualSales == null) { + if (StringUtils.isBlank(sid)) { //申请日期即为当天 vo.setCreateTime(DateUtil.today()); - vo.setApplicationName(name); } else { + ScmVehicleActualSales scmVehicleActualSales = fetchBySid(sid); + if (scmVehicleActualSales == null) { + return rb.setMsg("该未售买断数据不存在"); + } vo = baseMapper.details(sid); List voList = scmVehicleActualDetailsService.detailsList(sid); } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.java index 9532932994..c2a73d6456 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturn; +import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnDetailsVo; import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -29,4 +30,5 @@ public interface ScmVehicleReturnMapper extends BaseMapper { @Param("procInstSid") String procInstSid, @Param("nodeSid") String nodeSid); + ScmVehicleReturnDetailsVo details(String sid); } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.xml b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.xml index 9777b25d69..d6e72b2a03 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.xml +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnMapper.xml @@ -5,8 +5,9 @@ select sr.sid, sr.applicationCode, sr.applicationName, - sr.modifyTime, + DATE_FORMAT(sr.createTime, '%Y-%m-%d') as createTime, sr.reason, + sr.nodeState, (select count(*) from scm_vehicle_return_details sd where sd.vehicleOutSid = sr.sid) as num from scm_vehicle_return sr ${ew.customSqlSegment} @@ -20,4 +21,10 @@ nodeSid=#{nodeSid} where sid = #{businessSid} + + \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnRest.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnRest.java index caac17a4c6..dd1523dec4 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnRest.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnRest.java @@ -1,9 +1,6 @@ package com.yxt.anrui.scm.biz.scmvehiclereturn; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnDto; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnFeign; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnQuery; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnVo; +import com.yxt.anrui.scm.api.scmvehiclereturn.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -37,8 +34,33 @@ public class ScmVehicleReturnRest implements ScmVehicleReturnFeign { return scmVehicleReturnService.saveOrUpdateVehicleReturn(scmVehicleReturnDto); } + @Override + public ResultBean details(String sid) { + return scmVehicleReturnService.details(sid); + } + @Override public ResultBean submitVehicleReturn(ScmVehicleReturnDto scmVehicleReturnDto) { return scmVehicleReturnService.submitVehicleReturn(scmVehicleReturnDto); } + + @Override + public ResultBean complete(ScmVehicleReturnFlowQuery scmVehicleReturnFlowQuery) { + return scmVehicleReturnService.complete(scmVehicleReturnFlowQuery); + } + + @Override + public ResultBean reject(ScmVehicleReturnFlowDto dto) { + return scmVehicleReturnService.reject(dto); + } + + @Override + public ResultBean breakProcess(ScmVehicleReturnFlowDto dto) { + return scmVehicleReturnService.breakProcess(dto); + } + + @Override + public ResultBean revokeProcess(ScmVehicleReturnFlowDto dto) { + return scmVehicleReturnService.revokeProcess(dto); + } } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnService.java index 936192f977..064456ea81 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnService.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnService.java @@ -1,18 +1,26 @@ package com.yxt.anrui.scm.biz.scmvehiclereturn; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.flowable.api.flow.FlowableFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTask; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign; +import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum; import com.yxt.anrui.flowable.api.sysformlink.SysFormStateVo; import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.api.utils.ProcessStateEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturn; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnDto; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnQuery; -import com.yxt.anrui.scm.api.scmvehiclereturn.ScmVehicleReturnVo; +import com.yxt.anrui.scm.api.scmvehiclereturn.*; import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetails; +import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetailssVo; import com.yxt.anrui.scm.biz.scmvehiclereturndetails.ScmVehicleReturnDetailsService; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -25,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -47,6 +56,8 @@ public class ScmVehicleReturnService extends MybatisBaseService scmVehicleReturnDetailsList = scmVehicleReturnDetailsService.selectByReturnSid(sid); if (scmVehicleReturnDetailsList.size() > 0) { @@ -119,9 +143,6 @@ public class ScmVehicleReturnService extends MybatisBaseService qw = new QueryWrapper<>(); if (params != null) { //申请日期 - //状态 + qw.apply(StringUtils.isNotBlank(params.getApplyDateStart()), "date_format (sr.createTime,'%Y-%m-%d') >= date_format('" + params.getApplyDateStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(params.getApplyDateEnd()), "date_format (sr.createTime,'%Y-%m-%d') <= date_format('" + params.getApplyDateEnd() + "','%Y-%m-%d')" + ); + //状态:模糊查询 + if(StringUtils.isNotBlank(params.getNodeState())){ + qw.like("sr.nodeState", params.getNodeState()); + } + } return qw; } @@ -153,12 +181,12 @@ public class ScmVehicleReturnService extends MybatisBaseService map = (Map) resultBean.getData(); + ResultBean businessResultBean = flowableFeign.businessStart(ProcDefEnum.SCMVEHICLERETURN.getProDefId(), scmVehicleReturnDto.getUserSid(), variables); + if (businessResultBean.getSuccess() && businessResultBean.getData() != null) { + Map map = (Map) businessResultBean.getData(); //更新退库业务表中的流程状态 modifyFlowState(businessSid, - ProcDefEnum.ORDERDEPOSITAPPROVE.getProDefId(),//procDefId + ProcDefEnum.SCMVEHICLERETURN.getProDefId(),//procDefId map.get("nodeState"),//state map.get("procInsId"),//procInstSid map.get("taskDefKey")//nodeSid @@ -196,4 +224,127 @@ public class ScmVehicleReturnService extends MybatisBaseService variables = Convert.toMap(String.class, Object.class, scmVehicleReturnFlowQuery); + BusinessVariables bv = BusinessVariables.builder().build(); + bv.setFormVariables(variables); + ResultBean resultBean = flowTaskFeign.businessComplete(bv); + if (!resultBean.getSuccess()) { + return resultBean; + } + String nodeState = ""; + String taskDefKey = ""; + Map map = new HashMap<>(); + map.put("businessSid", variables.get("businessSid").toString()); + if (resultBean.getData() != null) { + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(resultBean.getData().getProcInsId()); + if (listResultBean.getSuccess() && listResultBean.getData() != null && listResultBean.getData().size() != 0) { + nodeState = listResultBean.getData().get(0).getName_(); + taskDefKey = listResultBean.getData().get(0).getTask_def_key_(); + } else { + nodeState = ProcessStateEnum.FINISHED.getStateName(); + taskDefKey = "Event_end"; + map.put("flowState", SysFormLinkFlowStateEnum.FINISH.getCode()); + } + } + map.put("nodeState", nodeState); + map.put("taskDefKey", taskDefKey); + sysFormLinkFeign.updateFiled(map); + return new ResultBean().success(); + } + + /** + * 驳回任务 + * + * @param dto + * @return + */ + public ResultBean reject(ScmVehicleReturnFlowDto dto) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(dto, flowTaskVo); + ResultBean> resultBean = flowTaskFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return resultBean; + } + String nodeState = resultBean.getData().get(0).getName_(); + String taskDefKey = resultBean.getData().get(0).getTask_def_key_(); + String incomingSourceRef = resultBean.getData().get(0).getIncomingSourceRef(); + Map map = new HashMap<>(); + map.put("businessSid", dto.getBusinessSid()); + map.put("nodeState", nodeState); + map.put("taskDefKey", taskDefKey); + if (incomingSourceRef.contains("start")) { + map.put("flowState", SysFormLinkFlowStateEnum.REJECT.getCode()); + } + sysFormLinkFeign.updateFiled(map); + return new ResultBean().success(); + } + + public ResultBean breakProcess(ScmVehicleReturnFlowDto dto) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(dto, flowTaskVo); + ResultBean resultBean = flowTaskFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return resultBean; + } + Map map = new HashMap<>(); + map.put("businessSid", dto.getBusinessSid()); + map.put("nodeState", String.valueOf(resultBean.getData())); + map.put("taskDefKey", "Event_end"); + map.put("flowState", SysFormLinkFlowStateEnum.BREAK.getCode()); + sysFormLinkFeign.updateFiled(map); + return resultBean.success(); + } + + public ResultBean revokeProcess(ScmVehicleReturnFlowDto dto) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(dto, flowTaskVo); + ResultBean> resultBean = flowTaskFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return resultBean; + } + String nodeState = resultBean.getData().get(0).getName_(); + String taskDefKey = resultBean.getData().get(0).getTask_def_key_(); + String inComingSourceRef = resultBean.getData().get(0).getIncomingSourceRef(); + Map map = new HashMap<>(); + map.put("businessSid", dto.getBusinessSid()); + if (inComingSourceRef.contains("start")) { + map.put("nodeState", SysFormLinkFlowStateEnum.UNCOMMITTED.getState()); + map.put("taskDefKey", taskDefKey); + map.put("flowState", SysFormLinkFlowStateEnum.UNCOMMITTED.getCode()); + } else { + map.put("nodeState", nodeState); + map.put("taskDefKey", taskDefKey); + } + sysFormLinkFeign.updateFiled(map); + return new ResultBean().success(); + } + + public ResultBean details(String sid) { + ResultBean rb = ResultBean.fireFail(); + ScmVehicleReturnDetailsVo vo = new ScmVehicleReturnDetailsVo(); + if (StringUtils.isBlank(sid)) { + //申请日期即为当天 + vo.setCreateTime(DateUtil.today()); + vo.setApplicationCode("CGTK" + DateUtil.format(DateUtil.date(), "yyyyMMdd")); + } else { + ScmVehicleReturn ScmVehicleReturn = fetchBySid(sid); + if (ScmVehicleReturn == null) { + return rb.setMsg("该采购退库申请不存在"); + } + vo = baseMapper.details(sid); + List voList = scmVehicleReturnDetailsService.detailsList(sid); + vo.setVoList(voList); + } + return rb.success().setData(vo); + } } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.java index dd10097645..372a1b12c8 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.java @@ -2,6 +2,7 @@ package com.yxt.anrui.scm.biz.scmvehiclereturndetails; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetails; +import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetailssVo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -30,4 +31,6 @@ public interface ScmVehicleReturnDetailsMapper extends BaseMapper selectVinNoList(String sid); + + List detailsList(String sid); } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.xml b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.xml index bab35954ce..58a5601d3b 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.xml +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsMapper.xml @@ -18,4 +18,10 @@ from scm_vehicle_return_details where vehicleOutSid = #{sid} + + \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsService.java index d2b865828f..0adf692a5c 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsService.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturndetails/ScmVehicleReturnDetailsService.java @@ -2,6 +2,7 @@ package com.yxt.anrui.scm.biz.scmvehiclereturndetails; import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetails; import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetailsDto; +import com.yxt.anrui.scm.api.scmvehiclereturndetails.ScmVehicleReturnDetailssVo; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.core.result.ResultBean; import org.springframework.beans.BeanUtils; @@ -61,4 +62,8 @@ public class ScmVehicleReturnDetailsService extends MybatisBaseService vinNoList = baseMapper.selectVinNoList(sid); return rb.success().setData(vinNoList); } + + public List detailsList(String sid) { + return baseMapper.detailsList(sid); + } }