| fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FoodPriceService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/igds/service/PledgeContractService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/igds/timer/JobWarnService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/igds/timer/SystemScheduled.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-view/src/main/java/com/fzzy/igds/PledgeContract-Detail.view.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-view/src/main/java/com/fzzy/igds/PledgeContractPR.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FoodPriceService.java
@@ -44,6 +44,26 @@ } /** * æ ¹æ®é¶è¡ååç§ï¼æ¥è¯¢åä»·ä¿¡æ¯ * @param bankId * @param foodVariety * @return */ public FoodPrice getDataByBankAndFood(String bankId, String foodVariety) { SysUser user = ContextUtil.getLoginUser(); QueryWrapper<FoodPrice> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("bank_id", bankId); queryWrapper.eq("food_variety", foodVariety); List<FoodPrice> foodPrices = foodPriceMapper.selectList(queryWrapper); if(null == foodPrices){ return null; } return foodPrices.get(0); } /** * æ´æ°æä¿åä¿¡æ¯ * @param data * @return fzzy-igdss-core/src/main/java/com/fzzy/igds/service/PledgeContractService.java
@@ -4,6 +4,7 @@ import com.fzzy.igds.constant.Constant; import com.fzzy.igds.data.BaseResp; import com.fzzy.igds.data.IgdsBaseParam; import com.fzzy.igds.domain.InoutNoticeIn; import com.fzzy.igds.domain.PledgeContract; import com.fzzy.igds.mapper.PledgeContractMapper; import com.fzzy.igds.utils.ContextUtil; @@ -50,6 +51,18 @@ queryWrapper.orderByDesc("update_time"); return pledgeContractMapper.selectList(queryWrapper); } /** * æ ¹æ®æ¡ä»¶æ¥è¯¢ * @param id * @return */ public PledgeContract getOne(String id) { QueryWrapper<PledgeContract> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", id); return pledgeContractMapper.selectOne(queryWrapper); } @@ -104,8 +117,8 @@ queryWrapper.like("status", Constant.YN_N); //è´¨æ¼æé´ queryWrapper.ge("pledge_start", curTime); queryWrapper.le("pledge_end", curTime); queryWrapper.le("pledge_start", curTime); queryWrapper.ge("pledge_end", curTime); queryWrapper.orderByDesc("update_time"); fzzy-igdss-core/src/main/java/com/fzzy/igds/timer/JobWarnService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,134 @@ package com.fzzy.igds.timer; import com.fzzy.igds.constant.Constant; import com.fzzy.igds.data.BaseResp; import com.fzzy.igds.domain.Depot; import com.fzzy.igds.domain.FoodPrice; import com.fzzy.igds.domain.PledgeContract; import com.fzzy.igds.service.DepotService; import com.fzzy.igds.service.FoodPriceService; import com.fzzy.igds.service.PledgeContractService; import com.fzzy.work.data.WorkBizType; import com.fzzy.work.domain.WorkOrderConf; import com.fzzy.work.service.BizWorkService; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * @Description è¦åä¿¡æ¯å®æ¶ç»è®¡ï¼è¿æ¬¾æé * @Author CZT * @Date 2026/1/23 9:14 */ @Slf4j @Service public class JobWarnService { @Resource private PledgeContractService contractService; @Resource private DepotService depotService; @Resource private FoodPriceService foodPriceService; @Resource private BizWorkService workService; /** * æ¯å¤©ä¸¤ç¹æ§è¡ï¼è¿æ¬¾æé */ // @Scheduled(cron = "0 0 2 * * ?") @Scheduled(cron = "0 7 19 * * ?") public void timer() { doExe(); } /** * å¼å§è´¨æ¼ååæ ¸ç® */ public void doExe() { List<PledgeContract> contractList = contractService.getContractByPledge(new Date()); if(null == contractList || contractList.isEmpty()){ log.error("-----å½åæ²¡ææææçè´¨æ¼ååï¼ä¸æ§è¡æéæ ¸ç®-----"); return; } Depot depot; FoodPrice foodPrice; WorkOrderConf conf; double sumMoney = 0.0; double per = 0.0; double backMoney = 0.0; for (PledgeContract pledgeContract : contractList) { log.info("-----å¼å§å¤çè´¨æ¼ååï¼{}-----", pledgeContract.getContractName()); //计ç®å¾ è¿æ¬¾éé¢ backMoney = pledgeContract.getContractAmount() - pledgeContract.getRepaidAmount(); if(backMoney <= 0.0){ //è¥å¾ è¿éé¢ä¸º0ï¼åä¸ç»è®¡æ¤åå log.error("-----å½ååå={}没æå¾ è¿éé¢ä¸º{}ï¼ä¸æ§è¡æéæ ¸ç®-----", pledgeContract.getContractName(), backMoney); continue; } if(StringUtils.isBlank(pledgeContract.getPledgeBank())){ //è¥è´¨æ¼é¶è¡æªç©ºï¼åè·³è¿å½ååå log.error("-----å½ååå={}没æè®¾ç½®è´¨æ¼é¶è¡ï¼ä¸æ§è¡æéæ ¸ç®-----", pledgeContract.getContractName()); continue; } if(StringUtils.isBlank(pledgeContract.getDepotIds())){ //è¥è´¨æ¼ä»åºä¸ºç©ºï¼åè·³è¿å½ååå log.error("-----å½ååå={}没æè®¾ç½®è´¨æ¼ä»åºï¼ä¸æ§è¡æéæ ¸ç®-----", pledgeContract.getContractName()); continue; } String[] depotIds = pledgeContract.getDepotIds().split(","); if(depotIds.length < 1){ //è¥è´¨æ¼ä»åºä¸ºç©ºï¼åè·³è¿å½ååå log.error("-----å½ååå={}没æè®¾ç½®è´¨æ¼ä»åºï¼ä¸æ§è¡æéæ ¸ç®-----", pledgeContract.getContractName()); continue; } sumMoney = 0.0; for (String depotId : depotIds) { //æ¥è¯¢ä»åºä¿¡æ¯ depot = depotService.getCacheDepot(pledgeContract.getCompanyId(), depotId); if(null == depot){ log.error("-----å½ååå={}ä¸ä»åº={}ä¸åå¨ï¼ä¸ç»è®¡æ¤ä»åº-----", pledgeContract.getContractName(), depotId); continue; } if(null == depot.getStorageReal()){ depot.setStorageReal(0.0); } foodPrice = foodPriceService.getDataByBankAndFood(pledgeContract.getPledgeBank(), depot.getFoodVariety()); if(null == foodPrice || null == foodPrice.getPrice()){ log.error("-----å½ååå={}ä¸ä»åº={}对åºçåç§={}æªé ç½®ä»·æ ¼ï¼ä¸ç»è®¡æ¤ä»åº-----", pledgeContract.getContractName(),depot.getName(), depot.getFoodVariety()); continue; } sumMoney += depot.getStorageReal() * foodPrice.getPrice(); } per = sumMoney/backMoney; if(per <= 1.2){ //æ§è¡æµç¨ conf = workService.getConfByDeptId(pledgeContract.getPledgeDept(), WorkBizType.TYPE_50); //æµç¨ä¸å¯ç¨ if (null == conf || Constant.YN_N.equals(conf.getValTag())) { log.error("-----å½ååå={}è´¨æ¼åºåº={}æªé ç½®è¿æ¬¾æéå®¡æ¹æµç¨ï¼æ æ³çæå·¥åæé-----", pledgeContract.getContractName(),pledgeContract.getPledgeDept()); continue; } BaseResp resp = workService.startByBackMoney(pledgeContract, conf); log.info("---------å½ååå={}å¯å¨è¿æ¬¾æé工念ç¨------{}",pledgeContract.getContractName(), resp); } } } } fzzy-igdss-core/src/main/java/com/fzzy/igds/timer/SystemScheduled.java
@@ -70,7 +70,7 @@ //设置å é¤åæ° SysOperLog deleteOperLog = new SysOperLog(); //设置å 餿ªæ¢æ¶é´ String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtil.getNewByDay(new Date(), -30)); String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtil.getNewByDay(new Date(), -90)); Map<String, Object> params = new HashMap<>(); params.put("endTime", endTime); deleteOperLog.setParams(params); fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java
@@ -11,6 +11,7 @@ TYPE_20("20", "åºåºéç¥åæµç¨"), TYPE_30("30", "AIäºä»¶"), TYPE_40("40", "é¢è¦/è¦å"), TYPE_50("50", "è¿æ¬¾æé"), TYPE_99("99", "å ¶ä»"); private String code; fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
@@ -4,6 +4,7 @@ import com.fzzy.igds.data.BaseResp; import com.fzzy.igds.domain.InoutNoticeIn; import com.fzzy.igds.domain.InoutNoticeOut; import com.fzzy.igds.domain.PledgeContract; import com.fzzy.igds.utils.ContextUtil; import com.fzzy.work.data.WorkStatus; import com.fzzy.work.data.WorkBizType; @@ -165,6 +166,52 @@ } /** * * æ ¹æ®åºå ¥åºéç¥åå¯å¨å®¡æ¹å·¥å * @param data åºå ¥åºå·¥åæ°æ® * @return ååºç»æ */ public BaseResp startByBackMoney(PledgeContract data, WorkOrderConf conf) { if (null == conf) conf = confService.getByDeptId(data.getPledgeDept(), WorkBizType.TYPE_10); if (Constant.YN_N.equals(conf.getValTag())) return BaseResp.error("æµç¨æªå¯ç¨"); //å建工å WorkOrder work = new WorkOrder(); work.setId(ContextUtil.generateOrderId("WARN")); work.setBizType(WorkBizType.TYPE_50.getCode()); work.setBusinessId(data.getId()); work.setBankId(data.getPledgeBank()); work.setBusinessUrl("com.fzzy.igds.PledgeContract-Detail.d"); work.setCreateTime(new Date()); work.setDeptId(data.getPledgeDept()); work.setCompanyId(data.getCompanyId()); work.setUpdateTime(new Date()); work.setTitle("è´¨æ¼ååè¿æ¬¾æé"); work.setConfId(conf.getId()); work.setStatus(WorkStatus.STATUS_30.getCode()); work.setReceiveTime(new Date()); String nextNode = this.getNextNode(WorkNode.NODE_START.getCode(), conf).getCode(); work.setNode(nextNode); orderService.addData(work); //æ·»å è®°å½ WorkOrderProcess process = new WorkOrderProcess(); process.setId(ContextUtil.UUID()); process.setAction("æäº¤"); process.setCreateTime(new Date()); process.setOrderId(work.getId()); process.setAssigneeName(work.getCreateBy()); process.setAssigneeId(work.getCreateById()); process.setNode(WorkNode.NODE_START.getCode()); orderProcessService.addData(process, false); return BaseResp.success(); } /** * è·åå¾ å¤çå·¥å * @return å¤çç»æ */ fzzy-igdss-view/src/main/java/com/fzzy/igds/PledgeContract-Detail.view.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,142 @@ <?xml version="1.0" encoding="UTF-8"?> <ViewConfig> <Arguments/> <Context/> <Model/> <View layout="padding:10"> <Property name="packages">font-awesome,css-common</Property> <DataSet id="dsMain"> <Property name="dataType">dtMain</Property> <Property name="dataProvider">pledgeContractPR#getOne</Property> <Property name="loadMode">lazy</Property> <Property name="parameter">${request.getParameter('businessId')}</Property> <Property name="readOnly">true</Property> </DataSet> <Container> <Property name="className">c-data</Property> <AutoForm layoutConstraint="top "> <Property name="dataSet">dsMain</Property> <Property name="showHint">false</Property> <Property name="cols">210,*,210</Property> <Control/> <AutoFormElement> <Property name="name">name</Property> <Property name="property">name</Property> <Property name="editorType">Label</Property> <Property name="showLabel">false</Property> <Property name="showHint">false</Property> <Property name="className">f-title</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">id</Property> <Property name="property">id</Property> <Property name="editorType">Label</Property> <Property name="showHint">false</Property> <Property name="labelAlign">right</Property> <Property name="showLabel">false</Property> <Editor/> </AutoFormElement> </AutoForm> <AutoForm> <Property name="dataSet">dsMain</Property> <Property name="cols">*,*,*</Property> <Property name="labelAlign">right</Property> <Property name="labelSeparator">ï¼</Property> <Property name="labelWidth">120</Property> <AutoFormElement layoutConstraint="colSpan:2"> <Property name="name">name</Property> <Property name="property">name</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">pledgeBank</Property> <Property name="property">pledgeBank</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">pledgeCompany</Property> <Property name="property">pledgeCompany</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">pledgeDept</Property> <Property name="property">pledgeDept</Property> <Property name="trigger">dsDeptDropDown</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">depotNames</Property> <Property name="property">depotNames</Property> <Property name="trigger">CDDDept</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">signTime</Property> <Property name="property">signTime</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">pledgeStart</Property> <Property name="property">pledgeStart</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">pledgeEnd</Property> <Property name="property">pledgeEnd</Property> <Editor/> </AutoFormElement> <AutoFormElement layoutConstraint="colSpan:2"> <Property name="name">contractName</Property> <Property name="property">contractName</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">contractNo</Property> <Property name="property">contractNo</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">contractAmount</Property> <Property name="property">contractAmount</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">repaidAmount</Property> <Property name="property">repaidAmount</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">status</Property> <Property name="property">status</Property> <Editor/> </AutoFormElement> <AutoFormElement layoutConstraint="colSpan:3"> <Property name="name">remark</Property> <Property name="property">remark</Property> <Property name="editorType">TextArea</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">createBy</Property> <Property name="property">createBy</Property> <Property name="readOnly">true</Property> <Editor/> </AutoFormElement> <AutoFormElement> <Property name="name">createTime</Property> <Property name="property">createTime</Property> <Property name="readOnly">true</Property> <Editor/> </AutoFormElement> <HtmlContainer layoutConstraint="colSpan:3"> <Property name="content">1.å½ååæ®ä» ä½ä¸ºå½åç³»ç»ä¸å¡ä¿¡æ¯ç»è®°ä½¿ç¨ï¼ä¸ä½ä¸ºå®é åæ¹å约约æã<br>
 2.å½ååæ®é»è®¤æ¯æä¸º1个å约对åº1个åºåºï¼å¦æåæ¶å¯¹åºå¤ä¸ªåºåºè¯·æ°æ®ç»è®°ã<br>
 3.è´¨æ¼ç¶æå¦æ=è§£æ¼ï¼ç³»ç»å¯¹åºå¬åæéçåè½èªå¨å®æã<br></Property> <Property name="exClassName">h-tip</Property> <Property name="contentOverflow">hidden</Property> </HtmlContainer> </AutoForm> </Container> </View> </ViewConfig> fzzy-igdss-view/src/main/java/com/fzzy/igds/PledgeContractPR.java
@@ -7,6 +7,7 @@ import com.fzzy.igds.constant.Constant; import com.fzzy.igds.data.BaseResp; import com.fzzy.igds.data.IgdsBaseParam; import com.fzzy.igds.domain.InoutNoticeIn; import com.fzzy.igds.domain.PledgeContract; import com.fzzy.igds.service.PledgeContractService; import com.fzzy.igds.utils.ContextUtil; @@ -53,6 +54,17 @@ } /** * pledgeContractPR#getOne * * @param businessId * @return */ @DataProvider public PledgeContract getOne(String businessId) { return pledgeContractService.getOne(businessId); } /** * ä¿å/æ´æ° * * @param pledgeContract