Browse Source

自动计算工时提成

master
fanzongzhe 6 months ago
parent
commit
fa85263147
  1. 3
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillsitemrepairer/AsBusrepairBillSitemRepairer.java
  2. 153
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
  3. 5
      yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.java
  4. 12
      yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.xml
  5. 10
      yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailService.java

3
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillsitemrepairer/AsBusrepairBillSitemRepairer.java

@ -5,6 +5,7 @@ import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.poi.hpsf.Decimal;
import java.math.BigDecimal;
@ -30,6 +31,8 @@ public class AsBusrepairBillSitemRepairer extends BaseEntity {
private String groupSid;
@ApiModelProperty("所在班组名称")
private String groupName;
@ApiModelProperty("维修提成")
private BigDecimal commission;

153
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -45,6 +45,7 @@ import com.yxt.anrui.as.biz.asbusrepairbillsitemrepairer.AsBusrepairBillSitemRep
import com.yxt.anrui.as.biz.asbusrepairbillvech.AsBusrepairBillVechService;
import com.yxt.anrui.as.biz.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetailService;
import com.yxt.anrui.as.biz.asserviceitem.AsServiceItemService;
import com.yxt.anrui.as.biz.astechtitledetail.AsTechTitleDetailService;
import com.yxt.anrui.as.biz.astrackbill.AsTrackBillService;
import com.yxt.anrui.as.feign.crm.CrmCustomerTemp;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempFeign;
@ -150,6 +151,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
private AsBillSettelApplyService asBillSettelApplyService;
@Autowired
private AsBusrepairBillAitemspecService asBusrepairBillAitemspecService;
@Autowired
private AsTechTitleDetailService asTechTitleDetailService;
/**
* 维修领料获取派工单
*
@ -196,7 +200,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
AsBusrepairBill asBusrepairBill = fetchBySid(sid);
BigDecimal ysMoney = finUncollectedReceivablesDetailedFeign.selYsByBillSid(sid).getData();
BigDecimal rkMoney = finSelectedReceivablesDetailedFeign.selRkByBillSid(sid).getData();
if (rkMoney.compareTo(ysMoney) < 0){
if (rkMoney.compareTo(ysMoney) < 0) {
return rb.setMsg(asBusrepairBill.getBillNo() + "该维修单尚未收款,不能出厂!");
}
}
@ -721,7 +725,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setAitemVos(aitemVos);
}
List<AsBusrepairInventorybillDetail> goodsDetails = asBusrepairInventorybillDetailService.getGoodsDetailsByBillSid(sid);
DecimalFormat df2 =new DecimalFormat("#.00");
DecimalFormat df2 = new DecimalFormat("#.00");
if (!goodsDetails.isEmpty()) {
for (AsBusrepairInventorybillDetail goodsDetail : goodsDetails) {
GoodsDetailsVo goodsDetailsVo = new GoodsDetailsVo();
@ -1067,7 +1071,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (StringUtils.isNotBlank(query.getIsInvoicing())) {
qw.eq("i.isInvoicing", query.getIsInvoicing());
}
qw.eq("b.outDoorState",2);
qw.eq("b.outDoorState", 2);
qw.orderByDesc("b.createTime");
IPage<AsBusrepairBill> page = PagerUtil.queryToPage(pagerQuery);
IPage<AsBusrepairBillVo> pagging = baseMapper.listPage(page, qw);
@ -1193,11 +1197,11 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (StringUtils.isNotBlank(query.getIsInvoicing())) {
qw.eq("i.isInvoicing", query.getIsInvoicing());
}
if (StringUtils.isNotBlank(query.getName())){
if (StringUtils.isNotBlank(query.getName())) {
qw.and(wrapper -> wrapper.like("b.billNo", query.getName()).or().like("b.billType", query.getName()).or().like("b.subject", query.getName()).or().like("b.customerName", query.getName()).or().like("v.vinNo", query.getName()).or().like("v.vehMark", query.getName()).or().like("b.nodeName", query.getName()));
}
qw.eq("b.outDoorState",2);
qw.eq("b.isOutFactory",0);
qw.eq("b.outDoorState", 2);
qw.eq("b.isOutFactory", 0);
qw.orderByDesc("b.createTime");
IPage<AsBusrepairBill> page = PagerUtil.queryToPage(pagerQuery);
IPage<AsBusrepairBillVo> pagging = baseMapper.listPage(page, qw);
@ -1438,6 +1442,54 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
String sid = dto.getSid();
AsBusrepairBill asBusrepairBill = fetchBySid(sid);
if (asBusrepairBill.getNodeCode() == 5) {
//计算工时提成分配维修人员
List<AsBusrepairBillSitem> sitems = asBusrepairBillSitemService.fetchByBillSid(sid);
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<AsBusrepairBillSitemRepairer> repairers = asBusrepairBillSitemRepairerService.fetchByBillSid(billSid, serviceItemSid);
if (null != repairers) {
if (!repairers.isEmpty()) {
//查询权重之和
BigDecimal sum = BigDecimal.ZERO;
Map<String, BigDecimal> 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<String, BigDecimal> 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("保内")) {
if (asBusrepairBill.getOldIsReclaim() != 1) {
return rb.setMsg("请先完成旧件入库,再进行操作!");
@ -2127,6 +2179,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
public void updateOutFactory(String sid) {
baseMapper.updateOutFactory(sid);
}
public PagerVo<GoodsReceiveVo> notConfirmList(PagerQuery<GoodsReceiveQuery> pagerQuery) {
GoodsReceiveQuery query = pagerQuery.getParams();
QueryWrapper<AsBusrepairBill> qw = new QueryWrapper<>();
@ -2311,13 +2364,13 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setCaps(caps2);
vo.setUserName(userName);
vo.setNowDate(DateUtil.formatDate(new Date()));
String path = createPrintInventoryPdf(vo,subject);
String path = createPrintInventoryPdf(vo, subject);
filePath = path;
}
return rb.success().setData(filePath);
}
private String createPrintInventoryPdf(RepairBillPdfVo vo,String subject) {
private String createPrintInventoryPdf(RepairBillPdfVo vo, String subject) {
String finalPath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> list = new ArrayList<>();
@ -2356,9 +2409,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
String ftl = "";
if (subject.equals("保内")) {
ftl = "ftl/baoneilingliao.ftl";
ftl = "ftl/baoneilingliao.ftl";
} else if (subject.equals("保外")) {
ftl = "ftl/baowailingliao.ftl";
ftl = "ftl/baowailingliao.ftl";
}
try {
//获取模板
@ -2389,31 +2442,31 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
AsBusrepairBill asBusrepairBill = fetchBySid(sid);
AsBusrepairBillVech asBusrepairBillVech = asBusrepairBillVechService.fetchByBillSid(sid);
//分公司简称
map.put("orgName",asBusrepairBill.getCreateOrgName());
map.put("orgName", asBusrepairBill.getCreateOrgName());
//日期
map.put("date",DateUtil.formatDate(new Date()));
map.put("date", DateUtil.formatDate(new Date()));
//科目
map.put("km",asBusrepairBill.getSubject());
map.put("km", asBusrepairBill.getSubject());
//维修单号
map.put("billNo",asBusrepairBill.getBillNo());
map.put("billNo", asBusrepairBill.getBillNo());
//客户名称
map.put("custName",asBusrepairBill.getCustomerName());
map.put("custName", asBusrepairBill.getCustomerName());
//车型
map.put("modelName",asBusrepairBillVech.getVehModel());
map.put("modelName", asBusrepairBillVech.getVehModel());
//车牌号
map.put("vehMark",asBusrepairBillVech.getVehMark());
map.put("vehMark", asBusrepairBillVech.getVehMark());
//车架号
map.put("vinNo",asBusrepairBillVech.getVinNo());
map.put("vinNo", asBusrepairBillVech.getVinNo());
//出门原因
map.put("cmyy","维修完毕");
map.put("cmyy", "维修完毕");
//业务经办人
map.put("ywjbr",asBusrepairBill.getWaitorName());
map.put("ywjbr", asBusrepairBill.getWaitorName());
//财务经办人
map.put("cwjbr","");
map.put("cwjbr", "");
//提车人
map.put("tcr","");
map.put("tcr", "");
//出门签章
map.put("cmqz","");
map.put("cmqz", "");
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/" + "cmz" + ".ftl");
//生成word文件名
String targetPath = docPdfComponent.getUploadTemplateUrl();
@ -2440,37 +2493,37 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
privilegeQuery.setUserSid(query.getUserSid());
privilegeQuery.setMenuSid(query.getMenuSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (com.yxt.common.base.utils.StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("s.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("s.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
if (com.yxt.common.base.utils.StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("s.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("s.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("a.createBySid", query.getUserSid());
} else {
PagerVo<AppBusrepairBillVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<AppBusrepairBillVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<AppBusrepairBillVo> p = new PagerVo<>();
return p;
}
if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getName())) {
qw.and(wrapper -> wrapper.like("a.billNo", query.getName())
.or().like("a.billType", query.getName())
@ -2481,7 +2534,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
.or().like("a.nodeName", query.getName())
);
}
qw.eq("a.isDelete",0);
qw.eq("a.isDelete", 0);
qw.orderByDesc("a.id");
IPage<AsBusrepairBill> page = PagerUtil.queryToPage(pq);
IPage<AppBusrepairBillVo> pagging = baseMapper.appRepairs(page, qw);

5
yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.java

@ -31,6 +31,7 @@ import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleInit;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleDetail;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -58,4 +59,6 @@ public interface AsTechTitleDetailMapper extends BaseMapper<AsTechTitleDetail> {
List<AsTechTitleDetailDetailsVo> selByMainSid(String mainSid);
AsTechTitleInit selByTechSid(String titleSid);
}
String selWeightByUserSid(@Param("pSid") String pSid);
}

12
yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.xml

@ -34,4 +34,14 @@
)
AND titleSid = #{titleSid}) AS a
</select>
</mapper>
<select id="selWeightByUserSid" resultType="java.lang.String">
SELECT
t.weight
FROM
as_tech_title_detail AS t
LEFT JOIN as_tech_title_apply as ta ON t.mainSid = ta.sid
WHERE ta.nodeState = '已办结' and t.techSid = #{pSid}
ORDER BY t.weight DESC
LIMIT 1
</select>
</mapper>

10
yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailService.java

@ -57,7 +57,7 @@ import java.util.List;
*/
@Service
public class AsTechTitleDetailService extends MybatisBaseService<AsTechTitleDetailMapper, AsTechTitleDetail> {
public void insertByDto(AsTechTitleDetailDto dto){
AsTechTitleDetail entity = new AsTechTitleDetail();
BeanUtil.copyProperties(dto, entity, "id", "sid");
@ -67,7 +67,7 @@ public class AsTechTitleDetailService extends MybatisBaseService<AsTechTitleDeta
entity.setTechName(String.join(",",techNames));
baseMapper.insert(entity);
}
public AsTechTitleDetailDetailsVo fetchDetailsVoBySid(String sid){
AsTechTitleDetail entity = fetchBySid(sid);
AsTechTitleDetailDetailsVo vo = new AsTechTitleDetailDetailsVo();
@ -86,4 +86,8 @@ public class AsTechTitleDetailService extends MybatisBaseService<AsTechTitleDeta
public AsTechTitleInit selByTechSid(String titleSid) {
return baseMapper.selByTechSid(titleSid);
}
}
public String selWeightByUserSid(String pSid) {
return baseMapper.selWeightByUserSid(pSid);
}
}

Loading…
Cancel
Save