|
|
@ -29,6 +29,7 @@ import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretware.*; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretwareveh.BaseManufacturerRetwareVeh; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretwareveh.BaseManufacturerRetwareVehDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretwareveh.BaseManufacturerRetwareVehDto; |
|
|
@ -42,6 +43,7 @@ import com.yxt.anrui.base.common.enums.BillTypeEnum; |
|
|
|
import com.yxt.anrui.base.common.enums.VehicleState; |
|
|
|
import com.yxt.anrui.base.common.utils.Rule; |
|
|
|
import com.yxt.anrui.base.common.utils.domain.BillNo; |
|
|
|
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedPdfVo; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.purmrb.PurMrb; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.push.STKInStockPushPurmrb; |
|
|
@ -49,7 +51,17 @@ import com.yxt.anrui.portal.api.sysorganization.SysOrganization; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; |
|
|
|
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundquery.PdfPath; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQuery; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryDetailsVo; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryFeign; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQueryDetailsVo; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQueryFeign; |
|
|
|
import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQueryMaterial; |
|
|
|
import com.yxt.common.base.config.component.DocPdfComponent; |
|
|
|
import com.yxt.common.base.config.component.FileUploadComponent; |
|
|
|
import com.yxt.common.base.utils.TransformMoney; |
|
|
|
import com.yxt.common.base.utils.WordConvertUtils; |
|
|
|
import com.yxt.common.base.utils.WordUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
@ -57,16 +69,14 @@ import com.yxt.common.base.utils.PagerUtil; |
|
|
|
import com.yxt.common.core.query.PagerQuery; |
|
|
|
import com.yxt.common.core.result.ResultBean; |
|
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretware.BaseManufacturerRetware; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretware.BaseManufacturerRetwareQuery; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretware.BaseManufacturerRetwareVo; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretware.BaseManufacturerRetwareDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basemanufacturerretware.BaseManufacturerRetwareDto; |
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.io.File; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
@ -101,6 +111,15 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf |
|
|
|
@Autowired |
|
|
|
private BasePurchaseSystemService basePurchaseSystemService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ScmApplyInboundQueryFeign scmApplyInboundQueryFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ScmApplyInboundVehQueryFeign scmApplyInboundVehQueryFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private DocPdfComponent docPdfComponent; |
|
|
|
|
|
|
|
private QueryWrapper<BaseManufacturerRetware> createQueryWrapper(BaseManufacturerRetwareQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
|
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
|
|
|
@ -242,53 +261,53 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf |
|
|
|
public ResultBean confirm(BaseManufacturerRetwareVehDto dto) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
String manApprovalType = dto.getManApprovalType(); |
|
|
|
if (StringUtils.isBlank(manApprovalType)){ |
|
|
|
if (StringUtils.isBlank(manApprovalType)) { |
|
|
|
return rb.setMsg("请选择审批结果"); |
|
|
|
} |
|
|
|
String refundMoney = dto.getRefundMoney(); |
|
|
|
if (StringUtils.isBlank(refundMoney)){ |
|
|
|
if (StringUtils.isBlank(refundMoney)) { |
|
|
|
return rb.setMsg("请填写退款金额"); |
|
|
|
} |
|
|
|
String vinNo = dto.getVinNo(); |
|
|
|
String mainSid = dto.getMainSid(); |
|
|
|
BaseManufacturerRetware baseManufacturerRetware = fetchBySid(mainSid); |
|
|
|
BaseVehicle baseVehicle = baseVehicleService.selectByVinNoAndOrgSid(vinNo,baseManufacturerRetware.getCreateOrgSid()); |
|
|
|
BaseVehicle baseVehicle = baseVehicleService.selectByVinNoAndOrgSid(vinNo, baseManufacturerRetware.getCreateOrgSid()); |
|
|
|
String s = baseManufacturerRetwareVehService.fetchByVinNo(vinNo); |
|
|
|
if (StringUtils.isNotBlank(s)){ |
|
|
|
if (StringUtils.isNotBlank(s)) { |
|
|
|
return rb.setMsg("该车辆已确认"); |
|
|
|
} |
|
|
|
if (manApprovalType.equals("成功")){ |
|
|
|
if (manApprovalType.equals("成功")) { |
|
|
|
baseVehicle.setVehicleState(VehicleState.StockEnum.RETURN_STOCK.getCode()); |
|
|
|
baseVehicle.setVehicleStateValue(VehicleState.StockEnum.RETURN_STOCK.getRemarks()); |
|
|
|
baseVehicle.setReturnDate(DateUtil.parseDate(DateUtil.today())); |
|
|
|
baseVehicleService.updateVeh(baseVehicle); |
|
|
|
baseManufacturerRetwareVehService.updateByVinNo(manApprovalType,refundMoney,vinNo,dto.getManDeduRemarks()); |
|
|
|
}else if (manApprovalType.equals("失败")){ |
|
|
|
baseManufacturerRetwareVehService.updateByVinNo(manApprovalType, refundMoney, vinNo, dto.getManDeduRemarks()); |
|
|
|
} else if (manApprovalType.equals("失败")) { |
|
|
|
baseVehicle.setVehicleState(VehicleState.StockEnum.STOCK.getCode()); |
|
|
|
baseVehicle.setVehicleStateValue(VehicleState.StockEnum.STOCK.getRemarks()); |
|
|
|
baseVehicleService.updateVeh(baseVehicle); |
|
|
|
baseManufacturerRetwareVehService.updateByVinNo(manApprovalType,refundMoney,vinNo,dto.getManDeduRemarks()); |
|
|
|
baseManufacturerRetwareVehService.updateByVinNo(manApprovalType, refundMoney, vinNo, dto.getManDeduRemarks()); |
|
|
|
} |
|
|
|
int i = baseManufacturerRetwareVehService.fetchUNConfirmCountByMainSid(mainSid); |
|
|
|
if (i == 0){ |
|
|
|
if (i == 0) { |
|
|
|
baseMapper.updateStateBySid(mainSid); |
|
|
|
} |
|
|
|
try{ |
|
|
|
STKInStockPushPurmrb pm=createPush(baseVehicle); |
|
|
|
try { |
|
|
|
STKInStockPushPurmrb pm = createPush(baseVehicle); |
|
|
|
finKingDeeFeign.draftStkInStockPushPurMrb(pm); |
|
|
|
}catch (Exception e){ |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
return rb.success().setMsg("修改成功"); |
|
|
|
} |
|
|
|
|
|
|
|
private STKInStockPushPurmrb createPush(BaseVehicle baseVehicle) { |
|
|
|
STKInStockPushPurmrb push=new STKInStockPushPurmrb(); |
|
|
|
STKInStockPushPurmrb push = new STKInStockPushPurmrb(); |
|
|
|
push.setFMaterialId(baseVehicle.getVinNo().substring(baseVehicle.getVinNo().length() - 8)); |
|
|
|
BasePurchaseSystemDetailsVo data = basePurchaseSystemService.fetchDetailsByDeptSid(baseVehicle.getPurchaseSystemSid()).getData(); |
|
|
|
if (data != null){ |
|
|
|
if (data != null) { |
|
|
|
push.setUseOrdSid(data.getOrgCode()); |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(baseVehicle.getUseOrgSid()).getData(); |
|
|
|
push.setUseOrdSid(sysOrganizationVo.getOrgCode()); |
|
|
|
} |
|
|
@ -334,4 +353,148 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf |
|
|
|
WordUtils.doc2pdf(wordPath, targetPath, pdfName); |
|
|
|
return rb.success().setData("template" + "/" + dateStr + "/" + pdfName); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 打印退料单 |
|
|
|
* |
|
|
|
* @param cgtkdSid |
|
|
|
* @param printerType |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public ResultBean<String> withdrawalPdf(String cgtkdSid, String printerType) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
WithdrawalPdfVo pdfVo = new WithdrawalPdfVo(); |
|
|
|
String pdfPath = ""; |
|
|
|
BaseManufacturerRetware baseManufacturerRetware = fetchBySid(cgtkdSid); |
|
|
|
pdfVo.setExitDate(baseManufacturerRetware.getAppluDate()); |
|
|
|
pdfVo.setBillNo(baseManufacturerRetware.getApplyNo()); |
|
|
|
pdfVo.setMakeName(baseManufacturerRetware.getApplyName() + baseManufacturerRetware.getAppluDate()); |
|
|
|
//查询相关车架号
|
|
|
|
List<BaseManufacturerRetwareVehDetailsVo> vehVos = baseManufacturerRetwareVehService.fetchByMainSid(cgtkdSid); |
|
|
|
vehVos.removeAll(Collections.singleton(null)); |
|
|
|
List<String> vinNoList = new ArrayList<>(); |
|
|
|
if (!vehVos.isEmpty()) { |
|
|
|
for (BaseManufacturerRetwareVehDetailsVo vehVo : vehVos) { |
|
|
|
String vinNo = vehVo.getVinNo(); |
|
|
|
vinNoList.add(vinNo); |
|
|
|
} |
|
|
|
} |
|
|
|
//初始化总数量为1
|
|
|
|
int num = 0; |
|
|
|
int id = 0; |
|
|
|
BigDecimal tPrice = new BigDecimal(0); |
|
|
|
String cgrkdSid = ""; |
|
|
|
List<BaseApplyInboundVehQueryMaterial> baseApplyInboundVehQueryMaterials = new ArrayList<>(); |
|
|
|
for (String vinNo : vinNoList) { |
|
|
|
ScmApplyInboundVehQueryDetailsVo data = scmApplyInboundVehQueryFeign.fetchDetailsByVinNo(vinNo).getData(); |
|
|
|
if (null != data) { |
|
|
|
cgrkdSid = data.getMainSid(); |
|
|
|
BaseApplyInboundVehQueryMaterial baseApplyInboundVehQueryMaterial = new BaseApplyInboundVehQueryMaterial(); |
|
|
|
num = num + 1; |
|
|
|
id = id + 1; |
|
|
|
BigDecimal settleMoney = new BigDecimal(data.getSettleMoney()); |
|
|
|
tPrice = tPrice.add(settleMoney); |
|
|
|
//主车物料编码
|
|
|
|
baseApplyInboundVehQueryMaterial.setVinNo(data.getVinNo().substring(data.getVinNo().length() - 8)); |
|
|
|
baseApplyInboundVehQueryMaterial.setId(String.valueOf(id)); |
|
|
|
baseApplyInboundVehQueryMaterial.setMgroupName(data.getMgroupName()); |
|
|
|
baseApplyInboundVehQueryMaterial.setVehicleType(data.getVehicleTypeValue()); |
|
|
|
baseApplyInboundVehQueryMaterial.setIunit("辆"); |
|
|
|
baseApplyInboundVehQueryMaterial.setNum("1"); |
|
|
|
baseApplyInboundVehQueryMaterial.setSettleMoney(data.getSettleMoney()); |
|
|
|
baseApplyInboundVehQueryMaterial.setLocalName(data.getLocalName()); |
|
|
|
baseApplyInboundVehQueryMaterials.add(baseApplyInboundVehQueryMaterial); |
|
|
|
} |
|
|
|
} |
|
|
|
pdfVo.setZs(String.valueOf(num)); |
|
|
|
pdfVo.setBaseApplyInboundVehQueryMaterials(baseApplyInboundVehQueryMaterials); |
|
|
|
pdfVo.setZsettleMoney(tPrice.toString()); |
|
|
|
String tPriceDX = TransformMoney.transform(tPrice.toString()); |
|
|
|
pdfVo.setTPriceDX(tPriceDX); |
|
|
|
//获取车辆入库单查询
|
|
|
|
ScmApplyInboundQueryDetailsVo scmApplyInboundQuery = scmApplyInboundQueryFeign.fetchDetailsBySid(cgrkdSid).getData(); |
|
|
|
if (null != scmApplyInboundQuery) { |
|
|
|
pdfVo.setPriceDate(scmApplyInboundQuery.getOrgPriceDate()); |
|
|
|
pdfVo.setManPurOrderType(scmApplyInboundQuery.getManPurOrderTypeValue()); |
|
|
|
pdfVo.setOrgDeptName(scmApplyInboundQuery.getOrgDeptName()); |
|
|
|
pdfVo.setManName(scmApplyInboundQuery.getManName()); |
|
|
|
} |
|
|
|
String filePath = "/template/"; |
|
|
|
if (printerType.equals("针孔式打印机")) { |
|
|
|
String cgtkzsdy = cgtkzsdy(pdfVo); |
|
|
|
pdfPath = filePath + cgtkzsdy; |
|
|
|
} else if (printerType.equals("激光打印机")) { |
|
|
|
String cgtkjgdy = cgtkjgdy(pdfVo); |
|
|
|
pdfPath = filePath + cgtkjgdy; |
|
|
|
} |
|
|
|
return rb.success().setData(pdfPath); |
|
|
|
} |
|
|
|
|
|
|
|
public String cgtkjgdy(WithdrawalPdfVo pdfVo) { |
|
|
|
Map<String, Object> dataMap = new HashMap<String, Object>(); |
|
|
|
// dataMap.put("priceDate", pdfVo.getPriceDate());
|
|
|
|
dataMap.put("exitDate", pdfVo.getExitDate()); |
|
|
|
dataMap.put("manPurOrderType", pdfVo.getManPurOrderType()); |
|
|
|
dataMap.put("billNo", pdfVo.getBillNo()); |
|
|
|
dataMap.put("orgDeptName", pdfVo.getOrgDeptName()); |
|
|
|
dataMap.put("manName", pdfVo.getManName()); |
|
|
|
dataMap.put("wlList", pdfVo.getBaseApplyInboundVehQueryMaterials()); |
|
|
|
dataMap.put("zs", pdfVo.getZs()); |
|
|
|
dataMap.put("zsettleMoney", pdfVo.getZsettleMoney()); |
|
|
|
dataMap.put("tPriceDX", pdfVo.getTPriceDX()); |
|
|
|
dataMap.put("makeName", pdfVo.getMakeName()); |
|
|
|
dataMap.put("confirmName", ""); |
|
|
|
//获取模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/tkjg.ftl"); |
|
|
|
//生成word文件名
|
|
|
|
String targetPath = docPdfComponent.getUploadTemplateUrl(); |
|
|
|
String dateStr = DateUtil.format(new Date(), "yyyyMMdd"); |
|
|
|
long seconds = System.currentTimeMillis(); |
|
|
|
String typeName = dateStr + seconds + ".doc"; |
|
|
|
File file = new File(targetPath + "tkjg" + seconds + ".ftl"); |
|
|
|
File dir = new File(targetPath); |
|
|
|
WordConvertUtils.inputStreamToFile(inputStream, file); |
|
|
|
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir); |
|
|
|
//新生成的word路径
|
|
|
|
String wordPath = targetPath + typeName; |
|
|
|
//生成出门证文件名
|
|
|
|
String pdfName = "退料单" + dateStr + seconds + ".pdf"; |
|
|
|
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName); |
|
|
|
String path = pdfName; |
|
|
|
return path; |
|
|
|
} |
|
|
|
|
|
|
|
public String cgtkzsdy(WithdrawalPdfVo pdfVo) { |
|
|
|
Map<String, Object> dataMap = new HashMap<String, Object>(); |
|
|
|
// dataMap.put("priceDate", pdfVo.getPriceDate());
|
|
|
|
dataMap.put("exitDate", pdfVo.getExitDate()); |
|
|
|
dataMap.put("manPurOrderType", pdfVo.getManPurOrderType()); |
|
|
|
dataMap.put("billNo", pdfVo.getBillNo()); |
|
|
|
dataMap.put("orgDeptName", pdfVo.getOrgDeptName()); |
|
|
|
dataMap.put("manName", pdfVo.getManName()); |
|
|
|
dataMap.put("wlList", pdfVo.getBaseApplyInboundVehQueryMaterials()); |
|
|
|
dataMap.put("zs", pdfVo.getZs()); |
|
|
|
dataMap.put("zsettleMoney", pdfVo.getZsettleMoney()); |
|
|
|
dataMap.put("tPriceDX", pdfVo.getTPriceDX()); |
|
|
|
dataMap.put("makeName", pdfVo.getMakeName()); |
|
|
|
dataMap.put("confirmName", ""); |
|
|
|
//获取模板
|
|
|
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/tkzk.ftl"); |
|
|
|
//生成word文件名
|
|
|
|
String targetPath = docPdfComponent.getUploadTemplateUrl(); |
|
|
|
String dateStr = DateUtil.format(new Date(), "yyyyMMdd"); |
|
|
|
long seconds = System.currentTimeMillis(); |
|
|
|
String typeName = dateStr + seconds + ".doc"; |
|
|
|
File file = new File(targetPath + "tkzs" + seconds + ".ftl"); |
|
|
|
File dir = new File(targetPath); |
|
|
|
WordConvertUtils.inputStreamToFile(inputStream, file); |
|
|
|
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir); |
|
|
|
//新生成的word路径
|
|
|
|
String wordPath = targetPath + typeName; |
|
|
|
//生成出门证文件名
|
|
|
|
String pdfName = "退料单" + dateStr + seconds + ".pdf"; |
|
|
|
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName); |
|
|
|
String path = pdfName; |
|
|
|
return path; |
|
|
|
} |
|
|
|
} |