diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowpower/SysFlowNodeQuery.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowpower/SysFlowNodeQuery.java new file mode 100644 index 0000000000..8df60d6b44 --- /dev/null +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowpower/SysFlowNodeQuery.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.portal.api.sysflowpower; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Fan + * @description + * @date 2024/11/27 14:49 + */ +@Data +public class SysFlowNodeQuery { + + private String flowName;//流程申请名称 + private String createOrgName;//分公司 + private String procDefId;//流程定义id + private String nodeNames;//环节名称 + private String parameter;//参数名称 + private String value;//值 + private int type; //比较类型 0是否小于权限范围 1是否大于权限范围 + +} diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowpower/SysFlowPowerFeign.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowpower/SysFlowPowerFeign.java index e51f1208b6..14de1ee3fb 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowpower/SysFlowPowerFeign.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowpower/SysFlowPowerFeign.java @@ -64,14 +64,21 @@ public interface SysFlowPowerFeign { @PostMapping("/save") @ResponseBody public ResultBean save(@RequestBody SysFlowPowerDto dto); - + @ApiOperation("根据sid删除记录") @DeleteMapping("/delBySids") @ResponseBody public ResultBean delBySids(@RequestParam("sid") String sid); - + @ApiOperation("根据SID获取一条记录") @GetMapping("/fetchDetailsBySid/{sid}") @ResponseBody public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); -} \ No newline at end of file + + + @ApiOperation("审批权限校验") + @PostMapping("/flowPermissions") + public boolean flowPermissions(@RequestBody SysFlowNodeQuery query); + + +} diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerRest.java index 4b50017a2c..942c225e75 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerRest.java @@ -25,6 +25,7 @@ *********************************************************/ package com.yxt.anrui.portal.biz.sysflowpower; +import com.yxt.anrui.portal.api.sysflowpower.*; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.Api; @@ -34,11 +35,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerVo; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerDetailsVo; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerDto; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerFeign; - /** * Project: anrui-portal(流程权限)
* File: SysFlowPowerFeignFallback.java
@@ -93,4 +89,9 @@ public class SysFlowPowerRest implements SysFlowPowerFeign { SysFlowPowerDetailsVo vo = sysFlowPowerService.fetchDetailsVoBySid(sid); return rb.success().setData(vo); } + + @Override + public boolean flowPermissions(SysFlowNodeQuery query) { + return sysFlowPowerService.flowPermissions(query); + } } diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerService.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerService.java index cb550d3fde..319d1b719d 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerService.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowpower/SysFlowPowerService.java @@ -28,6 +28,7 @@ package com.yxt.anrui.portal.biz.sysflowpower; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.portal.api.sysflowpower.*; import com.yxt.anrui.portal.api.sysflowpowerdetail.SysFlowPowerDetailDetailsVo; import com.yxt.anrui.portal.api.sysflowpowerdetail.SysFlowPowerDetailDto; import com.yxt.anrui.portal.biz.sysflowpowerdetail.SysFlowPowerDetailService; @@ -38,14 +39,11 @@ import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.vo.PagerVo; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPower; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerVo; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerDetailsVo; -import com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -140,4 +138,37 @@ public class SysFlowPowerService extends MybatisBaseService sysFlowPowerVoList = baseMapper.selectPageVo(query.getProcDefId()); + if (!sysFlowPowerVoList.isEmpty()) { + for (SysFlowPowerVo sysFlowPowerVo : sysFlowPowerVoList) { + if (sysFlowPowerVo.getFlowName().equals(query.getFlowName())) { + if (sysFlowPowerVo.getUseOrgNames().contains(query.getCreateOrgName())) { + String sid = sysFlowPowerVo.getSid(); + SysFlowPowerDetailsVo vo = fetchDetailsVoBySid(sid); + if (null != vo) { + List detailList = vo.getSysFlowPowerDetailList(); + for (SysFlowPowerDetailDetailsVo d : detailList) { + if (d.getTaskDefName().equals(query.getNodeNames()) && d.getParamName().equals(query.getParameter())) { + BigDecimal powerRange = new BigDecimal(d.getPowerRange()); + BigDecimal value = new BigDecimal(query.getValue()); + if (query.getType() == 0) { + if (value.compareTo(powerRange) < 0) { + return true; + } + } else if (query.getType() == 1) { + if (value.compareTo(powerRange) > 0) { + return true; + } + } + } + } + } + } + } + } + } + return false; + } +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApply.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApply.java index 2cd880246e..a000a2b8be 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApply.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApply.java @@ -93,4 +93,30 @@ public class AsBillSettelApply extends BaseEntity { private String customerName; // 客户名称 @ApiModelProperty("单据编号") private String billNo; // 单据编号 + + /** + * 成本合计 + */ + private BigDecimal costAmount; + /** + * 材料费 + */ + private BigDecimal goodsAmount; + /** + * 工时费 + */ + private BigDecimal hourAmount; + /** + * 优惠 + */ + private BigDecimal discountAmount; + /** + * 附加费 + */ + private BigDecimal addAmount; + /** + * 利润 + */ + private BigDecimal profit; + } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java index a0f1ee83e4..cf6d7ea432 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java @@ -60,6 +60,7 @@ public class AsBillSettelApplyDetailsVo implements Vo { */ private String addAmount; private String sid; + private String customerSid; /** * 附加项目 */ diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitem/AsBillSettelApplyAitem.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitem/AsBillSettelApplyAitem.java index b67686c4e8..a64b2c7bed 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitem/AsBillSettelApplyAitem.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitem/AsBillSettelApplyAitem.java @@ -19,20 +19,25 @@ import java.math.BigDecimal; public class AsBillSettelApplyAitem extends BaseEntity { @ApiModelProperty("结算单sid") private String mainSid; - @ApiModelProperty("附加项目sid") + /** + * 成本 + */ + private String aitemCost; + /** + * 其它附加项目 + */ + private String aitemName; + /** + * 利润额 + */ + private String aitemPrint; + /** + * 应收金额,销售价 + */ + private String aitemReceivableAmount; + /** + * 备注 + */ + private String remarks; private String attachItemSid; - @ApiModelProperty("附加项目名称") - private String attachItem; - @ApiModelProperty("销售价") - private BigDecimal price; - @ApiModelProperty("销售价常量") - private BigDecimal aitemPrice; - @ApiModelProperty("业务类型Key") - private String billBusTypeKey; - @ApiModelProperty("业务类型Value") - private String billBusTypeValue; - @ApiModelProperty("成本价") - private BigDecimal cost; - @ApiModelProperty("成本合计(成本价*数量)") - private BigDecimal costTotal; } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitemspec/AsBillSettelApplyAitemspec.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitemspec/AsBillSettelApplyAitemspec.java index d39641f975..3773bd1e49 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitemspec/AsBillSettelApplyAitemspec.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplyaitemspec/AsBillSettelApplyAitemspec.java @@ -29,5 +29,7 @@ public class AsBillSettelApplyAitemspec extends BaseEntity { private BigDecimal taxPrice; @ApiModelProperty("成本合计(成本价*数量)") private BigDecimal costTotal; + @ApiModelProperty("利润") + private BigDecimal print; } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplydetail/AsBillSettelApplyDetail.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplydetail/AsBillSettelApplyDetail.java index 98c9a533da..1c4fa92a56 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplydetail/AsBillSettelApplyDetail.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapplydetail/AsBillSettelApplyDetail.java @@ -20,7 +20,6 @@ public class AsBillSettelApplyDetail extends BaseEntity { private static final long serialVersionUID = 7134535185685249599L; @ApiModelProperty("单据sid") private String mainSid; - private String sid; @ApiModelProperty("出/退库数量") private String count; @ApiModelProperty("销售价(元)") diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java index faa5d05f16..6e4bf93acf 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java @@ -67,4 +67,6 @@ public interface AsBillSettelApplyMapper extends BaseMapper { int selectNum(String bill); int updateFlowFiled(Map map); + + int selCount(@Param("sourceSid") String sourceSid); } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml index 75836a5660..e035746626 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml @@ -52,4 +52,12 @@ from as_bill_settel_apply where billNo LIKE concat(#{bill}, '%') + diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java index 2e95c3b99c..52e1794784 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java @@ -43,10 +43,10 @@ import com.yxt.anrui.as.api.asbillsettelapplydetail.AsBillSettelApplyDetail; import com.yxt.anrui.as.api.asbillsettelapplysitem.AsBillSettelApplySitem; import com.yxt.anrui.as.api.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.asbusrepairbillsitem.AsBusrepairBillSitem; +import com.yxt.anrui.as.api.asbusrepairbillsitemrepairer.AsBusrepairBillSitemRepairer; +import com.yxt.anrui.as.api.asbusrepairbillvech.AsBusrepairBillVech; import com.yxt.anrui.as.api.asserviceattachitem.AsServiceAttachItem; -import com.yxt.anrui.as.api.asserviceitem.AsServiceItem; import com.yxt.anrui.as.api.enums.AsBillTypeEnum; import com.yxt.anrui.as.api.utils.AsRule; import com.yxt.anrui.as.api.utils.FileUrlQuery; @@ -56,20 +56,32 @@ import com.yxt.anrui.as.biz.asbillsettelapplyaitemspec.AsBillSettelApplyAitemSpe import com.yxt.anrui.as.biz.asbillsettelapplydetail.AsBillSettelApplyDetailService; import com.yxt.anrui.as.biz.asbillsettelapplysitem.AsBillSettelApplySitemService; import com.yxt.anrui.as.biz.asbusrepairbill.AsBusrepairBillService; +import com.yxt.anrui.as.biz.asbusrepairbillnode.AsBusrepairBillNodeService; +import com.yxt.anrui.as.biz.asbusrepairbillsitem.AsBusrepairBillSitemService; +import com.yxt.anrui.as.biz.asbusrepairbillsitemrepairer.AsBusrepairBillSitemRepairerService; +import com.yxt.anrui.as.biz.asbusrepairbillvech.AsBusrepairBillVechService; import com.yxt.anrui.as.biz.asserviceattachitem.AsServiceAttachItemService; import com.yxt.anrui.as.biz.asserviceitem.AsServiceItemService; +import com.yxt.anrui.as.biz.astechtitledetail.AsTechTitleDetailService; +import com.yxt.anrui.as.feign.fin.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedDto; +import com.yxt.anrui.as.feign.fin.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedFeign; 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.fms.FmsReceivesettleDto; 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.sysflowpower.SysFlowNodeQuery; +import com.yxt.anrui.as.feign.portal.sysflowpower.SysFlowPowerFeign; 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.sysrole.SysRoleFeign; +import com.yxt.anrui.as.feign.portal.sysrole.SysRoleVo; 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; @@ -108,6 +120,16 @@ import java.util.stream.Collectors; */ @Service public class AsBillSettelApplyService extends MybatisBaseService { + @Resource + private FinUncollectedReceivablesDetailedFeign finUncollectedReceivablesDetailedFeign; + @Autowired + private AsBusrepairBillVechService asBusrepairBillVechService; + @Autowired + private AsBusrepairBillNodeService asBusrepairBillNodeService; + @Autowired + private AsBusrepairBillSitemService asBusrepairBillSitemService; + @Autowired + private SysFlowPowerFeign sysFlowPowerFeign; @Autowired private SysUserFeign sysUserFeign; @Autowired @@ -142,7 +164,12 @@ public class AsBillSettelApplyService extends MybatisBaseService createQueryWrapper(AsBillSettelApplyQuery query) { // todo: 这里根据具体业务调整查询条件 // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); @@ -247,31 +274,51 @@ public class AsBillSettelApplyService extends MybatisBaseService 0) { List aitemVos = dto.getAitemVos(); for (SettleAitemVo aitemVo : aitemVos) { AsBillSettelApplyAitem a = new AsBillSettelApplyAitem(); - BeanUtil.copyProperties(aitemVo,a,"sid"); + BeanUtil.copyProperties(aitemVo, a, "sid"); a.setMainSid(sid); asBillSettelApplyAitemService.insert(a); + if (StringUtils.isNotBlank(aitemVo.getAitemCost())) { + costAll = costAll.add(new BigDecimal(aitemVo.getAitemCost())); + } + if (StringUtils.isNotBlank(aitemVo.getAitemPrint())) { + printAll = printAll.add(new BigDecimal(aitemVo.getAitemPrint())); + } } } if (!dto.getSitemVos().isEmpty() && dto.getSitemVos().size() > 0) { List sitemVos = dto.getSitemVos(); for (SettleSitemVo sitemVo : sitemVos) { AsBillSettelApplySitem a = new AsBillSettelApplySitem(); - BeanUtil.copyProperties(sitemVo,a,"sid"); + BeanUtil.copyProperties(sitemVo, a, "sid"); a.setMainSid(sid); asBillSettelApplySitemService.insert(a); + if (StringUtils.isNotBlank(sitemVo.getSitemCost())) { + costAll = costAll.add(new BigDecimal(sitemVo.getSitemCost())); + } + if (StringUtils.isNotBlank(sitemVo.getSitemPrint())) { + printAll = printAll.add(new BigDecimal(sitemVo.getSitemPrint())); + } } } if (!dto.getGoodsDetailsVos().isEmpty() && dto.getGoodsDetailsVos().size() > 0) { List goodsDetailsVos = dto.getGoodsDetailsVos(); for (SettleGoodsDetailsVo g : goodsDetailsVos) { AsBillSettelApplyDetail d = new AsBillSettelApplyDetail(); - BeanUtil.copyProperties(g,d,"sid"); + BeanUtil.copyProperties(g, d, "sid"); d.setMainSid(sid); asBillSettelApplyDetailService.insert(d); + if (StringUtils.isNotBlank(g.getGoodsCost())) { + costAll = costAll.add(new BigDecimal(g.getGoodsCost())); + } + if (StringUtils.isNotBlank(g.getGoodsPrint())) { + printAll = printAll.add(new BigDecimal(g.getGoodsPrint())); + } } } if (StringUtils.isNotBlank(dto.getOutAmount())) { @@ -284,8 +331,13 @@ public class AsBillSettelApplyService extends MybatisBaseService fileName = data.getFileName(); + if (!fileName.isEmpty()) { + vo.setFileName(fileName); + List files = new ArrayList<>(); + for (FileUrlQuery fileUrlQuery : fileName) { + files.add(fileUrlQuery.getUrl()); + } + vo.setFileName2(files); } - if (StringUtils.isNotBlank(data.getRescueAmount())) { - vo.setRescueAmount(data.getRescueAmount()); - rescueAmount = new BigDecimal(data.getRescueAmount()); + List aitemVos = new ArrayList<>(); + List goodsDetailsVos = new ArrayList<>(); + List sitemVos = new ArrayList<>(); + List applyAitems = asBillSettelApplyAitemService.fetchByBillSid(sid); + if (!applyAitems.isEmpty() && applyAitems.size() > 0) { + for (AsBillSettelApplyAitem c : applyAitems) { + SettleAitemVo e = new SettleAitemVo(); + BeanUtil.copyProperties(c, e); + aitemVos.add(e); + } + vo.setAitemVos(aitemVos); } - if (StringUtils.isNotBlank(data.getRescueKPAmount())) { - vo.setRescueKPAmount(data.getRescueKPAmount()); - rescueKPAmount = new BigDecimal(data.getRescueKPAmount()); + List sitems = asBillSettelApplySitemService.fetchByBillSid(sid); + if (!sitems.isEmpty() && sitems.size() > 0) { + for (AsBillSettelApplySitem c : sitems) { + SettleSitemVo e = new SettleSitemVo(); + BeanUtil.copyProperties(c, e); + sitemVos.add(e); + } + vo.setSitemVos(sitemVos); } - List sitemVos = data.getSitemVos(); - if (!sitemVos.isEmpty()) { - List settleSitemVos = new ArrayList<>(); - for (SitemVo s : sitemVos) { - SettleSitemVo v = new SettleSitemVo(); - BeanUtil.copyProperties(s,v); - BigDecimal yingshou = BigDecimal.ZERO; //应收 - BigDecimal youhui = BigDecimal.ZERO; //优惠 - BigDecimal jiesuan = BigDecimal.ZERO; //结算 - BigDecimal chengben = BigDecimal.ZERO; //成本 - BigDecimal lirun = BigDecimal.ZERO; //利润 - if (StringUtils.isNotBlank(s.getAmount())) { - yingshou = new BigDecimal(s.getAmount()); - v.setSitemReceivableAmount(yingshou.toString()); - } - if (StringUtils.isNotBlank(s.getDiscountAmount())) { - youhui = new BigDecimal(s.getDiscountAmount()); - } - jiesuan = yingshou.subtract(youhui); - v.setSitemSettleAmount(jiesuan.toString()); - //求成本 - AsServiceItem item = asServiceItemService.fetchBySid(s.getServiceItemSid()); - if (null != item) { - if (null != item.getCost()) { - chengben = item.getCost(); - } - } - v.setSitemCost(chengben.toString()); - lirun = jiesuan.subtract(chengben); - v.setSitemPrint(lirun.toString()); - costAmount = costAmount.add(chengben); - profit = profit.add(lirun); - settleSitemVos.add(v); + List goods = asBillSettelApplyDetailService.fetchByBillSid(sid); + if (!goods.isEmpty() && goods.size() > 0) { + for (AsBillSettelApplyDetail c : goods) { + SettleGoodsDetailsVo e = new SettleGoodsDetailsVo(); + BeanUtil.copyProperties(c, e); + goodsDetailsVos.add(e); } - vo.setSitemVos(settleSitemVos); + vo.setGoodsDetailsVos(goodsDetailsVos); } - List goodsDetailsVos = data.getGoodsDetailsVos(); - if (!goodsDetailsVos.isEmpty()) { - List goodsList = new ArrayList<>(); - for (GoodsDetailsVo g : goodsDetailsVos) { - SettleGoodsDetailsVo v = new SettleGoodsDetailsVo(); - BeanUtil.copyProperties(g,v); - BigDecimal yingshou = BigDecimal.ZERO; //应收 - BigDecimal youhui = BigDecimal.ZERO; //优惠 - BigDecimal jiesuan = BigDecimal.ZERO; //结算 - BigDecimal chengben = BigDecimal.ZERO; //成本 - BigDecimal chengbenPrice = BigDecimal.ZERO; //成本单价 - BigDecimal lirun = BigDecimal.ZERO; //利润 - BigDecimal count = BigDecimal.ZERO; //数量 - if (StringUtils.isNotBlank(g.getCount())) { - count = new BigDecimal(g.getCount()); - } - if (StringUtils.isNotBlank(g.getPrice())) { - BigDecimal price = new BigDecimal(g.getPrice()); - yingshou = price.multiply(count); - v.setGoodsReceivableAmount(yingshou.toString()); - } - if (StringUtils.isNotBlank(g.getDiscountAmount())) { - youhui = new BigDecimal(g.getDiscountAmount()); - } - jiesuan = yingshou.subtract(youhui); - v.setGoodsSettleAmount(jiesuan.toString()); - //求成本 - if (StringUtils.isNotBlank(g.getInventorySid())) { - String inventorySid = g.getInventorySid(); - WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData(); - if (null != inventory) { - if (null != inventory.getCost()) { - chengbenPrice = inventory.getCost(); - chengben = chengbenPrice.multiply(count); - } + List specs = asBillSettelApplyAitemSpecService.fetchByBillSid(sid); + if (!specs.isEmpty() && specs.size() > 0) { + for (AsBillSettelApplyAitemspec c : specs) { + if (c.getAttachItem().equals("外出费")) { + if (null != c.getPrice()) { + vo.setOutAmount(c.getPrice().toString()); + } + if (StringUtils.isNotBlank(c.getRemarks())) { + vo.setOutRemarks(c.getRemarks()); + } + if (null != c.getCostTotal()) { + vo.setOutCost(c.getCostTotal().toString()); + } + if (null != c.getTaxPrice()) { + vo.setOutKPAmount(c.getTaxPrice().toString()); + } + if (null != c.getPrint()) { + vo.setOutPrint(c.getPrint().toString()); } } - v.setGoodsCost(chengben.toString()); - lirun = jiesuan.subtract(chengben); - v.setGoodsPrint(lirun.toString()); - costAmount = costAmount.add(chengben); - profit = profit.add(lirun); - goodsList.add(v); - } - vo.setGoodsDetailsVos(goodsList); - } - List aitemVos = data.getAitemVos(); - if (!aitemVos.isEmpty()) { - List aitemVoList = new ArrayList<>(); - for (AitemVo a : aitemVos) { - SettleAitemVo v = new SettleAitemVo(); - BeanUtil.copyProperties(a,v); - BigDecimal yingshou = BigDecimal.ZERO; //应收 - BigDecimal chengben = BigDecimal.ZERO; //成本 - BigDecimal lirun = BigDecimal.ZERO; //利润 - if (StringUtils.isNotBlank(a.getPrice())) { - yingshou = new BigDecimal(a.getPrice()); - v.setAitemReceivableAmount(yingshou.toString()); + if (c.getAttachItem().equals("厂家补助")) { + if (null != c.getPrice()) { + vo.setSubsidyAmount(c.getPrice().toString()); + } + if (StringUtils.isNotBlank(c.getRemarks())) { + vo.setSubsidyRemarks(c.getRemarks()); + } + if (null != c.getCostTotal()) { + vo.setSubsidyCost(c.getCostTotal().toString()); + } + if (null != c.getTaxPrice()) { + vo.setSubsidyKPAmount(c.getTaxPrice().toString()); + } + if (null != c.getPrint()) { + vo.setSubsidyPrint(c.getPrint().toString()); + } } - //求成本 - if (StringUtils.isNotBlank(a.getAitemSid())) { - String aitemsid = a.getAitemSid(); - AsServiceAttachItem attachItem = asServiceAttachItemService.fetchBySid(aitemsid); - if (null != attachItem) { - if (null != attachItem.getCost()) { - chengben = attachItem.getCost(); - } + if (c.getAttachItem().equals("施救费")) { + if (null != c.getPrice()) { + vo.setRescueAmount(c.getPrice().toString()); + } + if (StringUtils.isNotBlank(c.getRemarks())) { + vo.setRescueRemarks(c.getRemarks()); + } + if (null != c.getCostTotal()) { + vo.setRescueCost(c.getCostTotal().toString()); + } + if (null != c.getTaxPrice()) { + vo.setRescueKPAmount(c.getTaxPrice().toString()); + } + if (null != c.getPrint()) { + vo.setRescuePrint(c.getPrint().toString()); } } - v.setAitemCost(chengben.toString()); - lirun = yingshou.subtract(chengben); - v.setAitemPrint(lirun.toString()); - costAmount = costAmount.add(chengben); - profit = profit.add(lirun); - aitemVoList.add(v); } - vo.setAitemVos(aitemVoList); - } - if (outKPAmount.compareTo(BigDecimal.ZERO) > 0) { - profit = profit.add(outKPAmount); - } else { - profit = profit.add(outAmount); - } - if (subsidyKPAmount.compareTo(BigDecimal.ZERO) > 0) { - profit = profit.add(subsidyKPAmount); - } else { - profit = profit.add(subsidyAmount); - } - if (rescueKPAmount.compareTo(BigDecimal.ZERO) > 0) { - profit = profit.add(rescueKPAmount); - } else { - profit = profit.add(rescueAmount); - } - vo.setProfit(profit.toString()); - vo.setCostAmount(costAmount.toString()); - List fileName = data.getFileName(); - if (!fileName.isEmpty()) { - vo.setFileName(fileName); - List files = new ArrayList<>(); - for (FileUrlQuery fileUrlQuery : fileName) { - files.add(fileUrlQuery.getUrl()); - } - vo.setFileName2(files); } } } else if (sourceBill == 1) { @@ -683,7 +645,7 @@ public class AsBillSettelApplyService extends MybatisBaseService goodsList = new ArrayList<>(); for (SalesGoodsVo g : goodsDetailsVos) { SettleGoodsDetailsVo v = new SettleGoodsDetailsVo(); - BeanUtil.copyProperties(g,v); + BeanUtil.copyProperties(g, v); BigDecimal yingshou = BigDecimal.ZERO; //应收 BigDecimal youhui = BigDecimal.ZERO; //优惠 BigDecimal jiesuan = BigDecimal.ZERO; //结算 @@ -729,7 +691,7 @@ public class AsBillSettelApplyService extends MybatisBaseService aitemVoList = new ArrayList<>(); for (SmsAttachitemVo a : aitemVos) { SettleAitemVo v = new SettleAitemVo(); - BeanUtil.copyProperties(a,v); + BeanUtil.copyProperties(a, v); BigDecimal yingshou = BigDecimal.ZERO; //应收 BigDecimal chengben = BigDecimal.ZERO; //成本 BigDecimal lirun = BigDecimal.ZERO; //利润 @@ -768,6 +730,20 @@ public class AsBillSettelApplyService extends MybatisBaseService 0) { + return rb.setMsg("该维修单已发起结算申请,请勿重复发起!"); + } + AsBusrepairBill asBusrepairBill = asBusrepairBillService.fetchBySid(sourceSid); + if (null != asBusrepairBill) { + if (asBusrepairBill.getSubject().equals("保内")) { + if (asBusrepairBill.getOldIsReclaim() != 1) { + return rb.setMsg("请先完成旧件入库,再进行操作!"); + } + } + } + AsBillSettelApply settelApply = fetchBySid(dto.getSid()); int r = submitBusinessData(dto, settelApply); if (r == 3) { @@ -805,6 +781,151 @@ public class AsBillSettelApplyService extends MybatisBaseService sitemVos = vo.getSitemVos(); + if (!sitemVos.isEmpty()) { + for (SettleSitemVo s : sitemVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getSitemSettleAmount())) { + amount = new BigDecimal(s.getSitemSettleAmount()); + } + if (StringUtils.isNotBlank(s.getSitemCost())) { + cost = new BigDecimal(s.getSitemCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(createBySid).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(createBySid).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司前台主管")) { + isZG = true; + } + } + } + } variables.put("discount", discount); variables.put("isSecond", isSecond); variables.put("isZhan", isZhan); @@ -886,6 +1007,151 @@ public class AsBillSettelApplyService extends MybatisBaseService sitemVos = vo.getSitemVos(); + if (!sitemVos.isEmpty()) { + for (SettleSitemVo s : sitemVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getSitemSettleAmount())) { + amount = new BigDecimal(s.getSitemSettleAmount()); + } + if (StringUtils.isNotBlank(s.getSitemCost())) { + cost = new BigDecimal(s.getSitemCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司前台主管")) { + isZG = true; + } + } + } + } variables.put("discount", discount); variables.put("isSecond", isSecond); variables.put("isZhan", isZhan); @@ -912,8 +1178,176 @@ public class AsBillSettelApplyService extends MybatisBaseService sitems = asBusrepairBillSitemService.fetchByBillSid(settelApply.getSourceSid()); + if (sitems != null) { + if (!sitems.isEmpty()) { + for (AsBusrepairBillSitem sitem : sitems) { + BigDecimal examineHourPrice = BigDecimal.ZERO; + if (null != sitem.getExamineHourPrice()) { + examineHourPrice = sitem.getExamineHourPrice(); + } + if (examineHourPrice.compareTo(BigDecimal.ZERO) > 0) { + String billSid = sitem.getBillSid(); + String serviceItemSid = sitem.getServiceItemSid(); + List repairers = asBusrepairBillSitemRepairerService.fetchByBillSid(billSid, serviceItemSid); + if (null != repairers) { + if (!repairers.isEmpty()) { + //查询权重之和 + BigDecimal sum = BigDecimal.ZERO; + Map map = new HashMap<>(); + for (AsBusrepairBillSitemRepairer repairer : repairers) { + String rSid = repairer.getSid(); + String pSid = repairer.getRepairerSid(); + BigDecimal weight = BigDecimal.ZERO; + String w = asTechTitleDetailService.selWeightByUserSid(pSid); + if (StringUtils.isNotBlank(w)) { + weight = new BigDecimal(w); + } + sum = sum.add(weight); + map.put(rSid, weight); + } + if (sum.compareTo(BigDecimal.ZERO) > 0) { + if (map.size() > 0) { + for (Map.Entry entry : map.entrySet()) { + String mSid = entry.getKey(); + BigDecimal mWeight = entry.getValue(); + AsBusrepairBillSitemRepairer repairer = asBusrepairBillSitemRepairerService.fetchBySid(mSid); + BigDecimal finalWeight = mWeight.divide(sum, 2, BigDecimal.ROUND_HALF_UP).multiply(examineHourPrice); + repairer.setCommission(finalWeight); + asBusrepairBillSitemRepairerService.updateById(repairer); + } + } + } + } + } + } + } + } + } + if (asBusrepairBill.getSubject().equals("保内")) { + asBusrepairBill.setNodeCode(6); + asBusrepairBill.setNodeName("已结算"); + asBusrepairBill.setNodeTime(new DateTime()); + asBusrepairBill.setSettleTime(DateUtil.formatDate(new Date())); + if (asBusrepairBill.getMaterialConfirm().intValue() == 0) { + asBusrepairBill.setMaterialConfirm(1); + asBusrepairBill.setOutDoorState("2"); + } + asBusrepairBillService.updateById(asBusrepairBill); + //新增工单环节信息 + AsBusrepairBillNode billNode = new AsBusrepairBillNode(); + billNode.setBillSid(settelApply.getSourceSid()); + billNode.setCreateByName(settelApply.getCreateByName()); + billNode.setNodeName("已结算"); + billNode.setCreateBySid(settelApply.getCreateBySid()); + billNode.setNodeCode("6"); + asBusrepairBillNodeService.insert(billNode); + } + if (asBusrepairBill.getSubject().equals("保外")) { + if (null != settelApply.getHourAmount()) { + if (settelApply.getHourAmount().compareTo(BigDecimal.ZERO) > 0) { + FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto(); + finUncollectedReceivablesDetailedDto.setCreateByName(asBusrepairBill.getCreateByName()); + finUncollectedReceivablesDetailedDto.setCreateBySid(asBusrepairBill.getCreateBySid()); + finUncollectedReceivablesDetailedDto.setCustomerSid(asBusrepairBill.getCustomerSid()); + finUncollectedReceivablesDetailedDto.setCustomerName(asBusrepairBill.getCustomerName()); + finUncollectedReceivablesDetailedDto.setContractSid(asBusrepairBill.getSid()); + finUncollectedReceivablesDetailedDto.setContractNo(asBusrepairBill.getBillNo()); + AsBusrepairBillVech billVech = asBusrepairBillVechService.fetchByBillSid(asBusrepairBill.getSid()); + if (null != billVech) { + if (StringUtils.isNotBlank(billVech.getVinNo())) { + finUncollectedReceivablesDetailedDto.setVIN(billVech.getVinNo()); + finUncollectedReceivablesDetailedDto.setBusVinSid(billVech.getSid()); + } + } + finUncollectedReceivablesDetailedDto.setStaffDeptSid(asBusrepairBill.getDeptSid()); + finUncollectedReceivablesDetailedDto.setStaffDeptName(asBusrepairBill.getDeptName()); + finUncollectedReceivablesDetailedDto.setCustomerPhone(asBusrepairBill.getMobile()); + finUncollectedReceivablesDetailedDto.setUseOrgSid(asBusrepairBill.getUseOrgSid()); + finUncollectedReceivablesDetailedDto.setOrgSidPath(asBusrepairBill.getOrgSidPath()); + finUncollectedReceivablesDetailedDto.setReceivablesName("工时费"); + finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((settelApply.getHourAmount()).toString()); + finUncollectedReceivablesDetailedDto.setReveivableMoney((settelApply.getHourAmount()).toString()); + finUncollectedReceivablesDetailedDto.setUseOrgName(asBusrepairBill.getUseOrgName()); + finUncollectedReceivablesDetailedDto.setKxState("01"); + finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto); + } + } + if (null != settelApply.getGoodsAmount()) { + if (settelApply.getGoodsAmount().compareTo(BigDecimal.ZERO) > 0) { + FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto(); + finUncollectedReceivablesDetailedDto.setCreateByName(asBusrepairBill.getCreateByName()); + finUncollectedReceivablesDetailedDto.setCreateBySid(asBusrepairBill.getCreateBySid()); + finUncollectedReceivablesDetailedDto.setCustomerSid(asBusrepairBill.getCustomerSid()); + finUncollectedReceivablesDetailedDto.setCustomerName(asBusrepairBill.getCustomerName()); + finUncollectedReceivablesDetailedDto.setContractSid(asBusrepairBill.getSid()); + finUncollectedReceivablesDetailedDto.setContractNo(asBusrepairBill.getBillNo()); + AsBusrepairBillVech billVech = asBusrepairBillVechService.fetchByBillSid(asBusrepairBill.getSid()); + if (null != billVech) { + if (StringUtils.isNotBlank(billVech.getVinNo())) { + finUncollectedReceivablesDetailedDto.setVIN(billVech.getVinNo()); + finUncollectedReceivablesDetailedDto.setBusVinSid(billVech.getSid()); + } + } + finUncollectedReceivablesDetailedDto.setStaffDeptSid(asBusrepairBill.getDeptSid()); + finUncollectedReceivablesDetailedDto.setStaffDeptName(asBusrepairBill.getDeptName()); + finUncollectedReceivablesDetailedDto.setCustomerPhone(asBusrepairBill.getMobile()); + finUncollectedReceivablesDetailedDto.setUseOrgSid(asBusrepairBill.getUseOrgSid()); + finUncollectedReceivablesDetailedDto.setOrgSidPath(asBusrepairBill.getOrgSidPath()); + finUncollectedReceivablesDetailedDto.setReceivablesName("材料费"); + finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((settelApply.getGoodsAmount()).toString()); + finUncollectedReceivablesDetailedDto.setReveivableMoney((settelApply.getGoodsAmount()).toString()); + finUncollectedReceivablesDetailedDto.setUseOrgName(asBusrepairBill.getUseOrgName()); + finUncollectedReceivablesDetailedDto.setKxState("01"); + finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto); + } + } + if (settelApply.getAddAmount().compareTo(BigDecimal.ZERO) > 0) { + FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto(); + finUncollectedReceivablesDetailedDto.setCreateByName(asBusrepairBill.getCreateByName()); + finUncollectedReceivablesDetailedDto.setCreateBySid(asBusrepairBill.getCreateBySid()); + finUncollectedReceivablesDetailedDto.setCustomerSid(asBusrepairBill.getCustomerSid()); + finUncollectedReceivablesDetailedDto.setCustomerName(asBusrepairBill.getCustomerName()); + finUncollectedReceivablesDetailedDto.setContractSid(asBusrepairBill.getSid()); + finUncollectedReceivablesDetailedDto.setContractNo(asBusrepairBill.getBillNo()); + AsBusrepairBillVech billVech = asBusrepairBillVechService.fetchByBillSid(asBusrepairBill.getSid()); + if (null != billVech) { + if (StringUtils.isNotBlank(billVech.getVinNo())) { + finUncollectedReceivablesDetailedDto.setVIN(billVech.getVinNo()); + finUncollectedReceivablesDetailedDto.setBusVinSid(billVech.getSid()); + } + } + finUncollectedReceivablesDetailedDto.setStaffDeptSid(asBusrepairBill.getDeptSid()); + finUncollectedReceivablesDetailedDto.setStaffDeptName(asBusrepairBill.getDeptName()); + finUncollectedReceivablesDetailedDto.setCustomerPhone(asBusrepairBill.getMobile()); + finUncollectedReceivablesDetailedDto.setUseOrgSid(asBusrepairBill.getUseOrgSid()); + finUncollectedReceivablesDetailedDto.setOrgSidPath(asBusrepairBill.getOrgSidPath()); + finUncollectedReceivablesDetailedDto.setReceivablesName("其他费用"); + finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney(settelApply.getAddAmount().toString()); + finUncollectedReceivablesDetailedDto.setReveivableMoney(settelApply.getAddAmount().toString()); + finUncollectedReceivablesDetailedDto.setUseOrgName(asBusrepairBill.getUseOrgName()); + finUncollectedReceivablesDetailedDto.setKxState("01"); + finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto); + } + asBusrepairBill.setSettleTime(DateUtil.formatDate(new Date())); + asBusrepairBill.setNodeCode(6); + asBusrepairBill.setNodeName("已结算"); + asBusrepairBill.setNodeTime(new DateTime()); + asBusrepairBill.setOutDoorState("2"); + asBusrepairBillService.updateById(asBusrepairBill); + //新增工单环节信息 + AsBusrepairBillNode billNode = new AsBusrepairBillNode(); + billNode.setBillSid(asBusrepairBill.getSid()); + billNode.setCreateByName(settelApply.getCreateByName()); + billNode.setNodeName("已结算"); + billNode.setCreateBySid(settelApply.getCreateBySid()); + billNode.setNodeCode("6"); + asBusrepairBillNodeService.insert(billNode); + } } else { //极光推送 settelApply = fetchBySid(businessSid); @@ -940,12 +1374,159 @@ public class AsBillSettelApplyService extends MybatisBaseService> rb = ResultBean.fireFail(); BusinessVariables bv = new BusinessVariables(); BeanUtil.copyProperties(query, bv); + String businessSid = query.getBusinessSid(); boolean discount = false; //是否低于销售价X折或低于优惠金额X元 boolean isSecond = false; //是否为自有二级站 boolean isZhan = false; //是否为自有二级站长 boolean isZG = false; //是否为前台主管 boolean price = false; //是否低于销售价X折 boolean chengben = false; //是否低于成本价 + AsBillSettelApplyDetailsVo vo = fetchDetailsVoBySid(businessSid); + AsBillSettelApply settelApply = fetchBySid(businessSid); + if (null != vo) { + List sitemVos = vo.getSitemVos(); + if (!sitemVos.isEmpty()) { + for (SettleSitemVo s : sitemVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getSitemSettleAmount())) { + amount = new BigDecimal(s.getSitemSettleAmount()); + } + if (StringUtils.isNotBlank(s.getSitemCost())) { + cost = new BigDecimal(s.getSitemCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司前台主管")) { + isZG = true; + } + } + } + } Map variables = new HashMap<>(); variables.put("discount", discount); variables.put("isSecond", isSecond); @@ -965,12 +1546,159 @@ public class AsBillSettelApplyService extends MybatisBaseService> rb = ResultBean.fireFail(); BusinessVariables bv = new BusinessVariables(); BeanUtil.copyProperties(query, bv); + String businessSid = query.getBusinessSid(); boolean discount = false; //是否低于销售价X折或低于优惠金额X元 boolean isSecond = false; //是否为自有二级站 boolean isZhan = false; //是否为自有二级站长 boolean isZG = false; //是否为前台主管 boolean price = false; //是否低于销售价X折 boolean chengben = false; //是否低于成本价 + AsBillSettelApplyDetailsVo vo = fetchDetailsVoBySid(businessSid); + AsBillSettelApply settelApply = fetchBySid(businessSid); + if (null != vo) { + List sitemVos = vo.getSitemVos(); + if (!sitemVos.isEmpty()) { + for (SettleSitemVo s : sitemVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getSitemSettleAmount())) { + amount = new BigDecimal(s.getSitemSettleAmount()); + } + if (StringUtils.isNotBlank(s.getSitemCost())) { + cost = new BigDecimal(s.getSitemCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司前台主管")) { + isZG = true; + } + } + } + } Map variables = new HashMap<>(); variables.put("discount", discount); variables.put("isSecond", isSecond); @@ -1014,6 +1742,151 @@ public class AsBillSettelApplyService extends MybatisBaseService sitemVos = vo.getSitemVos(); + if (!sitemVos.isEmpty()) { + for (SettleSitemVo s : sitemVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getSitemSettleAmount())) { + amount = new BigDecimal(s.getSitemSettleAmount()); + } + if (StringUtils.isNotBlank(s.getSitemCost())) { + cost = new BigDecimal(s.getSitemCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("维修单结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("前台主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司前台主管")) { + isZG = true; + } + } + } + } variables.put("discount", discount); variables.put("isSecond", isSecond); variables.put("isZhan", isZhan); @@ -1238,6 +2111,8 @@ public class AsBillSettelApplyService extends MybatisBaseService settleSitemVos = new ArrayList<>(); for (SitemVo s : sitemVos) { SettleSitemVo v = new SettleSitemVo(); - BeanUtil.copyProperties(s,v); + BeanUtil.copyProperties(s, v); BigDecimal yingshou = BigDecimal.ZERO; //应收 BigDecimal youhui = BigDecimal.ZERO; //优惠 BigDecimal jiesuan = BigDecimal.ZERO; //结算 @@ -1361,9 +2239,9 @@ public class AsBillSettelApplyService extends MybatisBaseService goodsList = new ArrayList<>(); for (GoodsDetailsVo g : goodsDetailsVos) { SettleGoodsDetailsVo v = new SettleGoodsDetailsVo(); - BeanUtil.copyProperties(g,v); + BeanUtil.copyProperties(g, v); if (StringUtils.isNotBlank(g.getPartsSellers2())) { v.setPartsSellers(g.getPartsSellers2()); } @@ -1427,7 +2305,7 @@ public class AsBillSettelApplyService extends MybatisBaseService aitemVoList = new ArrayList<>(); for (AitemVo a : aitemVos) { SettleAitemVo v = new SettleAitemVo(); - BeanUtil.copyProperties(a,v); + BeanUtil.copyProperties(a, v); BigDecimal yingshou = BigDecimal.ZERO; //应收 BigDecimal chengben = BigDecimal.ZERO; //成本 BigDecimal lirun = BigDecimal.ZERO; //利润 @@ -1454,23 +2332,14 @@ public class AsBillSettelApplyService extends MybatisBaseService 0) { -// profit = profit.add(outKPAmount); -// } else { -// profit = profit.add(outAmount); -// } -// if (subsidyKPAmount.compareTo(BigDecimal.ZERO) > 0) { -// profit = profit.add(subsidyKPAmount); -// } else { -// profit = profit.add(subsidyAmount); -// } -// if (rescueKPAmount.compareTo(BigDecimal.ZERO) > 0) { -// profit = profit.add(rescueKPAmount); -// } else { -// profit = profit.add(rescueAmount); -// } - vo.setProfit(profit.toString()); - vo.setCostAmount(costAmount.toString()); + vo.setOutCost("0"); + vo.setSubsidyCost("0"); + vo.setRescueCost("0"); + profit = profit.add(outAmount); + profit = profit.add(subsidyAmount); + profit = profit.add(rescueAmount); +// vo.setProfit(profit.toString()); +// vo.setCostAmount(costAmount.toString()); List fileName = data.getFileName(); if (!fileName.isEmpty()) { vo.setFileName(fileName); @@ -1480,6 +2349,7 @@ public class AsBillSettelApplyService extends MybatisBaseService taxItems = dto.getInvoiceVo().getTaxItems(); - if (!taxItems.isEmpty()) { - String taxItem = String.join(",", taxItems); - invoice.setTaxItems(taxItem); + if (dto.getInvoiceVo().getIsInvoicing().equals("1")) { + List taxItems = dto.getInvoiceVo().getTaxItems(); + if (!taxItems.isEmpty()) { + StringBuffer sb = new StringBuffer(); + for (String taxItem : taxItems) { + if (StringUtils.isNotBlank(taxItem)) { + sb.append(taxItem).append(","); + } + } + if (sb.length() > 0) { + sb.delete(sb.length() - 1, sb.length()); + } + if (StringUtils.isNotBlank(sb)) { + invoice.setTaxItems(sb.toString()); + } + } } + asBusrepairBillInvoiceService.insert(invoice); } //保险信息 diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysflowpower/SysFlowNodeQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysflowpower/SysFlowNodeQuery.java new file mode 100644 index 0000000000..3e22bbe576 --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysflowpower/SysFlowNodeQuery.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.as.feign.portal.sysflowpower; + +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/11/27 14:49 + */ +@Data +public class SysFlowNodeQuery { + + private String flowName;//流程申请名称 + private String createOrgName;//分公司 + private String procDefId;//流程定义id + private String nodeNames;//环节名称 + private String parameter;//参数名称 + private String value;//值 + private int type; //比较类型 0是否小于权限范围 1是否大于权限范围 + +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysflowpower/SysFlowPowerFeign.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysflowpower/SysFlowPowerFeign.java new file mode 100644 index 0000000000..e8e92057ab --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysflowpower/SysFlowPowerFeign.java @@ -0,0 +1,61 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.as.feign.portal.sysflowpower; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui-portal(流程权限)
+ * File: SysFlowPowerFeign.java
+ * Class: com.yxt.anrui.portal.api.sysflowpower.SysFlowPowerFeign
+ * Description: 流程权限.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-08-27 14:31:01
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "流程权限") +@FeignClient( + contextId = "anrui-portal-SysFlowPower", + name = "anrui-portal", + path = "v1/sysflowpower") +public interface SysFlowPowerFeign { + + @ApiOperation("审批权限校验") + @PostMapping("/flowPermissions") + public boolean flowPermissions(@RequestBody SysFlowNodeQuery query); + + +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysrole/SysRoleFeign.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysrole/SysRoleFeign.java new file mode 100644 index 0000000000..cdc12eb3da --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysrole/SysRoleFeign.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.as.feign.portal.sysrole; + +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 io.swagger.annotations.ApiParam; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleFeign.java
+ * Class: com.yxt.anrui.portal.api.sysrole.SysRoleFeign
+ * Description: 角色.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "角色") +@FeignClient( + contextId = "anrui-portal-SysRole", + name = "anrui-portal", + path = "v1/sysrole" + ) +public interface SysRoleFeign { + + + @ApiOperation("根据用户sid查询用户的角色列表") + @PostMapping("/fetchByUserSid/{userSid}") + public ResultBean> fetchByUserSid(@PathVariable("userSid") String userSid); + + +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysrole/SysRoleVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysrole/SysRoleVo.java new file mode 100644 index 0000000000..3f0eb336c0 --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysrole/SysRoleVo.java @@ -0,0 +1,47 @@ +package com.yxt.anrui.as.feign.portal.sysrole; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysRoleVo.java
+ * Class: com.yxt.anrui.portal.api.sysrole.SysRoleVo
+ * Description: 角色 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:29
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "角色 视图数据对象", description = "角色 视图数据对象") +@Data +public class SysRoleVo implements Vo { + @ApiModelProperty("角色名称") + private String name; + @ApiModelProperty("排序") + private Integer sort; + @ApiModelProperty("编码") + private String code; + @ApiModelProperty("1、系统管理员、2、普通角色") + private Integer type; + @ApiModelProperty("角色sid") + private String sid; + @ApiModelProperty("说明") + private String remarks; + @ApiModelProperty("是否选中,1:未选中,0:选中") + private String checked; + @ApiModelProperty("是否可用") + private String isEnable; + @ApiModelProperty("岗位sid") + private String postSid; + @ApiModelProperty("岗位名称") + private String postName; + @ApiModelProperty(value = "组织层级") + private String roleTypeValue; +}