luxiaotao1123
2021-04-06 6f39c0f9356f6c7e6fe80c4c99f1419b19be7e5e
Merge branch 'master' of https://gitee.com/luxiaotao1123/wms-cloud into master

 Conflicts:
 src/main/webapp/views/pda/matQuery.html
1个文件已添加
7个文件已修改
194 ■■■■■ 已修改文件
src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/LocDetlService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/custOrder/custOrder.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pda/matQuery.html 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pda/stockCheck.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
@@ -39,6 +39,8 @@
    public static final String GET_BASIS = "cM/basis/getBasis";
    public static final String UPLOAD_BILL = "cM/basis/uploadBill";
    public static final String UPLOAD_STOCK = "cM/basis/uploadStock";
    public static final String OVER_BILL = "cM/basis/OverBill";
    public static final String UPLOAD_CANCEL_RESULT = "cM/basis/cancelOrders";
    @Autowired
    private CustOrderService custOrderService;
@@ -474,4 +476,93 @@
    }
    /**
     * 获取取消订单
     */
    @Scheduled(cron = "0/5 * * * * ? ")
    @Transactional
//    @PostConstruct
    public void getCancelOrdersExecute(){
        try {
            Map<String, Object> json = new HashMap<>();
            String response = new HttpHandler.Builder()
                    .setUri(URI)
                    .setPath(OVER_BILL)
                    .setJson(JSON.toJSONString(json))
                    .build()
                    .doPost();
            if (!Cools.isEmpty(response)) {
//                log.info(response);
                Date now = new Date();
                Result result = JSON.parseObject(response, Result.class);
                if (result.getCode() != 1) {
                    return;
                }
                List<GetOrderResult0> list = JSON.parseArray(result.getData(), GetOrderResult0.class);
                if (!Cools.isEmpty(list)) {
                    boolean complete = true;
                    Set<String> existNumbers = new HashSet<>();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e.getMessage());
        }
    }
    /**
     * 上传销售订单取消结果
     */
    @Scheduled(cron = "0/5 * * * * ? ")
    @Transactional
//    @PostConstruct
    public void uploadCancelOrdersExecute(){
        try {
            List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("status", 3).isNotNull("vch_code"));
            if (Cools.isEmpty(custOrders)) {
                return;
            }
            Map<String, Object> json = new HashMap<>();
            List<UploadCancelResult> list = new ArrayList<>();
            for (CustOrder custOrder : custOrders) {
                UploadCancelResult result = new UploadCancelResult();
                result.setNumber(custOrder.getNumber());
                result.setUserCode(custOrder.getUserCode());
                result.setQty(custOrder.getTotal());
                result.setStatus(1);
                list.add(result);
            }
            json.put("data", list);
            String response = new HttpHandler.Builder()
                    .setUri(URI)
                    .setPath(UPLOAD_CANCEL_RESULT)
                    .setJson(JSON.toJSONString(json))
                    .build()
                    .doPost();
            if (!Cools.isEmpty(response)) {
//                log.info(response);
                Date now = new Date();
                Result result = JSON.parseObject(response, Result.class);
                if (result.getCode() != 1) {
                    return;
                }
                for (UploadCancelResult result1 : list) {
                    // 转历史档
                    int save = custOrderMapper.saveLog(result1.getNumber(), result1.getUserCode());
                    if (save > 0) {
                        if (custOrderMapper.delete(new EntityWrapper<CustOrder>().eq("number", result1.getNumber()).eq("user_code", result1.getUserCode())) == 0) {
                            throw new CoolException("删除销售订单失败");
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e.getMessage());
        }
    }
}
src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java
New file
@@ -0,0 +1,19 @@
package zy.cloud.wms.common.service.erp.entity;
import lombok.Data;
/**
 * Created by vincent on 2021/4/5
 */
@Data
public class UploadCancelResult {
    private String number;
    private String userCode;
    private Double qty;
    private Integer Status;
}
src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
@@ -14,9 +14,15 @@
    @Insert("insert into man_cust_order_log select * from man_cust_order where number=#{number}")
    int saveLog(String number);
    @Insert("insert into man_cust_order_log select * from man_cust_order where number=#{number} and user_code = #{userCode}")
    int saveLog(@Param("number") String number, @Param("userCode") String userCode);
    @Update("delete from man_cust_order where number=#{number}")
    int delete(@Param("number") String number);
    @Update("delete from man_cust_order where number=#{number} and user_code = #{userCode}")
    int delete(@Param("number") String number, @Param("userCode") String userCode);
    @Update("update man_cust_order_log set qty = #{qty} where number=#{number} and user_code=#{userCode}")
    int updateQty(@Param("number") String number, @Param("userCode") String userCode, @Param("qty") Double qty);
src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -13,6 +13,11 @@
    LocDetl getLocDetl(Long nodeId, String matnr);
    /**
     * 查看当前物料在库存中的库存明细(推荐货位在前)
     * @param matnr
     * @return
     */
    List<LocDetl> findOfSort(String matnr);
    /**
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -254,9 +254,59 @@
        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>()
                .eq("doc_num", param.getNumber())
                .in("wrk_sts", 1, 2));
        // 修改库存数量
        for (Pakout pakout : pakouts) {
            LocDetl locDetl = locDetlService.getLocDetl(pakout.getNodeId(), pakout.getMatnr());
            // 缺货 or 立库
            if (locDetl == null) {
                // 缺货
                if (pakout.getLocNo().equals("缺货")) {
                    Double count = Optional.ofNullable(locDetlService.selectCountByMatnr(pakout.getMatnr())).orElse(0.0D);
                    if (count < pakout.getAnfme()) {
                        throw new CoolException(pakout.getMaktx()+"缺货");
                    }
                    Date now = new Date();
                    // 查找推荐货位是否库存足够
                    List<LocDetl> locDetls = locDetlService.findOfSort(pakout.getMatnr());
                    double issued = Optional.ofNullable(pakout.getAnfme()).orElse(0.0D) ;
                    for (LocDetl locDetl1 : locDetls) {
                        if (issued > 0) {
                            // 保存出库通知单
                            Pakout newPakout = new Pakout();
                            newPakout.setWrkSts(3L);
                            newPakout.setAnfme(issued>=locDetl1.getAnfme()?locDetl1.getAnfme():issued);
                            newPakout.setZpallet(locDetl1.getZpallet());
                            newPakout.setLocNo(locDetl1.getLocNo());
                            newPakout.setNodeId(locDetl1.getNodeId());
                            newPakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId()));
                            VersionUtils.setPakout(newPakout, locDetl1);
                            newPakout.setDocId(pakout.getDocId()); // 单据类型
                            newPakout.setDocNum(pakout.getDocNum());    // 单据编号
                            newPakout.setCreateTime(now);
                            newPakout.setUpdateTime(now);
                            newPakout.setStatus(1);
                            if (!pakoutService.insert(newPakout)) {
                                throw new CoolException("保存出库通知单失败");
                            }
                            if (issued>=locDetl1.getAnfme()) {
                                // 删除库存明细
                                if (!locDetlService.removeStock(locDetl1.getNodeId(), newPakout.getMatnr())) {
                                    throw new CoolException("删除库存明细失败");
                                }
                            } else {
                                // 修改库存明细数量
                                if (!locDetlService.reduceStock(locDetl1.getNodeId(), newPakout.getMatnr(), issued)) {
                                    throw new CoolException("修改库存明细数量失败");
                                }
                            }
                            // 剩余待出数量递减
                            issued = issued - locDetl1.getAnfme();
                        }
                    }
                }
                continue;
            }
            // 修改库存数量
            if (pakout.getAnfme()>=locDetl.getAnfme()) {
                // 删除库存明细
                if (!locDetlService.removeStock(locDetl.getNodeId(), pakout.getMatnr())) {
@@ -269,6 +319,7 @@
                }
            }
        }
        // 修改出库单状态
        if (!pakoutService.stockOutComplete(param.getWrkNo(), param.getNumber(), userId)) {
            return R.error("保存数据失败");
src/main/webapp/views/custOrder/custOrder.html
@@ -92,6 +92,8 @@
          class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>平仓</span>
          {{# } else if(d.type === 2){ }}
          class="layui-badge layui-badge-green" ><span style="display: none">{{d.number}}</span>立库</span>
          {{# } else if(d.type === 0){ }}
          class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>缺货</span>
          {{# } }}
</script>
src/main/webapp/views/pda/matQuery.html
@@ -39,6 +39,13 @@
            text-overflow:ellipsis;
            vertical-align: middle;
        }
        .form-box textarea {
            width: 120px;
            margin-left: 10px;
            padding-left: 5px;
            height: 30px;
            border: 1px solid #777777;
        }
        #selectBtn {
            vertical-align: middle;
            padding: 3px 5px;
@@ -88,12 +95,9 @@
        <button id="selectBtn">选</button>
    </div>
    <div class="form-item">
        <span>商品名称</span>
        <input id="maktx" type="text" disabled="disabled">
    </div>
    <div class="form-item">
        <span>商品规格</span>
        <input id="specs" type="text" disabled="disabled">
        <span style="float: left;margin-left: 38px">商品名称</span>
        <textarea id="maktx" type="text" disabled="disabled" style="height: 60px;float: left;"></textarea>
        <div style="clear: both"></div>
    </div>
    <div class="form-item">
        <span>单位</span>
src/main/webapp/views/pda/stockCheck.html
@@ -114,7 +114,7 @@
            cellMinWidth: 50,
            cols: [[
                {fixed: 'left', align: 'center', field: 'count', title: '数量', event: 'modify', style:'font-weight: bold;', width:50},
                {field: 'matnr', align: 'center', title: '商品编号', event: 'modify'},
                // {field: 'matnr', align: 'center', title: '商品编号', event: 'modify'},
                {field: 'maktx', align: 'center', title: '商品名称', event: 'modify'}
            ]],
            done: function (res, curr, count) {