Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
God 9 months ago
parent
commit
596c7a778c
  1. 74
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordFeign.java
  2. 88
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordFeignFallback.java
  3. 4
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmdockingpeople/CrmDockingPeopleMapper.java
  4. 5
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmdockingpeople/CrmDockingPeopleService.java
  5. 3
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordMapper.java
  6. 16
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordMapper.xml
  7. 94
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordRest.java
  8. 513
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordService.java
  9. 70
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/fegin/as/AsCustomerVehicleDto.java
  10. 9
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/fegin/as/AsCustomerVehicleFeign.java
  11. 29
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java
  12. 16
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/crm/crmmaintenanceenterpriserecord/MonthEndRest.java
  13. 119
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/crm/crmmaintenanceenterpriserecord/MonthEndService.java
  14. 22
      yxt-as-ui/src/api/statement/business.js
  15. 13
      yxt-as-ui/src/api/statement/deadStock.js
  16. 40
      yxt-as-ui/src/api/statement/doBusiness.js
  17. 13
      yxt-as-ui/src/api/statement/inventory.js
  18. 72
      yxt-as-ui/src/router/index.js
  19. 310
      yxt-as-ui/src/views/statement/business/businessDetail.vue
  20. 224
      yxt-as-ui/src/views/statement/business/serviceSummary.vue
  21. 217
      yxt-as-ui/src/views/statement/deadStock/deadStock.vue
  22. 214
      yxt-as-ui/src/views/statement/doBusiness/businessAnalysisByFirst.vue
  23. 215
      yxt-as-ui/src/views/statement/doBusiness/businessAnalysisBySecond.vue
  24. 223
      yxt-as-ui/src/views/statement/doBusiness/businessSummary.vue
  25. 297
      yxt-as-ui/src/views/statement/doBusiness/operatingDetail.vue
  26. 257
      yxt-as-ui/src/views/statement/inventory/inventory.vue
  27. 37
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/AsSitemsCompleteDto.java
  28. 26
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsDelegateQuery.java
  29. 25
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsNodeQuery.java
  30. 26
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsNodeVo.java
  31. 48
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsTaskQuery.java
  32. 25
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SubmitSitemsDto.java
  33. 43
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillService.java
  34. 29
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.java
  35. 246
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleRest.java
  36. 4
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java
  37. 3
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyMapper.java
  38. 16
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyMapper.xml
  39. 116
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyRest.java
  40. 495
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyService.java
  41. 128
      yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventoryrecord/WmsInventoryRecordDto.java
  42. 24
      yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventoryrecord/WmsInventoryRecordFeign.java

74
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordFeign.java

@ -86,43 +86,43 @@ public interface CrmMaintenanceenterpriseRecordFeign {
public ResultBean<CrmMaintenanceenterpriseRecordDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid);
// //------------------------------流程接口----------------------------------------------
//
// @ApiOperation("提交")
// @PostMapping("/submit")
// public ResultBean submitRecordApplication(@RequestBody @Valid SubmitEnterpriseDto dto);
//
// @ApiOperation(value = "办理(同意)")
// @PostMapping("/complete")
// public ResultBean complete(@Valid @RequestBody EnterpriseCompleteDto dto);
//
// @ApiOperation(value = "撤回流程")
// @PostMapping(value = "/revokeProcess")
// public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody EnterpriseTaskQuery query);
//
// @ApiOperation(value = "驳回任务")
// @PostMapping(value = "/reject")
// public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody EnterpriseTaskQuery query);
//
// @ApiOperation(value = "终止任务")
// @PostMapping(value = "/breakProcess")
// public ResultBean breakProcess(@RequestBody EnterpriseTaskQuery query);
//
// @ApiOperation(value = "流程历史流转记录")
// @GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}")
// public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId);
//
// @ApiOperation(value = "获取下一个环节")
// @GetMapping(value = "/getNextNodesForSubmit")
// ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap EnterpriseNodeQuery query);
//
// @ApiOperation(value = "获取上一个环节")
// @GetMapping(value = "/getPreviousNodesForReject")
// ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap EnterpriseNodeQuery query);
//
// @ApiOperation(value = "加签")
// @PostMapping(value = "/delegate")
// public ResultBean delegate(@RequestBody EnterpriseDelegateQuery query);
//------------------------------流程接口----------------------------------------------
@ApiOperation("提交")
@PostMapping("/submit")
public ResultBean submitRecordApplication(@RequestBody @Valid SubmitEnterpriseDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody EnterpriseCompleteDto dto);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody EnterpriseTaskQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody EnterpriseTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@RequestBody EnterpriseTaskQuery query);
@ApiOperation(value = "流程历史流转记录")
@GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}")
public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap EnterpriseNodeQuery query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap EnterpriseNodeQuery query);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody EnterpriseDelegateQuery query);
}

88
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordFeignFallback.java

@ -76,48 +76,48 @@ public class CrmMaintenanceenterpriseRecordFeignFallback implements CrmMaintenan
return rb.setMsg("接口crm/crmmaintenanceenterpriserecord/fetchDetailsBySid无法访问");
}
// @Override
// public ResultBean submitRecordApplication(SubmitEnterpriseDto dto) {
// return null;
// }
//
// @Override
// public ResultBean complete(EnterpriseCompleteDto dto) {
// return null;
// }
//
// @Override
// public ResultBean revokeProcess(EnterpriseTaskQuery query) {
// return null;
// }
//
// @Override
// public ResultBean taskReject(EnterpriseTaskQuery query) {
// return null;
// }
//
// @Override
// public ResultBean breakProcess(EnterpriseTaskQuery query) {
// return null;
// }
//
// @Override
// public ResultBean flowRecord(String procInsId) {
// return null;
// }
//
// @Override
// public ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit(EnterpriseNodeQuery query) {
// return null;
// }
//
// @Override
// public ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject(EnterpriseNodeQuery query) {
// return null;
// }
//
// @Override
// public ResultBean delegate(EnterpriseDelegateQuery query) {
// return null;
// }
@Override
public ResultBean submitRecordApplication(SubmitEnterpriseDto dto) {
return null;
}
@Override
public ResultBean complete(EnterpriseCompleteDto dto) {
return null;
}
@Override
public ResultBean revokeProcess(EnterpriseTaskQuery query) {
return null;
}
@Override
public ResultBean taskReject(EnterpriseTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(EnterpriseTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit(EnterpriseNodeQuery query) {
return null;
}
@Override
public ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject(EnterpriseNodeQuery query) {
return null;
}
@Override
public ResultBean delegate(EnterpriseDelegateQuery query) {
return null;
}
}

4
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmdockingpeople/CrmDockingPeopleMapper.java

@ -30,6 +30,7 @@ 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.crmdockingpeople.PeopleList;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -65,4 +66,7 @@ public interface CrmDockingPeopleMapper extends BaseMapper<CrmDockingPeople> {
List<CrmDockingPeopleVo> selectListVo();
List<PeopleList> getListByCustomerSid(@Param("customerSid") String customerSid);
@Delete("delete from crm_docking_people where customerSid = #{customerSid}")
void delByCustomerSid(String customerSid);
}

5
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmdockingpeople/CrmDockingPeopleService.java

@ -126,4 +126,9 @@ public class CrmDockingPeopleService extends MybatisBaseService<CrmDockingPeople
public List<PeopleList> getListByCustomerSid(String customerSid) {
return baseMapper.getListByCustomerSid(customerSid);
}
public void delByCustomerSid(String customerSid) {
baseMapper.delByCustomerSid(customerSid);
}
}

3
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordMapper.java

@ -37,6 +37,7 @@ import com.yxt.anrui.crm.api.crmmaintenanceenterpriserecord.CrmMaintenanceenterp
import com.yxt.anrui.crm.api.crmmaintenanceenterpriserecord.CrmMaintenanceenterpriseRecordVo;
import java.util.List;
import java.util.Map;
/**
* Project: crm(crm) <br/>
@ -71,4 +72,6 @@ public interface CrmMaintenanceenterpriseRecordMapper extends BaseMapper<CrmMain
int selPersonCount(@Param("customerSid") String customerSid);
int selectBySid(String join);
int updateFlowFiled(Map<String, Object> map);
}

16
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordMapper.xml

@ -71,4 +71,20 @@
WHERE nodeState != '待提交'
and find_in_set(sid, #{list})
</select>
<update id="updateFlowFiled">
UPDATE crm_maintenanceenterprise_record
SET nodeState=#{nodeState}
, nodeSid=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
</mapper>

94
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordRest.java

@ -107,51 +107,51 @@ public class CrmMaintenanceenterpriseRecordRest implements CrmMaintenanceenterpr
}
// @Override
// public ResultBean submitRecordApplication(SubmitEnterpriseDto dto) {
// return crmMaintenanceenterpriseRecordService.submitRecordApplication(dto);
// }
//
// @Override
// public ResultBean complete(EnterpriseCompleteDto dto) {
// BusinessVariables bv = new BusinessVariables();
// BeanUtil.copyProperties(dto, bv);
// bv.setModelId(ProcDefEnum.ENTERPRISEAPPLY.getProDefId());
// return crmMaintenanceenterpriseRecordService.complete(bv);
// }
//
// @Override
// public ResultBean revokeProcess(EnterpriseTaskQuery query) {
// return crmMaintenanceenterpriseRecordService.revokeProcess(query);
// }
//
// @Override
// public ResultBean taskReject(EnterpriseTaskQuery query) {
// return crmMaintenanceenterpriseRecordService.taskReject(query);
// }
//
// @Override
// public ResultBean breakProcess(EnterpriseTaskQuery query) {
// return crmMaintenanceenterpriseRecordService.breakProcess(query);
// }
//
// @Override
// public ResultBean flowRecord(String procInsId) {
// return crmMaintenanceenterpriseRecordService.flowRecord(procInsId);
// }
//
// @Override
// public ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit(EnterpriseNodeQuery query) {
// return crmMaintenanceenterpriseRecordService.getNextNodesForSubmit(query);
// }
//
// @Override
// public ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject(EnterpriseNodeQuery query) {
// return crmMaintenanceenterpriseRecordService.getPreviousNodesForReject(query);
// }
//
// @Override
// public ResultBean delegate(EnterpriseDelegateQuery query) {
// return crmMaintenanceenterpriseRecordService.delegate(query);
// }
@Override
public ResultBean submitRecordApplication(SubmitEnterpriseDto dto) {
return crmMaintenanceenterpriseRecordService.submitRecordApplication(dto);
}
@Override
public ResultBean complete(EnterpriseCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.ENTERPRISEAPPLY.getProDefId());
return crmMaintenanceenterpriseRecordService.complete(bv);
}
@Override
public ResultBean revokeProcess(EnterpriseTaskQuery query) {
return crmMaintenanceenterpriseRecordService.revokeProcess(query);
}
@Override
public ResultBean taskReject(EnterpriseTaskQuery query) {
return crmMaintenanceenterpriseRecordService.taskReject(query);
}
@Override
public ResultBean breakProcess(EnterpriseTaskQuery query) {
return crmMaintenanceenterpriseRecordService.breakProcess(query);
}
@Override
public ResultBean flowRecord(String procInsId) {
return crmMaintenanceenterpriseRecordService.flowRecord(procInsId);
}
@Override
public ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit(EnterpriseNodeQuery query) {
return crmMaintenanceenterpriseRecordService.getNextNodesForSubmit(query);
}
@Override
public ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject(EnterpriseNodeQuery query) {
return crmMaintenanceenterpriseRecordService.getPreviousNodesForReject(query);
}
@Override
public ResultBean delegate(EnterpriseDelegateQuery query) {
return crmMaintenanceenterpriseRecordService.delegate(query);
}
}

513
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmmaintenanceenterpriserecord/CrmMaintenanceenterpriseRecordService.java

@ -27,28 +27,50 @@ package com.yxt.anrui.crm.biz.crmmaintenanceenterpriserecord;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.crm.api.crmcustomertemp.AsCustomerListVo;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.crm.api.crmdockingpeople.CrmDockingPeople;
import com.yxt.anrui.crm.api.crmfile.CrmFile;
import com.yxt.anrui.crm.api.crmfile.CrmFileDetailsVo;
import com.yxt.anrui.crm.api.crmmaintenanceenterpriseperson.CrmMaintenanceenterprisePerson;
import com.yxt.anrui.crm.api.crmmaintenanceenterpriserecord.*;
import com.yxt.anrui.crm.api.crmmaintenanceenterpriserecord.flowable.*;
import com.yxt.anrui.crm.api.crmmaintenanceenterpriseveh.CrmMaintenanceenterpriseVeh;
import com.yxt.anrui.crm.biz.crmcustomertemp.CrmCustomerTempService;
import com.yxt.anrui.crm.biz.crmdockingpeople.CrmDockingPeopleService;
import com.yxt.anrui.crm.biz.crmfile.CrmFileService;
import com.yxt.anrui.crm.biz.crmmaintenanceenterpriseperson.CrmMaintenanceenterprisePersonService;
import com.yxt.anrui.crm.biz.crmmaintenanceenterpriseveh.CrmMaintenanceenterpriseVehService;
import com.yxt.anrui.crm.fegin.as.AsCustomerVehicleDto;
import com.yxt.anrui.crm.fegin.as.AsCustomerVehicleFeign;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
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.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApply;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -60,11 +82,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
* Project: crm(crm) <br/>
@ -82,6 +106,20 @@ import java.util.List;
@Service
public class CrmMaintenanceenterpriseRecordService extends MybatisBaseService<CrmMaintenanceenterpriseRecordMapper, CrmMaintenanceenterpriseRecord> {
@Autowired
private AsCustomerVehicleFeign asCustomerVehicleFeign;
@Autowired
private MessageListFeign messageListFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Resource
private FlowFeign flowFeign;
@Resource
private FlowableFeign flowableFeign;
@Resource
private FlowTaskFeign flowTaskFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private CrmFileService crmFileService;
@Autowired
@ -92,14 +130,14 @@ public class CrmMaintenanceenterpriseRecordService extends MybatisBaseService<Cr
private CrmMaintenanceenterpriseVehService crmMaintenanceenterpriseVehService;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Resource
private AsCustomerVehicleFeign asCustomerVehicleFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private CrmCustomerTempService crmCustomerTempService;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private CrmDockingPeopleService crmDockingPeopleService;
private QueryWrapper<CrmMaintenanceenterpriseRecord> createQueryWrapper(CrmMaintenanceenterpriseRecordQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
@ -493,4 +531,463 @@ public class CrmMaintenanceenterpriseRecordService extends MybatisBaseService<Cr
}
return rb.success();
}
//-------------------------------------流程------------------------------------------------/
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitEnterpriseDto dto, CrmMaintenanceenterpriseRecord crmMaintenanceenterpriseRecord) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (crmMaintenanceenterpriseRecord != null) {
String businessTaskId = crmMaintenanceenterpriseRecord.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean submitRecordApplication(SubmitEnterpriseDto dto) {
ResultBean rb = ResultBean.fireFail();
CrmMaintenanceenterpriseRecord apply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, apply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
String businessSid = saveOrUpdateDto(dto);
CrmMaintenanceenterpriseRecord entity = fetchBySid(businessSid);
String orgSidPath = "";
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(entity.getDeptSid()).getData();
if (null != organizationVo) {
orgSidPath = organizationVo.getOrgSidPath();
} else {
SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData();
if (null != data) {
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
}
}
List<String> orgPathList = Arrays.asList(orgSidPath.split("/"));
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData();
if (sysOrganization == null) {
return rb.setMsg("当前所在的组织机构不存在");
}
if (StringUtils.isBlank(sysOrganization.getManagerSid())) {
// return rb.setMsg("当前所在的组织机构未设置主管人员");
sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(entity.getSalesUserSid())) {
// if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
// String orderNames = "<" + entity.getCustomer() + ">" + "欠款客户备案";
// variables.put("orderNames", orderNames);
CrmMaintenanceenterpriseRecord record = fetchBySid(businessSid);
String msgBusinessSid = record.getSid();
//用户的部门全路径sid
bv.setOrgSidPath(orgSidPath);
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getCreateBySid());
bv.setFormVariables(variables);
// String nextNodeUserSids_ = sysOrganization.getManagerSid();
// if (isTure) {
// bv.setNextNodeUserSids(nextNodeUserSids_);
// } else {
// bv.setNextNodeUserSids(entity.getSalesUserSid());
// }
//流程定义id
bv.setModelId(ProcDefEnum.ENTERPRISEAPPLY.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.ENTERPRISEAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(msgBusinessSid);
messageFlowableQuery.setModuleName("定点维修月结欠款备案申请");
SysUserVo userVo = sysUserFeign.fetchBySid(record.getCreateBySid()).getData();
if (userVo != null) {
if (StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
messageFlowableQuery.setMsgTitle("定点维修月结欠款备案申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
CrmMaintenanceenterpriseRecord record1 = fetchBySid(dto.getSid());
bv.setTaskId(dto.getTaskId());
bv.setTaskDefKey(record1.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
CrmMaintenanceenterpriseRecord record = this.fetchBySid(businessSid);
if (bv.getTaskId().equals(record.getTaskId())) {
String orgSidPath = "";
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(record.getDeptSid()).getData();
if (null != organizationVo) {
orgSidPath = organizationVo.getOrgSidPath();
}
bv.setOrgSidPath(orgSidPath);
//流程中的参数赋值
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
CrmMaintenanceenterpriseRecord entity = fetchBySid(businessSid);
entity.setClosingDate(new Date());
baseMapper.updateById(entity);
Date filingIndate = entity.getFilingIndate();
String customerSid = entity.getCustomerSid();
List<CrmMaintenanceenterprisePerson> personList = crmMaintenanceenterprisePersonService.selByBillSid(businessSid);
if (!personList.isEmpty()) {
crmDockingPeopleService.delByCustomerSid(customerSid);
for (CrmMaintenanceenterprisePerson person : personList) {
CrmDockingPeople crmDockingPeople = new CrmDockingPeople();
if (StringUtils.isNotBlank(person.getName())) {
crmDockingPeople.setName(person.getName());
}
if (StringUtils.isNotBlank(person.getMobile())) {
crmDockingPeople.setMobile(person.getMobile());
}
crmDockingPeople.setCustomerSid(customerSid);
crmDockingPeopleService.insert(crmDockingPeople);
}
}
List<CrmMaintenanceenterpriseVeh> vehs = crmMaintenanceenterpriseVehService.selByBillSid(businessSid);
if (!vehs.isEmpty()) {
for (CrmMaintenanceenterpriseVeh veh : vehs) {
if (StringUtils.isNotBlank(veh.getAsVinSid())) {
AsCustomerVehicleDto v = new AsCustomerVehicleDto();
v.setSid(veh.getAsVinSid());
if (StringUtils.isNotBlank(veh.getVehMark())) {
v.setVehMark(veh.getVehMark());
}
if (StringUtils.isNotBlank(veh.getVinNo())) {
v.setVinNo(veh.getVinNo());
}
v.setCustomerSid(customerSid);
asCustomerVehicleFeign.save(v);
} else {
AsCustomerVehicleDto v = new AsCustomerVehicleDto();
if (StringUtils.isNotBlank(veh.getVehMark())) {
v.setVehMark(veh.getVehMark());
}
if (StringUtils.isNotBlank(veh.getVinNo())) {
v.setVinNo(veh.getVinNo());
}
v.setCustomerSid(customerSid);
asCustomerVehicleFeign.save(v);
}
}
}
CrmCustomerTemp customerTemp = crmCustomerTempService.fetchBySid(customerSid);
customerTemp.setFilingIndate(filingIndate);
customerTemp.setIsEnable(1);
customerTemp.setIsDesignatedEnterprise(1);
crmCustomerTempService.updateById(customerTemp);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean revokeProcess(EnterpriseTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
CrmMaintenanceenterpriseRecord paymentApply = fetchBySid(query.getBusinessSid());
String businessTaskId = paymentApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean taskReject(EnterpriseTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
CrmMaintenanceenterpriseRecord paymentApply = fetchBySid(businessSid);
if (paymentApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = paymentApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
paymentApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = paymentApply.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(paymentApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("定点维修月结欠款备案申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) {
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
SysUserVo userVo = sysUserFeign.fetchBySid(paymentApply.getCreateBySid()).getData();
if (userVo != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
}
messageFlowableQuery.setMsgTitle("定点维修月结欠款备案申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean breakProcess(EnterpriseTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (org.apache.commons.lang3.StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
CrmMaintenanceenterpriseRecord paymentApply = fetchBySid(query.getBusinessSid());
String businessTaskId = paymentApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(paymentApply.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean flowRecord(String procInsId) {
return flowTaskFeign.businessFlowRecord(procInsId);
}
public ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit(EnterpriseNodeQuery query) {
ResultBean<List<EnterpriseNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
CrmMaintenanceenterpriseRecord paymentApply = fetchBySid(query.getBusinessSid());
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(paymentApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<EnterpriseNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), EnterpriseNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject(EnterpriseNodeQuery query) {
ResultBean<List<EnterpriseNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
CrmMaintenanceenterpriseRecord paymentApply = fetchBySid(query.getBusinessSid());
// //若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(paymentApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<EnterpriseNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), EnterpriseNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean delegate(EnterpriseDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

70
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/fegin/as/AsCustomerVehicleDto.java

@ -0,0 +1,70 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.crm.fegin.as;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: asdfasd(sdg) <br/>
* File: AsCustomerVehicleDto.java <br/>
* Class: as.api.ascustomervehicle.AsCustomerVehicleDto <br/>
* Description: 客户车辆信息 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-03-19 11:28:19 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "客户车辆信息 数据传输对象", description = "客户车辆信息 数据传输对象")
public class AsCustomerVehicleDto implements Dto {
private String sid; // sid
@ApiModelProperty("客户sid")
private String customerSid; // 客户sid
@ApiModelProperty("车牌号")
private String vehMark; // 车牌号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("发动机号")
private String engineNo; // 发动机号
@ApiModelProperty("车型sid")
private String vehModelSid; // 车型sid
@ApiModelProperty("车型")
private String vehModel; // 车型
@ApiModelProperty("购车日期")
private String buyDate; // 购车日期
@ApiModelProperty("0为内部车,1为外部车")
private Integer vehState; // 0为内部车,1为外部车
}

9
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/fegin/as/AsCustomerVehicleFeign.java

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -29,4 +30,12 @@ public interface AsCustomerVehicleFeign {
@ApiOperation("根据客户sid查询车辆数量")
@GetMapping("/getVehListCountsByCustomerSid")
public int getVehListCountsByCustomerSid(@RequestParam("customerSid") String customerSid);
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AsCustomerVehicleDto dto);
@ApiOperation("根据客户sid删除")
@PostMapping("/deleteByCustomerSid")
public void deleteByCustomerSid(@RequestParam("customerSid") String customerSid);
}

29
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java

@ -956,9 +956,13 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
int check = 0;// 0不推抵顶保证金凭证 1推送
//结清合计 + 贷款保证金结转金额
BigDecimal add = amountTo.add(depositJZ);
BigDecimal actualDeposit = BigDecimal.ZERO;
if (add.compareTo(BigDecimal.ZERO) > 0) {
//结转剩余保证金
carryForward(loanSettleApply);
BigDecimal decimal = carryForward(loanSettleApply);
if (null != decimal) {
actualDeposit = decimal;
}
check = 1;
}
//设置结清申请的“客户结清确认”状态为是
@ -970,7 +974,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
//设置认款月还为已转付
updatePaymentStateByBusVinSid(loanSettleApply.getBusVinSid());
//推送财务凭证
pushSettleVoucher(loanSettleApply,check);
pushSettleVoucher(loanSettleApply,check,actualDeposit);
}
baseMapper.updateById(loanSettleApply);
} else {
@ -1160,8 +1164,10 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
}
//--------------------------------- 贷款保证金结转 -------------------------
private void carryForward(LoanSettleApply loanSettleApply) {
private BigDecimal carryForward(LoanSettleApply loanSettleApply) {
String userSid = loanSettleApply.getCreateBySid();
BigDecimal returnDecimal = BigDecimal.ZERO;
BigDecimal finalDeposit = BigDecimal.ZERO;
BigDecimal deposit = BigDecimal.ZERO; // 贷款保证金 - (扣罚金额-贷款保证金减免)
String busVinSid = loanSettleApply.getBusVinSid();
List<LoanRepaymentHistory> histories = new ArrayList<>();//还款记录
@ -1178,6 +1184,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
if (null != companyCost) {
if (null != companyCost.getLoanDeposit()) {
deposit = companyCost.getLoanDeposit();
finalDeposit = companyCost.getLoanDeposit();
}
}
//按照顺序结转
@ -1449,6 +1456,8 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
if (!updatePsList.isEmpty() && updatePsList.size() > 0) {
loanRepaymentPlanDetailsService.updateList(updatePsList);
}
returnDecimal = finalDeposit.subtract(deposit);
return returnDecimal;
}
//--------------------------------- 减免 ----------------------------
@ -1629,7 +1638,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
}
//--------推送财务结清凭证------------------
private void pushSettleVoucher(LoanSettleApply loanSettleApply,int check) {
private void pushSettleVoucher(LoanSettleApply loanSettleApply,int check,BigDecimal actualDeposit) {
String sid = loanSettleApply.getSid();
LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(sid);
LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(sid);
@ -1744,13 +1753,13 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
}
//剩余贷款保证金结转
if (check == 1) {
if (sybzj.compareTo(BigDecimal.ZERO) > 0) {
if (actualDeposit.compareTo(BigDecimal.ZERO) > 0) {
GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail();
voucherDetail.setSceneCode("剩余贷款保证金结转");
voucherDetail.setBankName(planDetails.getBankName());
voucherDetail.setDeptCode(deptCode);
voucherDetail.setCustomerCode(customerNumber);
voucherDetail.setAmount(sybzj);
voucherDetail.setAmount(actualDeposit);
voucherDetails.add(voucherDetail);
}
}
@ -2874,8 +2883,12 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
}
loanSettleApply.setState(1);
baseMapper.updateById(loanSettleApply);
BigDecimal actualDeposit = BigDecimal.ZERO;
//结转剩余保证金
carryForward(loanSettleApply);
BigDecimal decimal = carryForward(loanSettleApply);
if (null != decimal) {
actualDeposit = decimal;
}
//更新车辆表结清状态
baseMapper.updateBus(loanSettleApply.getBusVinSid(), "1");
//推送资方结清款到出纳代付款列表
@ -2883,7 +2896,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
//设置认款月还为已转付
updatePaymentStateByBusVinSid(loanSettleApply.getBusVinSid());
//推送财务凭证
pushSettleVoucher(loanSettleApply,1);
pushSettleVoucher(loanSettleApply,1,actualDeposit);
return rb.success();
}

16
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/crm/crmmaintenanceenterpriserecord/MonthEndRest.java

@ -32,6 +32,10 @@ import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.flow.Comple
import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.flow.MonthEndDelegateQuery;
import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.flow.MonthEndFlowableQuery;
import com.yxt.anrui.terminal.api.finance.collectionConfirm.*;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleDelegateQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
@ -67,31 +71,31 @@ public class MonthEndRest implements MonthEndFeign {
@Override
public ResultBean agreeCreditInfo(CompleteMonthEndDto dto) {
return null;
return monthEndService.agreeCreditInfo(dto);
}
@Override
public ResultBean rejectCreditInfo(AppMonthEndTaskQuery query) {
return null;
return monthEndService.rejectCreditInfo(query);
}
@Override
public ResultBean recallCreditInfo(AppMonthEndTaskQuery query) {
return null;
return monthEndService.recallCreditInfo(query);
}
@Override
public ResultBean stopCreditInfo(AppMonthEndTaskQuery query) {
return null;
return monthEndService.stopCreditInfo(query);
}
@Override
public ResultBean<String> getFlowOperateTitle(MonthEndFlowableQuery query) {
return null;
return monthEndService.getFlowOperateTitle(query);
}
@Override
public ResultBean delegate(MonthEndDelegateQuery delegateQuery) {
return null;
return monthEndService.delegate(delegateQuery);
}
}

119
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/crm/crmmaintenanceenterpriserecord/MonthEndService.java

@ -29,12 +29,27 @@ package com.yxt.anrui.terminal.biz.crm.crmmaintenanceenterpriserecord;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.crm.api.crmmaintenanceenterpriserecord.CrmMaintenanceenterpriseRecordDetailsVo;
import com.yxt.anrui.crm.api.crmmaintenanceenterpriserecord.CrmMaintenanceenterpriseRecordFeign;
import com.yxt.anrui.crm.api.crmmaintenanceenterpriserecord.flowable.*;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.MonthEndDetailsVo;
import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.flow.AppMonthEndTaskQuery;
import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.flow.CompleteMonthEndDto;
import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.flow.MonthEndDelegateQuery;
import com.yxt.anrui.terminal.api.crm.crmmaintenanceenterpriserecord.flow.MonthEndFlowableQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleDelegateQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@ -57,6 +72,10 @@ public class MonthEndService {
@Autowired
private CrmMaintenanceenterpriseRecordFeign crmMaintenanceenterpriseRecordFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
public ResultBean<MonthEndDetailsVo> detail(String sid) {
ResultBean rb = ResultBean.fireFail();
@ -67,4 +86,104 @@ public class MonthEndService {
}
return rb.success().setData(vo);
}
public ResultBean agreeCreditInfo(CompleteMonthEndDto dto) {
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
EnterpriseCompleteDto buckleCompleteDto = new
EnterpriseCompleteDto();
BeanUtil.copyProperties(dto, buckleCompleteDto);
// buckleCompleteDto.setOrgSidPath(orgSidPath);
ResultBean resultBean = crmMaintenanceenterpriseRecordFeign.complete(buckleCompleteDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean rejectCreditInfo(AppMonthEndTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
EnterpriseTaskQuery taskQuery = new
EnterpriseTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = crmMaintenanceenterpriseRecordFeign.taskReject(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallCreditInfo(AppMonthEndTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
EnterpriseTaskQuery taskQuery = new
EnterpriseTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = crmMaintenanceenterpriseRecordFeign.revokeProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopCreditInfo(AppMonthEndTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
EnterpriseTaskQuery taskQuery = new
EnterpriseTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = crmMaintenanceenterpriseRecordFeign.breakProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(MonthEndFlowableQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
EnterpriseNodeQuery getNodeQuery = new
EnterpriseNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<EnterpriseNodeVo>> getPreviousNodesForReject = crmMaintenanceenterpriseRecordFeign.getPreviousNodesForReject(getNodeQuery);
if (getPreviousNodesForReject.getSuccess()) {
getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
data = getPreviousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(getPreviousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<EnterpriseNodeVo>> getNextNodesForSubmit = crmMaintenanceenterpriseRecordFeign.getNextNodesForSubmit(getNodeQuery);
if (getNextNodesForSubmit.getSuccess()) {
getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = getNextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(getNextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
return rb.success().setData(data);
}
public ResultBean delegate(MonthEndDelegateQuery delegateQuery) {
ResultBean rb = ResultBean.fireFail();
EnterpriseDelegateQuery delegateQuery1 = new
EnterpriseDelegateQuery();
BeanUtil.copyProperties(delegateQuery, delegateQuery1);
ResultBean delegate = crmMaintenanceenterpriseRecordFeign.delegate(delegateQuery1);
return rb.success();
}
}

22
yxt-as-ui/src/api/statement/business.js

@ -0,0 +1,22 @@
import request from '@/utils/request'
export default {
// 查询分页列表 -- 业务汇总表
summary: function(params) {
return request({
url: '/as/v1/AsBusrepairBill/Summary',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 查询分页列表 -- 业务明细表
busDetailsList: function(params) {
return request({
url: '/as/v1/AsBusrepairBill/busDetailsList',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
}
}

13
yxt-as-ui/src/api/statement/deadStock.js

@ -0,0 +1,13 @@
import request from '@/utils/request'
export default {
// 查询分页列表 -- 滞销品查询
deadStockList: function(params) {
return request({
url: '/wms/apiadmin/inventory/wmsinventory/deadStockList',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
}
}

40
yxt-as-ui/src/api/statement/doBusiness.js

@ -0,0 +1,40 @@
import request from '@/utils/request'
export default {
// 查询分页列表 -- 营业汇总表
businessSummary: function(params) {
return request({
url: '/as/v1/AsBusrepairBill/businessSummary',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 查询分页列表 -- 营业明细表
businessDetails: function(params) {
return request({
url: '/as/v1/AsBusrepairBill/businessDetails',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 查询分页列表 -- 营业保外分析表
outInsuranceBusiness: function(params) {
return request({
url: '/as/v1/AsBusrepairBill/outInsuranceBusiness',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 查询分页列表 -- 营业欠款分析表
debtBusiness: function(params) {
return request({
url: '/as/v1/AsBusrepairBill/debtBusiness',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
}
}

13
yxt-as-ui/src/api/statement/inventory.js

@ -0,0 +1,13 @@
import request from '@/utils/request'
export default {
// 查询分页列表 -- 库存查询表
inventoryStockList: function(params) {
return request({
url: '/wms/apiadmin/inventory/wmsinventory/inventoryStockList',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
}
}

72
yxt-as-ui/src/router/index.js

@ -800,6 +800,78 @@ export const constantRoutes = [{
title: '采购汇总报表',
noCache: true
}
},
{
path: '/business/serviceSummary',
component: () => import('@/views/statement/business/serviceSummary.vue'),
name: 'ServiceSummary',
meta: {
title: '业务汇总',
noCache: true
}
},
{
path: '/business/businessDetail',
component: () => import('@/views/statement/business/businessDetail.vue'),
name: 'BusinessDetail',
meta: {
title: '业务明细',
noCache: true
}
},
{
path: '/deadStock/deadStock',
component: () => import('@/views/statement/deadStock/deadStock'),
name: 'DeadStock',
meta: {
title: '滞销品查询',
noCache: true
}
},
{
path: '/doBusiness/businessSummary',
component: () => import('@/views/statement/doBusiness/businessSummary'),
name: 'BusinessSummary',
meta: {
title: '营业汇总',
noCache: true
}
},
{
path: '/doBusiness/businessSummary',
component: () => import('@/views/statement/doBusiness/businessAnalysisByFirst'),
name: 'BusinessAnalysisByFirst',
meta: {
title: '营业保外分析',
noCache: true
}
},
{
path: '/doBusiness/businessAnalysisBySecond',
component: () => import('@/views/statement/doBusiness/businessAnalysisBySecond'),
name: 'BusinessAnalysisBySecond',
meta: {
title: '营业欠款分析',
noCache: true
}
},
{
path: '/doBusiness/operatingDetail',
component: () => import('@/views/statement/doBusiness/operatingDetail'),
name: 'OperatingDetail',
meta: {
title: '营业明细',
noCache: true
}
},
{
path: '/inventory/inventory',
component: () => import('@/views/statement/inventory/inventory'),
name: 'Inventory',
meta: {
title: '库存查询',
noCache: true
}
}
]
},

310
yxt-as-ui/src/views/statement/business/businessDetail.vue

@ -0,0 +1,310 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="业务明细" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="开单日期">
<el-date-picker v-model="listQuery.params.createStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.createEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="结算日期">
<el-date-picker v-model="listQuery.params.settleStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.settleEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="业务类型">
<el-input v-model="listQuery.params.busType" placeholder="" clearable/>
</el-form-item>
<el-form-item label="名称">
<el-input v-model="listQuery.params.name" placeholder="" clearable/>
</el-form-item>
<el-form-item label="工种">
<el-input v-model="listQuery.params.serviceType" placeholder="" clearable/>
</el-form-item>
<el-form-item label="维修单类型">
<el-input v-model="listQuery.params.billType" placeholder="" clearable/>
</el-form-item>
<el-form-item label="科目">
<el-input v-model="listQuery.params.subject" placeholder="" clearable/>
</el-form-item>
<el-form-item label="图号">
<el-input v-model="listQuery.params.goodsSkuCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="供应商">
<el-input v-model="listQuery.params.supplierName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="厂家">
<el-input v-model="listQuery.params.manufacturerName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="销售价/工时单价">
<el-input v-model="listQuery.params.price" placeholder="" clearable/>
</el-form-item>
<el-form-item label="维修单号/销售单号">
<el-input v-model="listQuery.params.billNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="服务顾问">
<el-input v-model="listQuery.params.waitorName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="维修技师">
<el-input v-model="listQuery.params.repairerName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车型">
<el-input v-model="listQuery.params.vehModel" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车牌号">
<el-input v-model="listQuery.params.vehMark" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="所属公司">
<el-input v-model="listQuery.params.useOrgName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="所属门店">
<el-input v-model="listQuery.params.deptName" placeholder="" clearable/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">业务明细表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="busType" label="业务类型" align="center" width="100" />
<el-table-column prop="name" label="名称" align="center" min-width="100" />
<el-table-column prop="billState" label="单据状态" align="center" width="100" />
<el-table-column prop="serviceType" label="工种" align="center" width="100" />
<el-table-column prop="billType" label="维修单类型" align="center" width="100" />
<el-table-column prop="subject" label="维修科目" align="center" width="100" />
<el-table-column prop="goodsSkuTitle" label="图号" align="center" width="100" />
<el-table-column prop="supplierName" label="供应商" align="center" min-width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" min-width="100" />
<el-table-column prop="price" label="销售价/工时单价" align="center" width="100" />
<el-table-column prop="num" label="数量" align="center" width="100" />
<el-table-column prop="discount" label="折扣" align="center" width="100" />
<el-table-column prop="discountAmount" label="折后金额" align="center" width="100" />
<el-table-column prop="cost" label="成本单价" align="center" width="100" />
<el-table-column prop="costTotal" label="合计成本" align="center" width="100" />
<el-table-column prop="profit" label="利润" align="center" width="100" />
<el-table-column prop="billNo" label="维修单号/销售单号" align="center" width="190" />
<el-table-column prop="createTime" label="开单时间" align="center" width="120" />
<el-table-column prop="dispatchTime" label="派工时间" align="center" width="120" />
<el-table-column prop="finishTime" label="竣工时间" align="center" width="120" />
<el-table-column prop="settleTime" label="结算时间" align="center" width="120" />
<el-table-column prop="waitorName" label="服务顾问" align="center" width="100" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="customerName" label="客户" align="center" width="100" />
<el-table-column prop="vehModel" label="车型" align="center" width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" width="100" />
<el-table-column prop="vinNo" label="车架号" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/business'
export default {
name: 'BusinessDetail',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
createStartTime: '',
createEndTime: '',
busType: '',
name: '',
billState: '',
serviceType: '',
billType: '',
subject: '',
goodsSkuCode: '',
supplierName: '',
manufacturerName: '',
price: '',
billNo: '',
waitorName: '',
repairerName: '',
customerName: '',
vehModel: '',
vehMark: '',
vinNo: '',
useOrgName: '',
deptName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.busDetailsList(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
createStartTime: '',
createEndTime: '',
busType: '',
name: '',
billState: '',
serviceType: '',
billType: '',
subject: '',
goodsSkuCode: '',
supplierName: '',
manufacturerName: '',
price: '',
billNo: '',
waitorName: '',
repairerName: '',
customerName: '',
vehModel: '',
vehMark: '',
vinNo: '',
useOrgName: '',
deptName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

224
yxt-as-ui/src/views/statement/business/serviceSummary.vue

@ -0,0 +1,224 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="业务汇总" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="开单日期">
<el-date-picker v-model="listQuery.params.createStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.createEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="结算日期">
<el-date-picker v-model="listQuery.params.settleStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.settleEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleToday">本日</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentMonth">本月</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentYear">本年</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">业务汇总表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="busType" label="业务类型" align="center" width="100" />
<el-table-column prop="name" label="名称" align="center" min-width="100" />
<el-table-column prop="billState" label="单据状态" align="center" width="100" />
<el-table-column prop="serviceType" label="工种" align="center" width="100" />
<el-table-column prop="billType" label="维修单类型" align="center" width="100" />
<el-table-column prop="subject" label="维修科目" align="center" width="100" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="100" />
<el-table-column prop="supplierName" label="供应商" align="center" min-width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" min-width="100" />
<el-table-column prop="num" label="数量" align="center" width="100" />
<el-table-column prop="discountAmount" label="折后金额合计" align="center" width="100" />
<el-table-column prop="costTotal" label="成本合计" align="center" width="100" />
<el-table-column prop="profit" label="利润" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/business'
export default {
name: 'ServiceSummary',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
createStartTime: '',
createEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.summary(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleToday() {
this.listQuery.params.dateType = '1'
this.handleFilter()
},
handleCurrentMonth() {
this.listQuery.params.dateType = '2'
this.handleFilter()
},
handleCurrentYear() {
this.listQuery.params.dateType = '3'
this.handleFilter()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
createStartTime: '',
createEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

217
yxt-as-ui/src/views/statement/deadStock/deadStock.vue

@ -0,0 +1,217 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="滞销品查询" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="所属公司">
<el-input v-model="listQuery.params.useOrgName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="所属门店">
<el-input v-model="listQuery.params.deptName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="商品名称">
<el-input v-model="listQuery.params.goodsSpuName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="图号">
<el-input v-model="listQuery.params.goodsSkuCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="供应商">
<el-input v-model="listQuery.params.supplierName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="厂家">
<el-input v-model="listQuery.params.manufacturerName" placeholder="" clearable/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">滞销品报表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="100" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="100" />
<el-table-column prop="manufacturerName" label="生产厂家" align="center" min-width="100" />
<el-table-column prop="supplierName" label="供应商" align="center" min-width="100" />
<el-table-column prop="billState" label="库存数量" align="center" width="100" />
<el-table-column prop="inventoryAge" label="最长库龄" align="center" width="100" />
<el-table-column prop="salesTime" label="最近一次销售时间" align="center" width="100" />
<el-table-column prop="noSalesDays" label="未销售天数" align="center" width="100" />
<el-table-column prop="storageTime" label="最近一次入库时间" align="center" width="100" />
<el-table-column prop="avgPrice" label="平均成本单价" align="center" width="100" />
<el-table-column prop="totalCost" label="成本合计" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/deadStock'
export default {
name: 'DeadStock',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
useOrgName: '',
deptName: '',
goodsSpuName: '',
goodsSkuCode: '',
manufacturerName: '',
supplierName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.deadStockList(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
useOrgName: '',
deptName: '',
goodsSpuName: '',
goodsSkuCode: '',
manufacturerName: '',
supplierName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

214
yxt-as-ui/src/views/statement/doBusiness/businessAnalysisByFirst.vue

@ -0,0 +1,214 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="营业保外分析" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="结算日期">
<el-date-picker v-model="listQuery.params.settleStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.settleEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleToday">本日</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentMonth">本月</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentYear">本年</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">营业保外分析表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="billType" label="维修单类型" align="center" width="100" />
<el-table-column prop="hourAmount" label="工时费" align="center" width="100" />
<el-table-column prop="goodsAmount" label="材料费" align="center" min-width="100" />
<el-table-column prop="addAmount" label="附加费" align="center" min-width="100" />
<el-table-column prop="otherAmount" label="其他附加费" align="center" width="100" />
<el-table-column prop="totalAmount" label="收入合计" align="center" width="100" />
<el-table-column prop="hourAmountCost" label="工时成本" align="center" width="100" />
<el-table-column prop="goodsAmountCost" label="材料成本" align="center" width="100" />
<el-table-column prop="otherAmountCost" label="附加成本" align="center" width="100" />
<el-table-column prop="totalCost" label="成本合计" align="center" width="100" />
<el-table-column prop="profit" label="利润合计" align="center" width="100" />
<el-table-column prop="billNum" label="涉及单数" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/doBusiness'
export default {
name: 'BusinessAnalysisByFirst',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.outInsuranceBusiness(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleToday() {
this.listQuery.params.dateType = '1'
this.handleFilter()
},
handleCurrentMonth() {
this.listQuery.params.dateType = '2'
this.handleFilter()
},
handleCurrentYear() {
this.listQuery.params.dateType = '3'
this.handleFilter()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

215
yxt-as-ui/src/views/statement/doBusiness/businessAnalysisBySecond.vue

@ -0,0 +1,215 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="营业欠款分析" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="结算日期">
<el-date-picker v-model="listQuery.params.settleStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.settleEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleToday">本日</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentMonth">本月</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentYear">本年</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">营业欠款分析表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="billType" label="维修单类型" align="center" width="100" />
<el-table-column prop="hourAmount" label="工时费" align="center" width="100" />
<el-table-column prop="goodsAmount" label="材料费" align="center" min-width="100" />
<el-table-column prop="addAmount" label="附加费" align="center" min-width="100" />
<el-table-column prop="otherAmount" label="其他附加费" align="center" width="100" />
<el-table-column prop="totalAmount" label="应收合计" align="center" width="100" />
<el-table-column prop="hourAmountCost" label="工时成本" align="center" width="100" />
<el-table-column prop="goodsAmountCost" label="材料成本" align="center" width="100" />
<el-table-column prop="otherAmountCost" label="附加成本" align="center" width="100" />
<el-table-column prop="totalCost" label="成本合计" align="center" width="100" />
<el-table-column prop="billNum" label="单数" align="center" width="100" />
<el-table-column prop="debtNum" label="当前欠款单数" align="center" width="100" />
<el-table-column prop="debtAmount" label="当前欠款金额" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/doBusiness'
export default {
name: 'BusinessAnalysisBySecond',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.debtBusiness(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleToday() {
this.listQuery.params.dateType = '1'
this.handleFilter()
},
handleCurrentMonth() {
this.listQuery.params.dateType = '2'
this.handleFilter()
},
handleCurrentYear() {
this.listQuery.params.dateType = '3'
this.handleFilter()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

223
yxt-as-ui/src/views/statement/doBusiness/businessSummary.vue

@ -0,0 +1,223 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="营业汇总" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="结算日期">
<el-date-picker v-model="listQuery.params.settleStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.settleEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleToday">本日</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentMonth">本月</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentYear">本年</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">营业汇总表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="settleTime" label="结算日期" align="center" width="100" />
<el-table-column prop="turnover" label="营业额" align="center" width="100" />
<el-table-column prop="billNum" label="涉及单数" align="center" min-width="100" />
<el-table-column prop="hourAmount" label="工时" align="center" min-width="100" />
<el-table-column prop="goodsAmount" label="材料" align="center" width="100" />
<el-table-column prop="addAmount" label="附加项目" align="center" width="100" />
<el-table-column prop="otherAmountCost" label="其他附加项目" align="center" width="100" />
<el-table-column prop="backAmount" label="退货" align="center" width="100" />
<el-table-column prop="cost" label="成本" align="center" width="100" />
<el-table-column prop="hourAmountCost" label="工时成本" align="center" width="100" />
<el-table-column prop="goodsAmountCost" label="材料成本" align="center" width="100" />
<el-table-column prop="otherAmountCost" label="其他附加项目成本" align="center" width="100" />
<el-table-column prop="grossProfit" label="毛利润" align="center" width="100" />
<el-table-column prop="packsReceivable" label="三包应收" align="center" width="100" />
<el-table-column prop="packsHourAmount" label="三包工时" align="center" width="100" />
<el-table-column prop="packsGoodsAmount" label="三包用料" align="center" width="100" />
<el-table-column prop="packsOtherAmount" label="三包(包含其他附加)" align="center" width="100" />
<el-table-column prop="outReceivable" label="保外应收" align="center" width="100" />
<el-table-column prop="outHourAmount" label="保外工时" align="center" width="100" />
<el-table-column prop="outGoodsAmount" label="保外用料" align="center" width="100" />
<el-table-column prop="outOtherAmount" label="保外附加(包含其他附加)" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/doBusiness'
export default {
name: 'BusinessSummary',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.businessSummary(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleToday() {
this.listQuery.params.dateType = '1'
this.handleFilter()
},
handleCurrentMonth() {
this.listQuery.params.dateType = '2'
this.handleFilter()
},
handleCurrentYear() {
this.listQuery.params.dateType = '3'
this.handleFilter()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

297
yxt-as-ui/src/views/statement/doBusiness/operatingDetail.vue

@ -0,0 +1,297 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="营业明细" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="结算日期">
<el-date-picker v-model="listQuery.params.settleStartTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.settleEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="单据编号">
<el-input v-model="listQuery.params.billNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="单据类型">
<el-input v-model="listQuery.params.busType" placeholder="" clearable/>
</el-form-item>
<el-form-item label="维修单类型">
<el-input v-model="listQuery.params.billType" placeholder="" clearable/>
</el-form-item>
<el-form-item label="科目">
<el-input v-model="listQuery.params.subject" placeholder="" clearable/>
</el-form-item>
<el-form-item label="客户">
<el-input v-model="listQuery.params.customer" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车牌号">
<el-input v-model="listQuery.params.vehMark" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="欠款">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="承诺回款日期">
<el-date-picker v-model="listQuery.params.paymentStartDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.paymentEndDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="超期天数">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="对接人">
<el-input v-model="listQuery.params.dockingPeople" placeholder="" clearable/>
</el-form-item>
<el-form-item label="服务顾问">
<el-input v-model="listQuery.params.waitorName" placeholder="" clearable/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleToday">本日</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentMonth">本月</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleCurrentYear">本年</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">营业明细表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="billNo" label="单据编号" align="center" width="100" />
<el-table-column prop="createTime" label="开单时间" align="center" width="100" />
<el-table-column prop="finishTime" label="竣工时间" align="center" min-width="100" />
<el-table-column prop="settleTime" label="结算时间" align="center" min-width="100" />
<el-table-column prop="busType" label="单据类型" align="center" width="100" />
<el-table-column prop="billType" label="维修单类型" align="center" width="100" />
<el-table-column prop="subject" label="维修科目" align="center" width="100" />
<el-table-column prop="customerName" label="客户" align="center" width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" width="100" />
<el-table-column prop="vinNo" label="车架号" align="center" width="100" />
<el-table-column prop="hourAmount" label="工时" align="center" width="100" />
<el-table-column prop="goodsAmount" label="材料" align="center" width="100" />
<el-table-column prop="addAmount" label="附加" align="center" width="100" />
<el-table-column prop="otherAmount" label="其他附加" align="center" width="100" />
<el-table-column prop="totalAmount" label="合计" align="center" width="100" />
<el-table-column prop="costTotal" label="成本" align="center" width="100" />
<el-table-column prop="hourAmountCost" label="工时成本" align="center" width="100" />
<el-table-column prop="goodsAmountCost" label="材料成本" align="center" width="100" />
<el-table-column prop="otherAmountCost" label="其他附加项目成本" align="center" width="100" />
<el-table-column prop="profit" label="利润" align="center" width="100" />
<el-table-column prop="receivedAmount" label="已交款" align="center" width="100" />
<el-table-column prop="debt" label="欠款" align="center" width="100" />
<el-table-column prop="paymentDate" label="承诺回款日期" align="center" width="100" />
<el-table-column prop="overDueDays" label="超期天数" align="center" width="100" />
<el-table-column prop="dockingPeople" label="对接人" align="center" width="100" />
<el-table-column prop="waitorName" label="服务顾问" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/doBusiness'
export default {
name: 'OperatingDetail',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
createEndTime: '',
busType: '',
billType: '',
subject: '',
customer: '',
billState: '',
serviceType: '',
debtStart: '',
debtEnd: '',
paymentStartDate: '',
paymentEndDate: '',
overdueStartDay: '',
overdueEndDay: '',
dockingPeople: '',
waitorName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.businessDetails(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleToday() {
this.listQuery.params.dateType = '1'
this.handleFilter()
},
handleCurrentMonth() {
this.listQuery.params.dateType = '2'
this.handleFilter()
},
handleCurrentYear() {
this.listQuery.params.dateType = '3'
this.handleFilter()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
settleStartTime: '',
settleEndTime: '',
dateType: '',
createEndTime: '',
busType: '',
billType: '',
subject: '',
customer: '',
billState: '',
serviceType: '',
debtStart: '',
debtEnd: '',
paymentStartDate: '',
paymentEndDate: '',
overdueStartDay: '',
overdueEndDay: '',
dockingPeople: '',
waitorName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

257
yxt-as-ui/src/views/statement/inventory/inventory.vue

@ -0,0 +1,257 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="库存查询" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="商品ID">
<el-input v-model="listQuery.params.goodsID" placeholder="" clearable/>
</el-form-item>
<el-form-item label="商品名称">
<el-input v-model="listQuery.params.goodsSpuName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="图号">
<el-input v-model="listQuery.params.goodsSkuCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="库存数量">
<el-input v-model="listQuery.params.countStart" placeholder="" clearable/>
</el-form-item>
<el-form-item label="成本单价">
<el-input v-model="listQuery.params.goodsSkuCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="销售单价">
<el-input v-model="listQuery.params.goodsSkuCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="仓库">
<el-input v-model="listQuery.params.warehouseName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="库区">
<el-input v-model="listQuery.params.wareAreaName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="库位">
<el-input v-model="listQuery.params.warehouseRackCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="供应商">
<el-input v-model="listQuery.params.supplierName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="生产厂家">
<el-input v-model="listQuery.params.manufacturerName" placeholder="" clearable/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">库存表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="useOrgName" label="所属公司" align="center" min-width="130" />
<el-table-column prop="deptName" label="所属门店" align="center" min-width="100" />
<el-table-column prop="goodsID" label="商品ID" align="center" width="100" />
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="100" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" min-width="100" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" min-width="100" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="count" label="库存数量" align="center" width="100" />
<el-table-column prop="cost" label="成本单价" align="center" width="100" />
<el-table-column prop="costTotal" label="成本合计" align="center" width="100" />
<el-table-column prop="price" label="销售单价" align="center" width="100" />
<el-table-column prop="warehouseName" label="仓库" align="center" width="100" />
<el-table-column prop="wareAreaName" label="库区" align="center" width="100" />
<el-table-column prop="warehouseRackCode" label="库位" align="center" width="100" />
<el-table-column prop="supplierName" label="供应商" align="center" width="100" />
<el-table-column prop="manufacturerName" label="生产厂家" align="center" width="100" />
<el-table-column prop="firstInDate" label="首次入库日期" align="center" width="100" />
<el-table-column prop="lastStorageDate" label="最近一次入库日期" align="center" width="100" />
<el-table-column prop="lastSalesDate" label="最近一次销售时间" align="center" width="100" />
<el-table-column prop="inventoryAge" label="最近一次入库距当前天数" align="center" width="100" />
<el-table-column prop="manufactorBillNo" label="订单编号" align="center" width="100" />
<el-table-column prop="procurementMethod" label="采购方式" align="center" width="100" />
<el-table-column prop="purchaseTypeValue" label="采购类别" align="center" width="100" />
<el-table-column prop="manufacturersOrderTypeValue" label="厂家订单类型" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/inventory'
export default {
name: 'Inventory',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
goodsID: '',
goodsSpuName: '',
goodsSkuCode: '',
countStart: '',
countEnd: '',
costStart: '',
costEnd: '',
priceStart: '',
priceEnd: '',
warehouseName: '',
wareAreaName: '',
warehouseRackCode: '',
supplierName: '',
manufacturerName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
req.inventoryStockList(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
goodsID: '',
goodsSpuName: '',
goodsSkuCode: '',
countStart: '',
countEnd: '',
costStart: '',
costEnd: '',
priceStart: '',
priceEnd: '',
warehouseName: '',
wareAreaName: '',
warehouseRackCode: '',
supplierName: '',
manufacturerName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.getList()
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

37
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/AsSitemsCompleteDto.java

@ -0,0 +1,37 @@
package com.yxt.anrui.as.api.asserviceitemapply.flowable;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 14:57
* @Description
*/
@Data
public class AsSitemsCompleteDto implements Dto {
private static final long serialVersionUID = 6378752532534735663L;
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id(PC)")
private String instanceId;
@ApiModelProperty(value = "流程id(移动)")
private String procInsId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
private String orgPath;
}

26
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.as.api.asserviceitemapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 9:28
*/
@Data
public class SitemsDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
// @JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

25
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsNodeQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.as.api.asserviceitemapply.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:04
* @Description
*/
@Data
public class SitemsNodeQuery implements Query {
private static final long serialVersionUID = 9117613683840483366L;
@ApiModelProperty(value = "环节定义id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
private Integer next;
}

26
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsNodeVo.java

@ -0,0 +1,26 @@
package com.yxt.anrui.as.api.asserviceitemapply.flowable;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:03
* @Description
*/
@Data
public class SitemsNodeVo implements Vo {
private static final long serialVersionUID = -833419512294877848L;
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

48
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SitemsTaskQuery.java

@ -0,0 +1,48 @@
package com.yxt.anrui.as.api.asserviceitemapply.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:06
* @Description
*/
@Data
public class SitemsTaskQuery implements Query {
private static final long serialVersionUID = 1288615499873178778L;
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id(PC)")
private String instanceId;
@ApiModelProperty("流程实例Id(移动)")
private String procInsId;
}

25
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitemapply/flowable/SubmitSitemsDto.java

@ -0,0 +1,25 @@
package com.yxt.anrui.as.api.asserviceitemapply.flowable;
import com.yxt.anrui.as.api.asbusrepairbillreversesettle.AsBusrepairBillReverseSettleDto;
import com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApplyDto;
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 SubmitSitemsDto extends AsServiceItemApplyDto {
@ApiModelProperty("意见")
private String comment;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

43
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillService.java

@ -29,6 +29,8 @@ import com.yxt.anrui.as.feign.portal.sysuser.SysUserFeign;
import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventory;
import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventoryFeign;
import com.yxt.anrui.as.feign.wms.wmsInventory.WmsUpdateCountQuery;
import com.yxt.anrui.as.feign.wms.wmsInventoryrecord.WmsInventoryRecordDto;
import com.yxt.anrui.as.feign.wms.wmsInventoryrecord.WmsInventoryRecordFeign;
import com.yxt.anrui.as.feign.wms.wmsinventorybill.WmsInventoryBillDetailDto;
import com.yxt.anrui.as.feign.wms.wmsinventorybill.WmsInventoryBillDto;
import com.yxt.anrui.as.feign.wms.wmsinventorybill.WmsInventoryBillFeign;
@ -75,7 +77,8 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
private SysUserFeign sysUserFeign;
@Autowired
private AsBusrepairBillNodeService asBusrepairBillNodeService;
@Autowired
private WmsInventoryRecordFeign wmsInventoryRecordFeign;
/**
* 维修出/退库分页列表
*
@ -360,9 +363,47 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
if (busTypeKey.equals("0")) {
//维修出库
countQuery.setAddOrReduce(1);
WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto();
BigDecimal wiCount = inventory.getCount();
BigDecimal subtractCount = wiCount.subtract(new BigDecimal(sDto.getCount()));
recordDto.setInventorySid(inventorySid);
recordDto.setCreateBySid(dto.getCreateBySid());
recordDto.setUseOrgSid(dto.getDeptSid());
recordDto.setCreateOrgSid(dto.getCreateOrgSid());
recordDto.setHandlerSid(dto.getCreateBySid());
recordDto.setHandlerName(dto.getCreateByName());
recordDto.setGoodsID(inventory.getGoodsID());
recordDto.setSourceBillSid(dto.getSourceBillSid());
recordDto.setBillNo(dto.getSourceBillNo());
recordDto.setBillType("0");
recordDto.setBusTypeKey("11");
recordDto.setBusTypeValue("销售出库");
BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid");
recordDto.setCount(sDto.getCount());
recordDto.setCurrentCount(subtractCount.toString());
wmsInventoryRecordFeign.save(recordDto);
} else if (busTypeKey.equals("1")) {
//维修退库
countQuery.setAddOrReduce(0);
WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto();
BigDecimal wiCount = inventory.getCount();
BigDecimal add = wiCount.add(new BigDecimal(sDto.getCount()));
recordDto.setInventorySid(inventorySid);
recordDto.setCreateBySid(dto.getCreateBySid());
recordDto.setUseOrgSid(dto.getDeptSid());
recordDto.setCreateOrgSid(dto.getCreateOrgSid());
recordDto.setHandlerSid(dto.getCreateBySid());
recordDto.setHandlerName(dto.getCreateByName());
recordDto.setGoodsID(inventory.getGoodsID());
recordDto.setSourceBillSid(dto.getSourceBillSid());
recordDto.setBillNo(dto.getSourceBillNo());
recordDto.setBillType("1");
recordDto.setBusTypeKey("02");
recordDto.setBusTypeValue("退货入库");
BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid");
recordDto.setCount(sDto.getCount());
recordDto.setCurrentCount(add.toString());
wmsInventoryRecordFeign.save(recordDto);
}
wmsInventoryFeign.updateInventoryCount(countQuery);
}

29
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.java

@ -54,27 +54,30 @@ import java.util.List;
@Mapper
public interface AsCustomerVehicleMapper extends BaseMapper<AsCustomerVehicle> {
//@Update("update as_customer_vehicle set name=#{msg} where id=#{id}")
//IPage<AsCustomerVehicleVo> voPage(IPage<AsCustomerVehicle> page, @Param(Constants.WRAPPER) QueryWrapper<AsCustomerVehicle> qw);
//@Update("update as_customer_vehicle set name=#{msg} where id=#{id}")
//IPage<AsCustomerVehicleVo> voPage(IPage<AsCustomerVehicle> page, @Param(Constants.WRAPPER) QueryWrapper<AsCustomerVehicle> qw);
IPage<AsCustomerVehicleVo> selectPageVo(IPage<AsCustomerVehicle> page, @Param(Constants.WRAPPER) Wrapper<AsCustomerVehicle> qw);
IPage<AsCustomerVehicleVo> selectPageVo(IPage<AsCustomerVehicle> page, @Param(Constants.WRAPPER) Wrapper<AsCustomerVehicle> qw);
List<AsCustomerVehicleVo> selectListAllVo(@Param(Constants.WRAPPER) Wrapper<AsCustomerVehicle> qw);
List<AsCustomerVehicleVo> selectListAllVo(@Param(Constants.WRAPPER) Wrapper<AsCustomerVehicle> qw);
@Select("select * from as_customer_vehicle")
List<AsCustomerVehicleVo> selectListVo();
@Select("select * from as_customer_vehicle")
List<AsCustomerVehicleVo> selectListVo();
@Select("select * from as_customer_vehicle")
List<AsCustomerCrmVehVo> listCustomerVeh();
@Select("select * from as_customer_vehicle")
List<AsCustomerCrmVehVo> listCustomerVeh();
List<AsCustomerVehicleVo> selVehListByCustomerSid(@Param("sid") String sid);
List<AsCustomerVehicleVo> selVehListByCustomerSid(@Param("sid") String sid);
@Update("update as_customer_vehicle set isDelete = '1' where sid =#{sid}")
void delBySid(@Param("sid") String sid);
@Update("update as_customer_vehicle set isDelete = '1' where sid =#{sid}")
void delBySid(@Param("sid") String sid);
IPage<AsCustomerCrmVehVo> customerList(IPage<AsCustomerVehicle> page,@Param(Constants.WRAPPER) QueryWrapper<AsCustomerVehicle> qw);
IPage<AsCustomerCrmVehVo> customerList(IPage<AsCustomerVehicle> page, @Param(Constants.WRAPPER) QueryWrapper<AsCustomerVehicle> qw);
List<CarListVo> getVehListByCustomerSid(@Param("customerSid") String customerSid);
int getVehListCountsByCustomerSid(@Param("customerSid") String customerSid);
int getVehListCountsByCustomerSid(@Param("customerSid") String customerSid);
@Delete("delete from as_customer_vehicle where customerSid =#{customerSid}")
void deleteByCustomerSid(@Param("customerSid") String customerSid);
}

246
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleRest.java

@ -52,129 +52,133 @@ import java.util.List;
@Api(tags = "客户车辆信息")
@RestController
@RequestMapping("v1/ascustomervehicle")
public class AsCustomerVehicleRest{
@Autowired
private AsCustomerVehicleService asCustomerVehicleService;
@ApiOperation("批量禁用")
@PostMapping("/disableState")
public ResultBean disableState(@RequestBody String[] sid){
ResultBean rb = ResultBean.fireFail();
for (String s : sid) {
AsCustomerVehicle asCustomerVehicle = asCustomerVehicleService.fetchBySid(s);
asCustomerVehicle.setIsEnable(0);
asCustomerVehicleService.updateById(asCustomerVehicle);
}
return rb.success();
}
@ApiOperation("批量启用")
@PostMapping("/enable")
public ResultBean enable(@RequestBody String[] sid){
ResultBean rb = ResultBean.fireFail();
for (String s : sid) {
AsCustomerVehicle asCustomerVehicle = asCustomerVehicleService.fetchBySid(s);
asCustomerVehicle.setIsEnable(1);
asCustomerVehicleService.updateById(asCustomerVehicle);
}
return rb.success();
}
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<AsCustomerVehicleVo>> listPage(@RequestBody PagerQuery<AsCustomerVehicleQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<AsCustomerVehicleVo> pv = asCustomerVehicleService.listPageVo(pq);
return rb.success().setData(pv);
}
@ApiOperation("查询数据的列表")
@PostMapping("/listCustomerVeh")
public ResultBean<List<AsCustomerCrmVehVo>> listCustomerVeh(){
ResultBean rb = ResultBean.fireFail();
List<AsCustomerCrmVehVo> list = asCustomerVehicleService.listCustomerVeh();
return rb.success().setData(list);
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AsCustomerVehicleDto dto){
ResultBean rb = ResultBean.fireFail();
asCustomerVehicleService.saveOrUpdateDto(dto);
return rb.success();
}
@ApiOperation("查询数据的列表")
@PostMapping("/customerList")
public ResultBean<PagerVo<AsCustomerCrmVehVo>> customerList(@RequestBody PagerQuery<AsCustomerVehicleQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<AsCustomerCrmVehVo> pv = asCustomerVehicleService.customerList(pq);
return rb.success().setData(pv);
}
@ApiOperation("根据sid批量删除")
public class AsCustomerVehicleRest {
@Autowired
private AsCustomerVehicleService asCustomerVehicleService;
@ApiOperation("批量禁用")
@PostMapping("/disableState")
public ResultBean disableState(@RequestBody String[] sid) {
ResultBean rb = ResultBean.fireFail();
for (String s : sid) {
AsCustomerVehicle asCustomerVehicle = asCustomerVehicleService.fetchBySid(s);
asCustomerVehicle.setIsEnable(0);
asCustomerVehicleService.updateById(asCustomerVehicle);
}
return rb.success();
}
@ApiOperation("批量启用")
@PostMapping("/enable")
public ResultBean enable(@RequestBody String[] sid) {
ResultBean rb = ResultBean.fireFail();
for (String s : sid) {
AsCustomerVehicle asCustomerVehicle = asCustomerVehicleService.fetchBySid(s);
asCustomerVehicle.setIsEnable(1);
asCustomerVehicleService.updateById(asCustomerVehicle);
}
return rb.success();
}
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<AsCustomerVehicleVo>> listPage(@RequestBody PagerQuery<AsCustomerVehicleQuery> pq) {
ResultBean rb = ResultBean.fireFail();
PagerVo<AsCustomerVehicleVo> pv = asCustomerVehicleService.listPageVo(pq);
return rb.success().setData(pv);
}
@ApiOperation("查询数据的列表")
@PostMapping("/listCustomerVeh")
public ResultBean<List<AsCustomerCrmVehVo>> listCustomerVeh() {
ResultBean rb = ResultBean.fireFail();
List<AsCustomerCrmVehVo> list = asCustomerVehicleService.listCustomerVeh();
return rb.success().setData(list);
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AsCustomerVehicleDto dto) {
ResultBean rb = ResultBean.fireFail();
asCustomerVehicleService.saveOrUpdateDto(dto);
return rb.success();
}
@ApiOperation("查询数据的列表")
@PostMapping("/customerList")
public ResultBean<PagerVo<AsCustomerCrmVehVo>> customerList(@RequestBody PagerQuery<AsCustomerVehicleQuery> pq) {
ResultBean rb = ResultBean.fireFail();
PagerVo<AsCustomerCrmVehVo> pv = asCustomerVehicleService.customerList(pq);
return rb.success().setData(pv);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids){
return asCustomerVehicleService.deleteBySids(sids);
}
public ResultBean delBySids(@RequestBody String[] sids) {
return asCustomerVehicleService.deleteBySids(sids);
}
@ApiOperation("根据SID获取一条记录")
@ApiOperation("根据SID获取一条记录")
@GetMapping("/fetchDetailsBySid/{customerVehSid}")
public ResultBean<AsCustomerVehicleDetails> fetchDetailsBySid(@PathVariable("customerVehSid") String customerVehSid){
ResultBean rb = ResultBean.fireFail();
AsCustomerVehicleDetails vo = asCustomerVehicleService.fetchDetailsVoBySid(customerVehSid);
return rb.success().setData(vo);
}
@ApiOperation("根据SID获取一条记录")
@GetMapping("/vehList")
public ResultBean<List<AsCustomerVehicleVo>> vehList(@RequestParam("sid") String sid){
ResultBean rb = ResultBean.fireFail();
List<AsCustomerVehicleVo> list = asCustomerVehicleService.vehList(sid);
return rb.success().setData(list);
}
@ApiOperation("保存修改车辆信息")
@PostMapping("/saveCustomerVeh")
public ResultBean saveCustomerVeh(@RequestBody AsCustomerVehicleDetails dto){
return asCustomerVehicleService.saveCustomerVeh(dto);
}
@ApiOperation("快捷新增初始化")
@GetMapping("/quickAddInit")
public ResultBean<QuickAddCustomer> quickAddInit(@RequestParam("sid") String sid){
ResultBean rb = ResultBean.fireFail();
QuickAddCustomer quickAddInit = asCustomerVehicleService.quickAddInit(sid);
return rb.success().setData(quickAddInit);
}
@ApiOperation("快捷新增初保存")
@PostMapping("/quickAddSave")
public ResultBean quickAddSave(@RequestBody QuickAddCustomer dto){
return asCustomerVehicleService.quickAddSave(dto);
}
@ApiOperation("根据客户sid查询车辆")
@GetMapping("/getVehListByCustomerSid")
public ResultBean<List<CarListVo>> getVehListByCustomerSid(@RequestParam("customerSid") String customerSid){
ResultBean rb = ResultBean.fireFail();
List<CarListVo> list = asCustomerVehicleService.getVehListByCustomerSid(customerSid);
return rb.success().setData(list);
}
@ApiOperation("根据客户sid查询车辆数量")
@GetMapping("/getVehListCountsByCustomerSid")
public int getVehListCountsByCustomerSid(@RequestParam("customerSid") String customerSid){
int i = asCustomerVehicleService.getVehListCountsByCustomerSid(customerSid);
return i;
}
public ResultBean<AsCustomerVehicleDetails> fetchDetailsBySid(@PathVariable("customerVehSid") String customerVehSid) {
ResultBean rb = ResultBean.fireFail();
AsCustomerVehicleDetails vo = asCustomerVehicleService.fetchDetailsVoBySid(customerVehSid);
return rb.success().setData(vo);
}
@ApiOperation("根据SID获取一条记录")
@GetMapping("/vehList")
public ResultBean<List<AsCustomerVehicleVo>> vehList(@RequestParam("sid") String sid) {
ResultBean rb = ResultBean.fireFail();
List<AsCustomerVehicleVo> list = asCustomerVehicleService.vehList(sid);
return rb.success().setData(list);
}
@ApiOperation("保存修改车辆信息")
@PostMapping("/saveCustomerVeh")
public ResultBean saveCustomerVeh(@RequestBody AsCustomerVehicleDetails dto) {
return asCustomerVehicleService.saveCustomerVeh(dto);
}
@ApiOperation("快捷新增初始化")
@GetMapping("/quickAddInit")
public ResultBean<QuickAddCustomer> quickAddInit(@RequestParam("sid") String sid) {
ResultBean rb = ResultBean.fireFail();
QuickAddCustomer quickAddInit = asCustomerVehicleService.quickAddInit(sid);
return rb.success().setData(quickAddInit);
}
@ApiOperation("快捷新增初保存")
@PostMapping("/quickAddSave")
public ResultBean quickAddSave(@RequestBody QuickAddCustomer dto) {
return asCustomerVehicleService.quickAddSave(dto);
}
@ApiOperation("根据客户sid查询车辆")
@GetMapping("/getVehListByCustomerSid")
public ResultBean<List<CarListVo>> getVehListByCustomerSid(@RequestParam("customerSid") String customerSid) {
ResultBean rb = ResultBean.fireFail();
List<CarListVo> list = asCustomerVehicleService.getVehListByCustomerSid(customerSid);
return rb.success().setData(list);
}
@ApiOperation("根据客户sid查询车辆数量")
@GetMapping("/getVehListCountsByCustomerSid")
public int getVehListCountsByCustomerSid(@RequestParam("customerSid") String customerSid) {
int i = asCustomerVehicleService.getVehListCountsByCustomerSid(customerSid);
return i;
}
@ApiOperation("根据客户sid删除")
@PostMapping("/deleteByCustomerSid")
public void deleteByCustomerSid(@RequestParam("customerSid") String customerSid) {
asCustomerVehicleService.deleteByCustomerSid(customerSid);
}
}

4
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java

@ -279,4 +279,8 @@ public class AsCustomerVehicleService extends MybatisBaseService<AsCustomerVehic
public int getVehListCountsByCustomerSid(String customerSid) {
return baseMapper.getVehListCountsByCustomerSid(customerSid);
}
public void deleteByCustomerSid(String customerSid) {
baseMapper.deleteByCustomerSid(customerSid);
}
}

3
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyMapper.java

@ -36,6 +36,7 @@ import com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApply;
import com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApplyVo;
import java.util.List;
import java.util.Map;
/**
* Project: yxt-as(维修项目备案) <br/>
@ -66,4 +67,6 @@ public interface AsServiceItemApplyMapper extends BaseMapper<AsServiceItemApply>
int selectNum(String bill);
int selectBySid(String join);
int updateFlowFiled(Map<String, Object> map);
}

16
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyMapper.xml

@ -3,6 +3,22 @@
<mapper namespace="com.yxt.anrui.as.biz.asserviceitemapply.AsServiceItemApplyMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<update id="updateFlowFiled">
UPDATE as_service_item_apply
SET nodeState=#{nodeState}
, nodeSid=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
<select id="selectPageVo" resultType="com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApplyVo">
SELECT
ab.sid,

116
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyRest.java

@ -25,12 +25,22 @@
*********************************************************/
package com.yxt.anrui.as.biz.asserviceitemapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleDelegateQuery;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleTaskQuery;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.CompleteSettleDto;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.SettleFlowableQuery;
import com.yxt.anrui.as.api.asbusrepairbillreversesettle.flowable.*;
import com.yxt.anrui.as.api.asserviceitemapply.flowable.*;
import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.as.feign.flowable.flow.ProcDefEnum;
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.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApplyQuery;
@ -38,6 +48,9 @@ import com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApplyVo;
import com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApplyDetailsVo;
import com.yxt.anrui.as.api.asserviceitemapply.AsServiceItemApplyDto;
import javax.validation.Valid;
import java.util.List;
/**
* Project: yxt-as(维修项目备案) <br/>
* File: AsServiceItemApplyFeignFallback.java <br/>
@ -59,7 +72,6 @@ public class AsServiceItemApplyRest {
@Autowired
private AsServiceItemApplyService asServiceItemApplyService;
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<AsServiceItemApplyVo>> listPage(@RequestBody PagerQuery<AsServiceItemApplyQuery> pq){
@ -68,7 +80,6 @@ public class AsServiceItemApplyRest {
return rb.success().setData(pv);
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AsServiceItemApplyDto dto){
@ -77,7 +88,6 @@ public class AsServiceItemApplyRest {
return rb.success();
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids){
@ -108,4 +118,104 @@ public class AsServiceItemApplyRest {
AsServiceItemApplyDetailsVo vo = asServiceItemApplyService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
//---------------------------------flow----------------------------------------
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody @Valid SubmitSitemsDto dto) {
return asServiceItemApplyService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody AsSitemsCompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.ASSERVICEITEMAPPLY.getProDefId());
return asServiceItemApplyService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
public ResultBean<List<SitemsNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap SitemsNodeQuery query) {
return asServiceItemApplyService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
public ResultBean<List<SitemsNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap SitemsNodeQuery query) {
return asServiceItemApplyService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody SitemsTaskQuery query) {
return asServiceItemApplyService.reject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody SitemsTaskQuery query) {
return asServiceItemApplyService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody SitemsTaskQuery query) {
return asServiceItemApplyService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody SitemsDelegateQuery query) {
return asServiceItemApplyService.delegate(query);
}
@ApiOperation("办理")
@PutMapping("/agreeCreditInfo")
@ResponseBody
ResultBean agreeCreditInfo(@Valid @RequestBody CompleteSettleDto dto){
return asServiceItemApplyService.agreeCreditInfo(dto);
}
@ApiOperation("驳回")
@PutMapping("/rejectCreditInfo2")
@ResponseBody
ResultBean rejectCreditInfo(@Valid @RequestBody AppSettleTaskQuery query){
return asServiceItemApplyService.rejectCreditInfo(query);
}
@ApiOperation("撤回")
@PutMapping("/recallCreditInfo2")
@ResponseBody
ResultBean recallCreditInfo(@Valid @RequestBody AppSettleTaskQuery query){
return asServiceItemApplyService.recallCreditInfo(query);
}
@ApiOperation("终止")
@PutMapping("/stopCreditInfo")
@ResponseBody
ResultBean stopCreditInfo(@Valid @RequestBody AppSettleTaskQuery query){
return asServiceItemApplyService.stopCreditInfo(query);
}
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@Valid @SpringQueryMap SettleFlowableQuery query){
return asServiceItemApplyService.getFlowOperateTitle(query);
}
@ApiOperation(value = "加签")
@PutMapping(value = "/delegate2")
@ResponseBody
public ResultBean delegate(@RequestBody AppSettleDelegateQuery delegateQuery){
return asServiceItemApplyService.delegate2(delegateQuery);
}
}

495
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitemapply/AsServiceItemApplyService.java

@ -26,16 +26,29 @@
package com.yxt.anrui.as.biz.asserviceitemapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.asappendix.AsAppendix;
import com.yxt.anrui.as.api.asbillsettelapply.flow.SettleCompleteDto;
import com.yxt.anrui.as.api.asbillsettelapply.flow.SubmitSettleDto;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleDelegateQuery;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleTaskQuery;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.CompleteSettleDto;
import com.yxt.anrui.as.api.asbillsettelapply.flow.app.SettleFlowableQuery;
import com.yxt.anrui.as.api.asbusrepairbill.AsBusrepairBill;
import com.yxt.anrui.as.api.asbusrepairbillnode.AsBusrepairBillNode;
import com.yxt.anrui.as.api.asbusrepairbillreversesettle.AsBusrepairBillReverseSettle;
import com.yxt.anrui.as.api.asbusrepairbillreversesettle.flowable.*;
import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapply;
import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyFile;
import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyVo;
import com.yxt.anrui.as.api.asbwdiffapplydetail.AsBwdiffapplyDetailFile;
import com.yxt.anrui.as.api.asserviceitem.AsServiceItem;
import com.yxt.anrui.as.api.asserviceitemapply.*;
import com.yxt.anrui.as.api.asserviceitemapply.flowable.*;
import com.yxt.anrui.as.api.asserviceitemapplyrecord.AsServiceItemApplyRecord;
import com.yxt.anrui.as.api.enums.AsBillTypeEnum;
import com.yxt.anrui.as.api.utils.AsRule;
@ -45,10 +58,22 @@ import com.yxt.anrui.as.biz.asappendix.AsAppendixService;
import com.yxt.anrui.as.biz.asserviceitem.AsServiceItemService;
import com.yxt.anrui.as.biz.asserviceitemapplyrecord.AsServiceItemApplyRecordService;
import com.yxt.anrui.as.feign.file.AsFileEnum;
import com.yxt.anrui.as.feign.flowable.flow.*;
import com.yxt.anrui.as.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.anrui.as.feign.flowable.flow2.FlowFeign;
import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskFeign;
import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskVo;
import com.yxt.anrui.as.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.anrui.as.feign.message.MessageFeign;
import com.yxt.anrui.as.feign.message.MessageFlowVo;
import com.yxt.anrui.as.feign.message.MessageFlowableQuery;
import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.anrui.as.feign.portal.sysstafforg.SysStaffOrg;
import com.yxt.anrui.as.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.as.feign.portal.sysuser.SysUserFeign;
import com.yxt.anrui.as.feign.portal.sysuser.SysUserVo;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
@ -60,8 +85,8 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* Project: yxt-as(维修项目备案) <br/>
@ -90,7 +115,16 @@ public class AsServiceItemApplyService extends MybatisBaseService<AsServiceItemA
private AsAppendixService asAppendixService;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
private QueryWrapper<AsServiceItemApply> createQueryWrapper(AsServiceItemApplyQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
@ -323,4 +357,459 @@ public class AsServiceItemApplyService extends MybatisBaseService<AsServiceItemA
return rb.success();
}
//--------------------------flow----------------------------------
public ResultBean submit(SubmitSitemsDto dto) {
ResultBean rb = ResultBean.fireFail();
AsServiceItemApply itemApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, itemApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
String businessSid = saveOrUpdateDto(dto);
itemApply = fetchBySid(businessSid);
List<AsServiceItemApplyRecord> applyRecords = asServiceItemApplyRecordService.selByMainSid(businessSid);
if (!applyRecords.isEmpty()) {
for (AsServiceItemApplyRecord applyRecord : applyRecords) {
AsServiceItem item = asServiceItemService.fetchBySid(applyRecord.getSitemSid());
item.setState(0);
asServiceItemService.updateById(item);
}
}
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//用户的部门全路径sid
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(itemApply.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(itemApply.getCreateBySid());
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
variables.put("app", appMap);
//流程定义id
bv.setModelId(ProcDefEnum.ASSERVICEITEMAPPLY.getProDefId());
bv.setFormVariables(variables);
if (r == 1) {
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//极光推送
itemApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("维修项目备案申请");
messageFlowableQuery.setMsgContent(itemApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("维修项目备案申请");
messageFeign.pushMessage(messageFlowableQuery);
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(itemApply.getTaskId());
bv.setTaskDefKey(itemApply.getNodeSid());
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private synchronized int submitBusinessData(SubmitSitemsDto dto, AsServiceItemApply apply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (apply != null) {
String businessTaskId = apply.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
AsServiceItemApply itemApply = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
if (StringUtils.isBlank(itemApply.getProcDefId())) {
flowProcessMapQuery.setProDefKey(bv.getModelId());
} else {
flowProcessMapQuery.setProDefKey(itemApply.getProcDefId());
}
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
//=======================================
bv.setFormVariables(variables);
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(itemApply.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
if (bv.getTaskId().equals(itemApply.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
itemApply = fetchBySid(businessSid);
itemApply.setClosingDate(new Date());
baseMapper.updateById(itemApply);
List<AsServiceItemApplyRecord> applyRecords = asServiceItemApplyRecordService.selByMainSid(businessSid);
if (!applyRecords.isEmpty()) {
for (AsServiceItemApplyRecord applyRecord : applyRecords) {
AsServiceItem item = asServiceItemService.fetchBySid(applyRecord.getSitemSid());
item.setState(2);
asServiceItemService.updateById(item);
}
}
} else {
//极光推送
itemApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcDefId(itemApply.getProcDefId());
ufVo.setProcInsId(itemApply.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("维修项目备案申请");
messageFlowableQuery.setMsgContent(itemApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("维修项目备案申请");
messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean<List<SitemsNodeVo>> getPreviousNodesForReject(SitemsNodeQuery query) {
ResultBean<List<SitemsNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//查询业务信息
AsServiceItemApply itemApply = fetchBySid(query.getBusinessSid());
bv.setModelId(itemApply.getProcDefId());
bv.setFormVariables(variables);
//=======================================
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<SitemsNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), SitemsNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<SitemsNodeVo>> getNextNodesForSubmit(SitemsNodeQuery query) {
ResultBean<List<SitemsNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//查询业务信息
AsServiceItemApply itemApply = fetchBySid(query.getBusinessSid());
bv.setModelId(itemApply.getProcDefId());
bv.setFormVariables(variables);
//=======================================
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<SitemsNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), SitemsNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean reject(SitemsTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
AsServiceItemApply itemApply = fetchBySid(businessSid);
if (itemApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = itemApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
itemApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = itemApply.getProcInstId();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(itemApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("维修项目备案申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(itemApply.getCreateBySid())) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(itemApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("维修项目备案申请");
messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(SitemsTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
AsServiceItemApply itemApply = fetchBySid(query.getBusinessSid());
String businessTaskId = itemApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean breakProcess(SitemsTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
AsServiceItemApply itemApply = fetchBySid(query.getBusinessSid());
String businessTaskId = itemApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(itemApply.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//终止任务后备案状态改完未备案
itemApply = fetchBySid(query.getBusinessSid());
if (itemApply.getNodeState().equals("终止")) {
List<AsServiceItemApplyRecord> applyRecords = asServiceItemApplyRecordService.selByMainSid(query.getBusinessSid());
if (!applyRecords.isEmpty()) {
for (AsServiceItemApplyRecord applyRecord : applyRecords) {
AsServiceItem item = asServiceItemService.fetchBySid(applyRecord.getSitemSid());
item.setState(1);
asServiceItemService.updateById(item);
}
}
}
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//终止任务后备案状态改完未备案
itemApply = fetchBySid(query.getBusinessSid());
if (itemApply.getNodeState().equals("终止")) {
List<AsServiceItemApplyRecord> applyRecords = asServiceItemApplyRecordService.selByMainSid(query.getBusinessSid());
if (!applyRecords.isEmpty()) {
for (AsServiceItemApplyRecord applyRecord : applyRecords) {
AsServiceItem item = asServiceItemService.fetchBySid(applyRecord.getSitemSid());
item.setState(1);
asServiceItemService.updateById(item);
}
}
}
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(SitemsDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
public ResultBean agreeCreditInfo(CompleteSettleDto dto) {
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
SettleCompleteDto completeDto = new
SettleCompleteDto();
BeanUtil.copyProperties(dto, completeDto);
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(completeDto, bv);
bv.setModelId(ProcDefEnum.ASSERVICEITEMAPPLY.getProDefId());
ResultBean resultBean = complete(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean rejectCreditInfo(AppSettleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
SitemsTaskQuery taskQuery = new
SitemsTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = reject(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallCreditInfo(AppSettleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
SitemsTaskQuery taskQuery = new
SitemsTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = revokeProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopCreditInfo(AppSettleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
SitemsTaskQuery taskQuery = new
SitemsTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = breakProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(SettleFlowableQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
SitemsNodeQuery getNodeQuery = new
SitemsNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<SitemsNodeVo>> getPreviousNodesForReject = getPreviousNodesForReject(getNodeQuery);
if (getPreviousNodesForReject.getSuccess()) {
getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
data = getPreviousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(getPreviousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<SitemsNodeVo>> getNextNodesForSubmit = getNextNodesForSubmit(getNodeQuery);
if (getNextNodesForSubmit.getSuccess()) {
getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = getNextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(getNextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
return rb.success().setData(data);
}
public ResultBean delegate2(AppSettleDelegateQuery delegateQuery) {
ResultBean rb = ResultBean.fireFail();
SitemsDelegateQuery delegateQuery1 = new
SitemsDelegateQuery();
BeanUtil.copyProperties(delegateQuery, delegateQuery1);
ResultBean delegate = delegate(delegateQuery1);
return rb.success();
}
}

128
yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventoryrecord/WmsInventoryRecordDto.java

@ -0,0 +1,128 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.as.feign.wms.wmsInventoryrecord;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: wms(yxt) <br/>
* File: WmsInventoryRecordDto.java <br/>
* Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecordDto <br/>
* Description: 库存出入库记录 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-04-08 17:27:39 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "库存出入库记录 数据传输对象", description = "库存出入库记录 数据传输对象")
public class WmsInventoryRecordDto implements Dto {
private String sid; // sid
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
@ApiModelProperty("创建人sid")
private String createBySid; // 商品ID
@ApiModelProperty("商品ID")
private String goodsID; // 商品ID
@ApiModelProperty("来源单sid(业务单sid)")
private String sourceBillSid; // 来源单sid(业务单sid)
@ApiModelProperty("来源单据编号")
private String billNo; // 来源单据编号
@ApiModelProperty("单据类型(1入库、0出库)")
private String billType; // 单据类型(1入库、0出库)
@ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)")
private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等)
@ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)")
private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)
@ApiModelProperty("批次号")
private String batchNumber; // 批次号
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("商品Skusid")
private String goodsSkuSid; // 商品Skusid
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle; // 商品Sku名称
@ApiModelProperty("商品编码(图号)")
private String goodsSkuCode; // 商品编码(图号)
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("出入库后的库存量")
private String currentCount; // 出入库后的库存量
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("数量")
private String count; // 数量
@ApiModelProperty("仓库sid")
private String warehouseSid; // 仓库sid
@ApiModelProperty("仓库名称")
private String warehouseName; // 仓库名称
@ApiModelProperty("库位sid")
private String warehouseRackSid; // 库位sid
@ApiModelProperty("库位编号")
private String warehouseRackCode; // 库位编号
@ApiModelProperty("入库单价")
private String cost;
@ApiModelProperty("税率")
private String taxRate;
@ApiModelProperty("入库金额")
private String amount;
@ApiModelProperty("经办人sid")
private String handlerSid; // 库位sid
@ApiModelProperty("经办人")
private String handlerName; // 库位编号
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
@ApiModelProperty("厂家订单号")
private String manufactorBillNo;
@ApiModelProperty("销售指导价")
private String guidPrice;
@ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商")
private String supplierSid;
@ApiModelProperty("客户/供应商名称")
private String supplierName;
@ApiModelProperty("厂家名称")
private String manufacturerName;
@ApiModelProperty("厂家sid")
private String manufacturerSid;
@ApiModelProperty("前一单据明细sid(溯源使用)")
private String preBillSid;
@ApiModelProperty("前一单编号")
private String preBillNo;
}

24
yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventoryrecord/WmsInventoryRecordFeign.java

@ -0,0 +1,24 @@
package com.yxt.anrui.as.feign.wms.wmsInventoryrecord;
import com.yxt.anrui.as.feign.wms.wmsinventorybill.WmsInventoryBillDto;
import com.yxt.anrui.as.feign.wms.wmsinventorybill.WmsInventoryBillFeignFallback;
import com.yxt.common.core.result.ResultBean;
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;
/**
* @description: 出入库单据
* @author: dimengzhe
* @date: 2024/3/7
**/
@FeignClient(
contextId = "yxt-wms-WmsInventoryBill",
name = "yxt-wms",
path = "apiadmin/inventory/wmsinventoryrecord")
public interface WmsInventoryRecordFeign {
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody WmsInventoryRecordDto dto);
}
Loading…
Cancel
Save