| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/8 |
| | |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private WrkDetlService wrkDetlService; |
| | | @Autowired |
| | | private WrkDetlLogService wrkDetlLogService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | |
| | | HttpServletRequest request) { |
| | | auth(appkey, param, request); |
| | | return R.ok().add(openService.pakinOrderComplete(param)); |
| | | } |
| | | |
| | | /** |
| | | * 托盘入库历史记录重报ERP |
| | | */ |
| | | @PostMapping("/order/pakin/erp/report/v1") |
| | | // @AppAuth(memo = "入库历史重报ERP") |
| | | public synchronized R reportPakinHistoryToErp(@RequestBody(required = false) List<String> barcodes) { |
| | | // auth(appkey, barcodes, request); |
| | | if (Cools.isEmpty(barcodes)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | try { |
| | | return openService.reportPakinHistoryToErp(barcodes); |
| | | } catch (Exception e) { |
| | | return R.error(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(Integer.valueOf(param.getTaskNo())); |
| | | String costTime = resolveCostTime(wrkMast, wrkDetls); |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("taskNo", param.getTaskNo()); |
| | | map.put("ioType", wrkMast.getIoType()); |
| | | map.put("costTime", costTime); |
| | | map.put("wrkDetls", wrkDetls); |
| | | |
| | | return R.ok().add(map); |
| | | } |
| | | |
| | | private String resolveCostTime(WrkMast wrkMast, List<WrkDetl> wrkDetls) { |
| | | Date createTime = resolveOrderCreateTime(resolveOrderNo(wrkMast, wrkDetls)); |
| | | if (createTime == null) { |
| | | createTime = resolveTaskCreateTime(wrkMast); |
| | | } |
| | | if (createTime == null) { |
| | | return "0"; |
| | | } |
| | | long minutes = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis() - createTime.getTime()); |
| | | if (minutes < 0L) { |
| | | minutes = 0L; |
| | | } |
| | | return String.valueOf(minutes); |
| | | } |
| | | |
| | | private String resolveOrderNo(WrkMast wrkMast, List<WrkDetl> wrkDetls) { |
| | | if (wrkMast != null && !Cools.isEmpty(wrkMast.getUserNo())) { |
| | | return wrkMast.getUserNo(); |
| | | } |
| | | if (Cools.isEmpty(wrkDetls)) { |
| | | return null; |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | if (wrkDetl != null && !Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | return wrkDetl.getOrderNo(); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private Date resolveOrderCreateTime(String orderNo) { |
| | | if (Cools.isEmpty(orderNo)) { |
| | | return null; |
| | | } |
| | | |
| | | Date historyCreateTime = minDate( |
| | | minCreateTime(wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().eq("user_no", orderNo))), |
| | | minCreateTime(wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>().eq("order_no", orderNo))) |
| | | ); |
| | | if (historyCreateTime != null) { |
| | | return historyCreateTime; |
| | | } |
| | | |
| | | return minDate( |
| | | minCreateTime(wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", orderNo))), |
| | | minCreateTime(wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("order_no", orderNo))) |
| | | ); |
| | | } |
| | | |
| | | private Date minDate(Date first, Date second) { |
| | | if (first == null) { |
| | | return second; |
| | | } |
| | | if (second == null) { |
| | | return first; |
| | | } |
| | | return first.before(second) ? first : second; |
| | | } |
| | | |
| | | private Date resolveTaskCreateTime(WrkMast wrkMast) { |
| | | if (wrkMast == null) { |
| | | return null; |
| | | } |
| | | return firstDate(wrkMast.getAppeTime(), wrkMast.getIoTime(), wrkMast.getModiTime()); |
| | | } |
| | | |
| | | private Date firstDate(Date... dates) { |
| | | if (dates == null || dates.length == 0) { |
| | | return null; |
| | | } |
| | | for (Date date : dates) { |
| | | if (date != null) { |
| | | return date; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private Date minCreateTime(List<?> list) { |
| | | if (Cools.isEmpty(list)) { |
| | | return null; |
| | | } |
| | | Date min = null; |
| | | for (Object item : list) { |
| | | Date createTime = resolveCreateTime(item); |
| | | if (createTime == null) { |
| | | continue; |
| | | } |
| | | if (min == null || createTime.before(min)) { |
| | | min = createTime; |
| | | } |
| | | } |
| | | return min; |
| | | } |
| | | |
| | | private Date resolveCreateTime(Object item) { |
| | | if (item instanceof WrkMast) { |
| | | WrkMast wrkMast = (WrkMast) item; |
| | | return firstDate(wrkMast.getAppeTime(), wrkMast.getIoTime(), wrkMast.getModiTime()); |
| | | } |
| | | if (item instanceof WrkMastLog) { |
| | | WrkMastLog wrkMastLog = (WrkMastLog) item; |
| | | return firstDate(wrkMastLog.getAppeTime(), wrkMastLog.getIoTime(), wrkMastLog.getModiTime()); |
| | | } |
| | | if (item instanceof WrkDetl) { |
| | | WrkDetl wrkDetl = (WrkDetl) item; |
| | | return firstDate(wrkDetl.getAppeTime(), wrkDetl.getIoTime(), wrkDetl.getModiTime()); |
| | | } |
| | | if (item instanceof WrkDetlLog) { |
| | | WrkDetlLog wrkDetlLog = (WrkDetlLog) item; |
| | | return firstDate(wrkDetlLog.getAppeTime(), wrkDetlLog.getIoTime(), wrkDetlLog.getModiTime()); |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | | |