| | |
| | | package zy.cloud.wms.common.service.task; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Arith; |
| | | import com.core.common.Cools; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import zy.cloud.wms.common.model.MatnrDto; |
| | | import zy.cloud.wms.common.model.MatnrDto0; |
| | | import zy.cloud.wms.common.service.erp.ErpScheduler; |
| | | import zy.cloud.wms.common.service.erp.Result; |
| | | import zy.cloud.wms.common.service.erp.entity.GetBasisResult; |
| | | import zy.cloud.wms.manager.entity.DiffVal; |
| | | import zy.cloud.wms.manager.service.DiffValService; |
| | | import zy.cloud.wms.manager.utils.HttpHandler; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by vincent on 2021/11/23 |
| | |
| | | |
| | | @Autowired |
| | | private DiffValService diffValService; |
| | | @Autowired |
| | | private JdbcTemplate jdbcTemplate; |
| | | |
| | | @Transactional |
| | | @Scheduled(cron = "0/10 * * * * ? ") |
| | | @Scheduled(cron = "0 */10 * * * ?") |
| | | public void run() { |
| | | List<MatnrDto0> erpQtyList = null; |
| | | Date now = new Date(); |
| | | try { |
| | | Map<String, Object> param = new HashMap<>(); |
| | | param.put("PUserCode", "N"); |
| | | param.put("KUserCode", "N"); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri("http://123.60.34.127:6220/api") |
| | | .setPath(ErpScheduler.GET_STOCK) |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | if (!Cools.isEmpty(response)) { |
| | | log.info(response); |
| | | Result result = JSON.parseObject(response, Result.class); |
| | | if (result.getCode() != 1) { |
| | | return; |
| | | } |
| | | erpQtyList = JSON.parseArray(result.getData(), MatnrDto0.class); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (Cools.isEmpty(erpQtyList)) { |
| | | log.error("获取EPR库存失败"); |
| | | return; |
| | | } |
| | | List<Map<String, Object>> maps = jdbcTemplate.queryForList("select sum(a.anfme) as count, a.matnr from (\n" + |
| | | "\tselect\n" + |
| | | "\tsum(anfme) as anfme,\n" + |
| | | "\tmatnr\n" + |
| | | "\tfrom asr_loc_detl\n" + |
| | | "\tgroup by matnr\n" + |
| | | "\tunion all\n" + |
| | | "\tselect\n" + |
| | | "\tsum(anfme) as anfme,\n" + |
| | | "\tmatnr\n" + |
| | | "\tfrom man_loc_detl\n" + |
| | | "\tgroup by matnr\n" + |
| | | ") as a\n" + |
| | | "where 1=1\n" + |
| | | "group by a.matnr"); |
| | | List<MatnrDto> stockQtyList = new ArrayList<>(); |
| | | for (Map<String, Object> map : maps) { |
| | | stockQtyList.add(Cools.conver(map, MatnrDto.class)); |
| | | } |
| | | |
| | | for (MatnrDto item : stockQtyList) { |
| | | DiffVal diffVal = diffValService.selectById(item.getMatnr()); |
| | | if (diffVal == null) { |
| | | diffVal = new DiffVal( |
| | | item.getMatnr(), // 物料编号[非空] |
| | | item.getCount(), // WMS库存 |
| | | 0.0D, // ERP库存 |
| | | item.getCount(), // 差异值 |
| | | now, // 更新时间 |
| | | null // 备注 |
| | | ); |
| | | diffValService.insert(diffVal); |
| | | } else { |
| | | diffVal.setStockQty(item.getCount()); |
| | | double erpQty = diffVal.getErpQty(); |
| | | diffVal.setVal(Arith.subtract(2, diffVal.getStockQty(), erpQty)); |
| | | diffVal.setUpdateTime(now); |
| | | diffValService.updateById(diffVal); |
| | | } |
| | | } |
| | | |
| | | for (MatnrDto0 item : erpQtyList) { |
| | | DiffVal diffVal = diffValService.selectById(item.getPUserCode()); |
| | | if (diffVal == null) { |
| | | diffVal = new DiffVal( |
| | | item.getPUserCode(), // 物料编号[非空] |
| | | 0.0D, // WMS库存 |
| | | item.getQty(), // ERP库存 |
| | | -item.getQty(), // 差异值 |
| | | now, // 更新时间 |
| | | null // 备注 |
| | | ); |
| | | diffValService.insert(diffVal); |
| | | } else { |
| | | diffVal.setErpQty(item.getQty()); |
| | | double stockQty = diffVal.getStockQty(); |
| | | diffVal.setVal(Arith.subtract(2, stockQty, diffVal.getErpQty())); |
| | | diffVal.setUpdateTime(now); |
| | | diffValService.updateById(diffVal); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |