From 2757ea108a2e870a72978f9957c8454af605176c Mon Sep 17 00:00:00 2001 From: Fancy <Fancy.fx@outlook.com> Date: 星期一, 26 八月 2024 09:05:16 +0800 Subject: [PATCH] order status --- pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java | 134 +++++++++++++++++++++++++++++++++----------- 1 files changed, 100 insertions(+), 34 deletions(-) diff --git a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java index 24b0909..f058cf1 100644 --- a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java +++ b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/order/OrderSv.java @@ -1,25 +1,22 @@ package com.dy.pmsProduct.order; -import cn.hutool.core.codec.Base64; +import com.dy.common.webFilter.UserTokenContext; import com.dy.common.webUtil.QueryResultVo; -import com.dy.pmsGlobal.daoOth.OthFileMapper; import com.dy.pmsGlobal.daoPr.*; -import com.dy.pmsGlobal.dyFile.FileOperate; -import com.dy.pmsGlobal.pojoPlt.PltProduct; +import com.dy.pmsGlobal.pojoBa.BaUser; import com.dy.pmsGlobal.pojoPr.*; -import com.dy.pmsGlobal.util.QrCodeUtil; import com.dy.pmsGlobal.util.UserUtil; -import com.dy.pmsProduct.process.QueryVo; -import com.google.zxing.WriterException; +import com.dy.pmsProduct.taskPlan.PlanStatusEnum; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; @@ -29,10 +26,7 @@ private PrOrderMapper orderDao; private PrOrderItemMapper orderItemDao; private UserUtil userUtil; - private FileOperate fileOperate; - private OthFileMapper othFileMapper; - @Value("${dy.webFile.fmUrl}") - private String fmUrl; + @Autowired public void setOrderDao(PrOrderMapper orderDao) { this.orderDao = orderDao; @@ -47,43 +41,42 @@ public void setUserUtil(UserUtil userUtil) { this.userUtil = userUtil; } - - @Autowired - public void setFileOperate(FileOperate fileOperate) { - this.fileOperate = fileOperate; - } - - @Autowired - public void setOthFileMapper(OthFileMapper othFileMapper) { - this.othFileMapper = othFileMapper; - } - @Transactional public int save(PrOrder p) { + p.id = null; //鍒ゆ柇浜у搧涓嶈兘閲嶅悕 if (orderDao.exists(p.name, p.id)) { throw new RuntimeException("璁㈠崟鍚嶇О涓嶈兘閲嶅"); + } + p.setDeleted(false); + BaUser loginUser = userUtil.getUser(UserTokenContext.get()); + if (loginUser != null) { + p.creator = loginUser.id; } int count = orderDao.insertSelective(p); saveOrderItems(p); return count; } + @Transactional public int update(PrOrder p) { if (orderDao.exists(p.name, p.id)) { throw new RuntimeException("璁㈠崟鍚嶇О涓嶈兘閲嶅"); } int count = orderDao.updateByPrimaryKeySelective(p); - saveOrderItems(p); + if (count > 0) { + saveOrderItems(p); + } return count; } + private void saveOrderItems(PrOrder p) { - p.items.forEach(param->{ - param.orderId=p.id; - if(param.id !=null){ + p.items.forEach(param -> { + param.orderId = p.id; + if (param.id != null) { orderItemDao.updateByPrimaryKeySelective(param); - }else{ - param.deleted=false; + } else { + param.deleted = false; orderItemDao.insert(param); } }); @@ -91,6 +84,7 @@ /** * 閫昏緫鍒犻櫎瀹炰綋 + * * @param id 瀹炰綋ID * @return 褰卞搷璁板綍鏁伴噺 */ @@ -100,7 +94,8 @@ } public PrOrder selectById(String proId) { - PrOrder pro=orderDao.selectByPrimaryKey(Long.valueOf(proId)); + PrOrder pro = orderDao.selectByPrimaryKey(Long.valueOf(proId)); + changeRate(pro); return pro; } @@ -117,13 +112,84 @@ //璁$畻鍒嗛〉绛変俊鎭� rsVo.calculateAndSet(itemTotal, params); + List<PrOrder> orderList = orderDao.selectSome(params); + for (PrOrder prOrder : orderList) { + changeRate(prOrder); + } //鏌ヨ绗﹀悎鏉′欢鐨勮褰� - rsVo.obj = orderDao.selectSome(params); + rsVo.obj = orderList; return rsVo; + } + + private void changeRate(PrOrder prOrder) { + List<PrOrderItem> items = prOrder.items; + for (int i = 1; i < items.size(); i++) { + for (int j = i - 1; j >= 0; j--) { + //鎷跨潃i渚濇璺熶笂涓�涓瘮杈�,濡傛灉浜у搧鐩稿悓,鍒欎笂涓�涓褰昪omplete_number - number 濡傛灉 > 0 鍒嗙粰i ,濡傛灉 < 0 鍒欏皢 complete_number 缃负0 + if (items.get(j).getProId().intValue() == items.get(i).getProId().intValue()) { + int remainNumber = items.get(j).getCompleteNumber() - items.get(j).getNumber(); + if (remainNumber > 0) { + items.get(j).setCompleteNumber(items.get(j).getNumber()); + items.get(j).setCompleteRate("100.00%"); + items.get(i).setCompleteNumber(remainNumber); + BigDecimal remainBig = new BigDecimal(remainNumber * 100); + BigDecimal iNumberBig = new BigDecimal(items.get(i).getNumber()); + BigDecimal result = remainBig.divide(iNumberBig, 2, RoundingMode.HALF_UP); + items.get(i).setCompleteRate(result.toString() +"%"); + }else{ + items.get(i).setCompleteNumber(0); + items.get(i).setCompleteRate("0.00%"); + } + break; + } + } + } } public List<PrOrder> selectAll(QueryVo queryVo) { Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); - return orderDao.selectAll(params); + List<PrOrder> orderList = orderDao.selectAll(params); + for (PrOrder prOrder : orderList) { + changeRate(prOrder); + } + return orderList; } + /** + * 鍙洿鏂扮姸鎬�,涓嶆洿鏂板叾浠栧瓧娈� + * @param order + * 鏇存柊鐘舵�� 濡傛灉鏈夊湪鎵ц涓殑浠诲姟,涓嶈鏆傚仠 + * @return + */ + @Transactional + public int updateStatus(PrOrder order) { + if(order.status == OrderStatusEnum.NORMAL.getCode()){ + PrOrder prOrder = orderDao.selectByPrimaryKey(order.id); + prOrder.status = order.status; + //extractedCheck(prOrder); + } + PrOrder param = new PrOrder(); + param.id =order.id; + param.status = order.status; + return orderDao.updateByPrimaryKeySelective(param); + } + /*private void extractedCheck(PrOrder order) { + PrProductionProcess process = processDao.selectByPrimaryKey(plan.processId); + if(process == null || !process.proId.equals(plan.proId)){ + throw new RuntimeException("浜у搧涓庣敓浜ф祦绋嬩笉鍖归厤"); + } + //寮�濮嬫棩鏈熻灏忎簬缁撴潫鏃ユ湡 + if(plan.startDate.compareTo(plan.endDate) > 0){ + throw new RuntimeException("寮�濮嬫棩鏈熶笉鑳藉ぇ浜庣粨鏉熸棩鏈�"); + } + //Fancy add 2024/07/09 濡傛灉鐘舵�佷负鎵ц ,鍒欑粨鏉熸棩鏈熷繀椤诲ぇ浜庣瓑浜庡綋鍓嶆棩鏈� + if(plan.status == PlanStatusEnum.NORMAL.getCode()){ + String endDateStr = plan.getEndDate(); + LocalDate endDate = LocalDate.parse(endDateStr, DateTimeFormatter.ISO_LOCAL_DATE); + LocalDate nextDay = endDate.plusDays(1); + LocalDate today = LocalDate.now(); // 鑾峰彇褰撳墠鏃ユ湡 + if (nextDay.isBefore(today)) { + throw new RuntimeException("鎵ц鐘舵�佺粨鏉熸棩鏈熷繀椤诲ぇ浜庣瓑浜庡綋鍓嶆棩鏈�,璇蜂慨鏀圭粨鏉熸棩鏈�"); + } + } + }*/ } \ No newline at end of file -- Gitblit v1.8.0